From 5e6549acc824b4acccc665f517a8f7b709769eed Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 27 Nov 2024 18:39:38 +0100 Subject: [PATCH 001/169] 2024.12: Initial beta release notes --- _config.yml | 6 +- .../_posts/2024-12-04-release-202412.markdown | 565 ++++++ source/changelogs/core-2024.12.markdown | 1621 +++++++++++++++++ source/images/blog/2024-12/llm-fallback.png | Bin 0 -> 42746 bytes source/images/blog/2024-12/quality-scale.jpeg | Bin 0 -> 7238 bytes source/images/blog/2024-12/scene-review.png | Bin 0 -> 221116 bytes source/images/blog/2024-12/social.jpg | Bin 0 -> 201339 bytes 7 files changed, 2189 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2024-12-04-release-202412.markdown create mode 100644 source/changelogs/core-2024.12.markdown create mode 100644 source/images/blog/2024-12/llm-fallback.png create mode 100644 source/images/blog/2024-12/quality-scale.jpeg create mode 100644 source/images/blog/2024-12/scene-review.png create mode 100644 source/images/blog/2024-12/social.jpg diff --git a/_config.yml b/_config.yml index d0a1062a21a..f86d3e59958 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2024 -current_minor_version: 11 -current_patch_version: 3 -date_released: 2024-11-22 +current_minor_version: 12 +current_patch_version: 0 +date_released: 2024-12-04 # 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/_posts/2024-12-04-release-202412.markdown b/source/_posts/2024-12-04-release-202412.markdown new file mode 100644 index 00000000000..59f32b0c10f --- /dev/null +++ b/source/_posts/2024-12-04-release-202412.markdown @@ -0,0 +1,565 @@ +--- +layout: post +title: "2024.12: Beta release notes" +description: "Beta release notes for Home Assistant 2024.12" +date: 2024-11-26 00:00:00 +date_formatted: "December 4, 2024" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2024-12/social.png +--- + + + +{% note %} + +**Welcome to the beta release notes for Home Assistant 2024.12** 🎉 + +
+ +Please note that these release notes are a work in progress. 👷‍♀️ We will be +completing them over the next couple of days. Not all features might be final +yet, and some features _**may not** make it into the final release_. + +
+ +**Want to help test the beta?** Awesome! ❤️ We have documented how you +[can join our beta channel and install the beta here](/common-tasks/os/#running-a-beta-version). + +
+ +While running the beta, we highly recommend joining our _#beta_ channel on +the [Home Assistant Discord chat](/join-chat)! 💬 Most developers and beta +testers are in this channel during the beta period to share experiences, ideas, +and iterate over new features, fine-tuning them before the final release. +It's a really fun place to hang out. 😎 + +
+ +**Reporting issues**: As this is a beta test, you might encounter unexpected +behavior or issues. 🐞 We use the GitHub issue tracker to track beta issues. +You can find our issue trackers and the reported issues during beta here: + +
+ +- [Report(ed) beta **dashboards/UI/frontend** issues](https://github.com/home-assistant/frontend/milestone/126) +- [Report(ed) beta **integrations/automations/backend/core** issues](https://github.com/home-assistant/core/milestone/706) +- [Report(ed) beta **documentation** issues](https://github.com/home-assistant/home-assistant.io/milestone/133) + +🙏 When reporting issues, **make sure to mention the exact beta version you are +running** in the issue description. This will help us identify and track the +issue correctly. Read more about [reporting issues here](/help/reporting_issues/). + +
+ +Issues introduced in the beta are processed with priority. 🔝 + +{% endnote %} + +{% tip %} + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=9Y9YY_YHNBY) +4 December 2024, at 20:00 GMT / 12:00 PT / 21:00 CET! + +{% endtip %} + +Home Assistant 2024.12! 🎄 + +Enjoy the (beta) release! + +../Frenck + + + +- [Improved scene editor experience](#improved-scene-editor-experience) +- [Voice](#voice) + - [Let your voice assistant fall back to a LLM-based agent](#let-your-voice-assistant-fall-back-to-a-llm-based-agent) + - [A faster voice experience](#a-faster-voice-experience) + - [Revised Integration Quality Scale](#revised-integration-quality-scale) +- [Integrations](#integrations) + - [New integrations](#new-integrations) + - [Noteworthy improvements to existing integrations](#noteworthy-improvements-to-existing-integrations) +- [Other noteworthy changes](#other-noteworthy-changes) +- [Translations for units of measurement](#translations-for-units-of-measurement) +- [We've upgraded to Python 3.13](#weve-upgraded-to-python-313) +- [Need help? Join the community!](#need-help-join-the-community) +- [Backward-incompatible changes](#backward-incompatible-changes) +- [All changes](#all-changes) + +## Improved scene editor experience + +Scenes are a great way to set the mood in your home. They allow you to capture +the state of your devices at a specific moment and restore them later with, +for example, a button on your dashboard, using an automation, or even +using a voice command. + +One of the common frustrations with editing scenes in Home Assistant, is that +would always immediately activate and apply the scene if you opened the scene +editor. Not a great experience if you are doing some midnight tinkering and +accidentally activate a scene that turns on all the lights in the house waking +up everyone. 😅 + +[@karwosts] to the rescue! 🦸‍♂️ As of this release, the scene editor has two +modes. A **review mode** and an **edit mode**. + +![Scene editor review mode](/images/blog/2024-12/scene-review.png) + +The review mode is the default mode, and it will show you the scene as it is +currently set up, but it will not apply it. You can then switch to the edit +mode the scene is activated allow you to adjust the actual scenery and snapshot +it again once you are happy with the changes. + +[@karwosts]: https://github.com/karwosts + +## Voice + +_**TODO**: Add introduction paragrah... Because Santa 🎅 might bring some +hardware this Christmas maybe? Dunno, need to check with the Elves on +their progress._ + +### Let your voice assistant fall back to a LLM-based agent + +[Exactly 6 month ago] we bridged the gap between our intent world and the +wonderful (and scary) world of LLMs. We allowed you to let a LLM agent control +your home instead of relying on our built-in intent. + +This choice was an interesting first step, as LLM are generally much smarter +and knowledgeable about the world than our built-in intents. + +However, they are often slow and/or expensive. And let's face it, even if the +demos are cool, 90% of the commands we say in our homes are simple +_"Turn this on"_, _"Turn that off"_. + +Today, we're finally allowing users to **mix** these worlds. Starting from this +release, you can set-up a voice assistant in a way that will target our fast, +community driven, built-in intents first, and only fallback to a LLM-based +agent if no matches were found. + +![Allow local processing](/images/blog/2024-12/llm-fallback.png) + +This allow you to mix the pros of both worlds with almost non of the cons. + +Specific known command will be processed locally and extremely fast, +and the power of a LLM will only be used for more complex queries +that we do not understand. + +_**TODO**: video demonstrating this._ + +[Exactly 6 month ago]: https://www.home-assistant.io/blog/2024/06/05/release-20246/ + +### A faster voice experience + +HASSIL, our intent parser, was built from the ground up to match a sentence to +its underlying intention extremely fast and on cheap hardware. Releases after +releases, we added more use-cases and more sentences into Home Assistant, +and our sentence matching logic became slower and slower. + +In some of the languages, a wrong sentence could take more than 15 seconds to +be processed! + +This release adds a lot of love to HASSIL, we completely reengineered the way +we are matching sentences, and the results speak for themselves. + +_**TODO**: video demonstrating this._ + +_Note: Mike was talking about going from 15s to like 0.1 seconds in some cases. +We will try to showcase that in this vid in some way._ + +### Revised Integration Quality Scale + +The Integration Quality Scale is a way we try to classify the "quality" of an +integration. It is a way to give users an idea of what to expect from an +integration. You might have noticed our Integration Quality Scale indicator +listed on each integration documentation page. + +The scale was originally introduced in 2018?, and back then, was more aimed +at the technical side and code of an integration. Over the years, it didn't +really evolve with the rest of Home Assistant and the community. + +The last few months, we have worked with the community to revise and improve +the Integration Quality Scale. Involving not just our community developers, +but also documentation writers, user experience designers, and everyone else +in the community who wanted to join in. + +As a result, the new Integration Quality Scale is not just focussed on the +code, but even more on the overall user-experience it brings. It is now a +more holistic view on the integration, and we hope it will help everyone +to make better decisions on what to use in their homes. + +![The integration quality scale is also shown in the Home Assistant UI now](/images/blog/2024-12/quality-scale.jpeg) + +We now have a total of 4 scaled tiers: + +- **🥉 Bronze**: The new minimum set of requirements we set for integrations. +- **🥈 Silver**: Ensuring reliability and robustness of integrations. +- **🥇 Gold**: Ensuring a gold standard user-experience including documentation. +- **🏆 Platinum**: The epitome of quality, surpreme code quality, and an optimal performance and efficiency. + +We also have four additional (non-scaled) special tiers: **❓ No score**, +**🏠 Internal**, **💾 Legacy**, and **📦 Custom**. + +You can read all about these tiers, what they have been designed for, and a +summary of their characteristics in our dedicated +[Integration Quality Scale page](/docs/quality_scale/). + +With the new scale in place, we will be reevaluating all existing integrations +and updating their quality scale accordingly. This will be an ongoing process +and will take some time to complete. + +We hope this new scale will also help our community developers to understand +what is expected from them, and provide a clear path on how to improve their +integrations. We therefore have now [extensively documented every single rule +and requirement for each tier in our developer documentation](https://developers.home-assistant.io/docs/core/integration-quality-scale/#integration-quality-scale-rules). + +## Integrations + +Thanks to our community for keeping pace with the new {% term integrations %} +and improvements to existing ones! You’re all awesome 🥰 + +### New integrations + +We welcome the following new integrations in this release: + +- **[Acaia]**, added by [@zweckj] + Adds support for [Acaia coffee scales] to Home Assistant. +- **[Music Assistant]**, added by [@jozefKruszynski] + The integration for [Music Assistant](https://music-assistant.io/) is making + its way into Home Assistant! 🎉 +- **[NASweb]**, added by [@nasWebio] + Brings in support for the NASweb automation system to Home Assistant. +- **[Nord Pool]**, added by [@gjohansson-ST] + Pulls in latest energy prices from the Nord Pool energy market as sensors. +- **[Sky Remote]**, added by [@dunnmj] + Control your [Sky] box using automations on from your Home Assistant + dashboards. + +[@dunnmj]: https://github.com/dunnmj +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@jozefKruszynski]: https://github.com/jozefKruszynski +[@nasWebio]: https://github.com/nasWebio +[@zweckj]: https://github.com/zweckj +[Acaia coffee scales]: https://acaia.co/ +[Acaia]: /integrations/acaia +[Music Assistant]: /integrations/music_assistant +[NASweb]: /integrations/nasweb +[Nord Pool]: /integrations/nordpool +[Sky Remote]: /integrations/sky_remote +[Sky]: https://www.sky.com/ + +### Noteworthy improvements to existing integrations + +It is not just new {% term integrations %} that have been added; existing +integrations are also being constantly improved. Here are some of the noteworthy +changes to existing integrations: + +- The [Lorem ipsum] integration now supports slipsum! Thanks [@frenck]! + +[@frenck]: https://github.com/frenck +[Lorem ipsum]: /integrations/lorem_ipsum + +- Add boost switch to Smarty ([@marcodutto] - [#129466]) ([smarty docs]) (new-platform) +- Add smarty reset filters timer button ([@marcodutto] - [#129637]) ([smarty docs]) (new-platform) + +- Add Reolink PTZ tilt position sensor ([@starkillerOG] - [#129837]) ([reolink docs]) +- Add Reolink chime vehicle tone ([@starkillerOG] - [#129835]) ([reolink docs]) +- Add Reolink bitrate and framerate select entities ([@starkillerOG] - [#131571]) ([reolink docs]) + + +- Add binary sensor platform to Habitica integration ([@tr4nt0r] - [#129613]) ([habitica docs]) (new-platform) +- Add actions for quest handling to Habitica ([@tr4nt0r] - [#129650]) ([habitica docs]) +- Add actions for scoring habits and rewards in Habitica ([@tr4nt0r] - [#129605]) ([habitica docs]) +- Add sensors for attribute points (str, int, per, con) to Habitica ([@tr4nt0r] - [#130186]) ([habitica docs]) +- Add calendars for to-do and daily reminders to Habitica integration ([@tr4nt0r] - [#130789]) ([habitica docs]) + +- Add binary sensor platform to eq3btsmart ([@EuleMitKeule] - [#130352]) ([eq3btsmart docs]) (new-platform) +- Add switch platform to eq3btsmart ([@EuleMitKeule] - [#130363]) ([eq3btsmart docs]) (new-platform) + +- Add signing support to Tesla Fleet ([@Bre77] - [#128407]) ([tesla_fleet docs]) + +- Add water price sensor to suez water ([@jb101010-2] - [#130141]) ([suez_water docs]) + +- Add motion sensor setting to tplink ([@rytilahti] - [#129393]) ([tplink docs]) +- Allow reconnecting wireless omada clients ([@reey] - [#128491]) ([tplink_omada docs]) + +- Add Switcher Lights support ([@YogevBokobza] - [#129494]) ([switcher_kis docs]) + +- Bang & Olufsen add beolink grouping ([@mj23000] - [#113438]) ([bang_olufsen docs]) (dependency) +- Add binary sensor platform to the Lektrico integration ([@Lektrico] - [#129872]) ([lektrico docs]) (new-platform) +- Add support for binary sensor states in Google Assistant ([@joostlek] - [#127652]) ([google_assistant docs]) +- Add alarm count sensor for Kostal Inverters ([@N3rdix] - [#130324]) ([kostal_plenticore docs]) +- Add starline run sensor ([@Anonym-tsk] - [#130444]) ([starline docs]) +- Switcher add current current temperature sensor ([@YogevBokobza] - [#130653]) ([switcher_kis docs]) +- Add new sensors to Mill ([@Danielhiversen] - [#130896]) ([mill docs]) +- Add number platform to sabnzbd and deprecate custom action ([@jpbede] - [#131029]) ([sabnzbd docs]) (new-platform) (deprecation) +- Add StarLine flex logic and panic buttons ([@Anonym-tsk] - [#130819]) ([starline docs]) +- Add waterheater platform bsblan ([@liudger] - [#129053]) ([bsblan docs]) (new-platform) +- Add new sensors to Stookwijzer ([@frenck] - [#131587]) ([stookwijzer docs]) +- Add fingerprint and nfc event support to unifiprotect ([@RaHehl] - [#130840]) ([unifiprotect docs]) + + +{% details "Potential changes to process" icon="mdi:scale-balance" %} + +Processed up to _#131540. + +{% enddetails %} + +## Other noteworthy changes + +There are many more improvements in this release; here are some of the other +noteworthy changes this release: + +- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. + Thanks [@frenck]! + +[@frenck]: https://github.com/frenck + +- Add horizontal swing to climate (#22043) @gjohansson-ST +- Integration Quality Scale indicator (#23015) @wendevlin +- Use DurationFormat for calendar trigger (#23020) @silamon +- Use explicit duration format for state formatting (#23017) @piitaya +- Support time entities in automation time conditions/triggers selectors (#21069) @markbergsma +- Add tone,volume & duration selector to more-info dialog for sirens (#22786) @MindFreeze +- Add download snapshot button to camera more info dialog (#22704) @jpbede +- Show YAML parsing errors in automation editor (#22753) @karwosts +- Area units and conversion between metric and US ([@mikey0000] - [#123563]) +- Add µV as UnitOfElectricPotential ([@tr4nt0r] - [#130838]) ([sensor docs]) +- Add support for MW/GW/TW and GWh/TWh ([@jschlyter] - [#130089]) +- Allow mL/s as UnitOfVolumeFlowRate ([@zweckj] - [#130771]) ([sensor docs]) + +## Translations for units of measurement + +Over the last few years, we have been working hard in making every little +bit of Home Assistant accessible for everyone by providing translations +for every part of the system. 🌐 + +However, we have some edge cases still, where we are not able to provide +translations for everything. One of those edge cases is the units of +measurement. 📏 + +Although for most cases, units do not need translation (like `°C` or `kWh`), +there are many sensors in ones home that might use units that are specific +and not standarized. For example, a sensor that measures the amount of +"people" in a home, or one that tells you how many "movies" are in your +collection. + +So, if you now have a sensor that has a custom unit of measurement, like +the amount of "movies" in your collection, integrations can now provide +translations for those units. 🎉 + +- Add unit translations for NextDNS integration ([@bieniu] - [#131281]) ([nextdns docs]) +- Add unit of measurement to translations for Mastodon ([@andrew-codechimp] - [#131343]) ([mastodon docs]) +- Add unit of measurement to translations for Mealie ([@andrew-codechimp] - [#131345]) ([mealie docs]) + +## We've upgraded to Python 3.13 + +This release comes packaged with Python 3.13! 🐍 + +Wondering what that means? Python is the programming language that powers Home +Assistant behind the scenes. + +Why does it matter? Every new Python release brings improvements that we can +tap into—better performance, fewer bugs, and a smoother developer experience +for our contributors. Plus, Python 3.13 offers a speed boost to Home Assistant +overall—what’s not to love? 🚀 + +Running Home Assistant OS or using the Home Assistant Container? No sweat—we’ve +got you covered. The upgrade to Python 3.13 is handled automatically. Just +update Home Assistant as usual, and you’re good to go. + +Easy, right? 😎 + +## 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 + +We do our best to avoid making changes to existing functionality that might +unexpectedly impact your Home Assistant installation. Unfortunately, sometimes, +it is inevitable. + +We always make sure to document these changes to make the transition as easy as +possible for you. This release has the following backward-incompatible changes: + +{% details "Ecovacs" %} + +Ecovacs devices not recognized by the library will no longer use the fallback +vacuum. Instead, the device will not be added to Home Assistant, +and a warning log will created. + +([@edenhaus] - [#131525]) ([documentation](/integrations/ecovacs)) + +[@edenhaus]: https://github.com/edenhaus +[#131525]: https://github.com/home-assistant/core/pull/131525 + +{% enddetails %} + +{% details "Glances" %} + +Glances v2 api has been deprecated and has now been removed. Upgrade to v3 or +higher to continue using the integration. + +([@gjohansson-ST] - [#131427]) ([documentation](/integrations/glances)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#131427]: https://github.com/home-assistant/core/pull/131427 + +{% enddetails %} + +{% details "History Stats" %} + +After this change, `history_stats` in `time` or `ratio` mode will only count +time that is definitively known based on recorder data. + +Prior to this change, if the start of the time window was earlier than the +oldest datapoint in the recorder, `history_stats` would count time using the +assumption that an entity was in the first state it found since the beginning +of time. This could lead to wild overcalculations when a switch was turned on +after a long period of inactivity, and `history_stats` would assume it has +_always_ been on, and calculate a huge value based on that. + +([@karwosts] - [#126271]) ([documentation](/integrations/history_stats)) + +[@karwosts]: https://github.com/karwosts +[#126271]: https://github.com/home-assistant/core/pull/126271 + +{% enddetails %} + +{% details "Jewish Calendar" %} + +To support Rosh Chodesh this creates a breaking change as the holiday sensor +will return "Chanukah, Rosh Chodesh" when both of those days fall on the same +date. If you have an automation expecting the "Chanukah" value, you must update +it. + +([@tsvi] - [#130456]) ([documentation](/integrations/jewish_calendar)) + +[@tsvi]: https://github.com/tsvi +[#130456]: https://github.com/home-assistant/core/pull/130456 + +{% enddetails %} + +{% details "QNAP" %} + +The following QNAP sensors no longer will have extra state attributes: + +- The `memory_free`, `memory_size`, `memory_used`, and `memory_percent_used` sensors. +- The `network_link_status`, `network_max_speed`, `network_err`, `network_tx` and `network_rx` sensors. +- The `status`, `system_temp` and `uptime` sensors. +- The `volume_size_free`, `volume_size_total`, `volume_size_used` and `volume_percentage_used` sensors. + +These extra state attributes were deprcated in Home Assistant 2024.6 and now +have been removed. If you are using this in your automation or script, use +the separate available sensors instead. + +([@jbouwh] - [#130310]) ([documentation](/integrations/qnap)) + +[@jbouwh]: https://github.com/jbouwh +[#130310]: https://github.com/home-assistant/core/pull/130310 + +{% enddetails %} + +{% details "Statistics" %} + +Previously the attributes was only provided when they had a non `None` value. +This has now changed so the attributes are always provided even with `None` +values. If automations or scripts was depending on these attributes was +present or not needs to be modified accordingly. + +([@gjohansson-ST] - [#129353]) ([documentation](/integrations/statistics)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#129353]: https://github.com/home-assistant/core/pull/129353 + +{% enddetails %} + +{% details "Stookwijzer" %} + +The Stookwijzer sensor has migrated to the new API provided by Atlas +Leefomgeving. As a result, the reported states are slightly different. + +Old versus new: + +- Blue (`blauw`) -> Yellow (`code_yellow`) +- Orange (`oranje`) -> Orange (`code_orange`) +- Red (`rood`) -> Red (`code_red`) + +If you use the Stookwijzer sensor in your automations or scripts, you might +need to adjust those for this change. + +([@frenck] - [#131567]) ([documentation](/integrations/stookwijzer)) + +[@frenck]: https://github.com/frenck +[#131567]: https://github.com/home-assistant/core/pull/131567 + +{% enddetails %} + +{% details "Templates" %} + +The `this` template variable which is available in some templatable helpers was +previously based on the new state instead of the current state. + +The change affects the following integrations, if templates the use the `this` +variable. The user might have to update their templates to reflect the above +change using the `value` variable instead, which holds the new value. + +- `command_line` +- `rest` +- `scrape` +- `snmp` +- `sql` + +([@gjohansson-ST] - [#130135]) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#130135]: https://github.com/home-assistant/core/pull/130135 + +{% enddetails %} + +{% details "Z-Wave" %} + +With this release, you will need to update your zwave-js-server instance. You +must use zwave-js-server 1.39.0 or greater (schema 39). + +- If you use the Z-Wave JS add-on, you need at least version `0.9.0`. +- If you use the Z-Wave JS UI add-on, you need at least version [`3.17.0`](https://github.com/hassio-addons/addon-zwave-js-ui/releases/tag/v3.17.0). +- If you use the Z-Wave JS UI Docker container, you need at least version [`9.26.0`](https://github.com/zwave-js/zwave-js-ui/releases/tag/v9.26.0). +- If you run your own Docker container or some other installation method, you will need to update your zwave-js-server instance to at least `1.39.0`. + +([@MindFreeze] - [#129482]) ([documentation](/integrations/zwave_js)) + +[@MindFreeze]: https://github.com/MindFreeze +[#129482]: https://github.com/home-assistant/core/pull/129482 + +{% enddetails %} + +If you are a custom integration developer and want to learn about 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: + +- [Integration quality scale](https://developers.home-assistant.io/blog/2024/11/20/integration-quality-scale) +- [New options flow properties](https://developers.home-assistant.io/blog/2024/11/12/options-flow/) +- [Translating units of measurement](https://developers.home-assistant.io/blog/2024/11/21/unit-of-measurement-translations) + +[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.12](/changelogs/core-2024.12) diff --git a/source/changelogs/core-2024.12.markdown b/source/changelogs/core-2024.12.markdown new file mode 100644 index 00000000000..4651543b8de --- /dev/null +++ b/source/changelogs/core-2024.12.markdown @@ -0,0 +1,1621 @@ +--- +title: Full changelog for Home Assistant Core 2024.12 +description: Detailed changelog for the Home Assistant Core 2024.12 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2024.12 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2024/12/04/release-202412/). + +- Set config_entry explicitly to None in relevant components ([@epenet] - [#129427]) +- Bump Music Assistant Client library to 1.0.5 ([@marcelveldt] - [#129518]) +- Bump version to 2024.12 ([@bramkragten] - [#129525]) +- Add last alert timestamp for tplink waterleak ([@rytilahti] - [#128644]) +- Fix capitalization in Philips Hue strings ([@TheJulianJES] - [#129552]) +- Fix flakey test in Husqvarna Automower ([@Thomas55555] - [#129571]) +- Use class attributes in Times of Day ([@gjohansson-ST] - [#129543]) +- Use shorthand attribute for native_value in mold_indicator ([@gjohansson-ST] - [#129538]) +- Remove unnecessary husqvarna_automower_ble test fixture ([@cdce8p] - [#129577]) +- Add zwave_js node_capabilities and invoke_cc_api websocket commands ([@edenhaus] - [#125327]) +- Bump python-bsblan to 1.0.0 ([@liudger] - [#129617]) +- Ensure entry_id is set on reauth/reconfigure flows ([@epenet] - [#129319]) +- Add boost switch to Smarty ([@marcodutto] - [#129466]) +- Add OptionsFlow helpers to get the current config entry ([@epenet] - [#129562]) +- Remove unnecessary asyncio EventLoopPolicy init_watcher backport ([@cdce8p] - [#129628]) +- Add handler to restore a backup file with the backup integration ([@ludeeus] - [#128365]) +- Bump ruff to 0.7.2 ([@autinerd] - [#129669]) +- Cleanup unnecessary __init__ method in OptionsFlow ([@epenet] - [#129651]) +- Refactor av.open calls to support type annotations ([@cdce8p] - [#129688]) +- Replace AVError with FFmpegError ([@cdce8p] - [#129689]) +- Update mypy-dev to 1.14.0a2 ([@cdce8p] - [#129625]) +- Minor stream typing improvements ([@cdce8p] - [#129691]) +- Additional stream typing improvements ([@cdce8p] - [#129695]) +- Disable cleanup_closed on python 3.12.7+ and 3.13.1+ ([@bdraco] - [#129645]) +- Add DHCP discovery to lamarzocco ([@zweckj] - [#129675]) +- Correct length of the serials in lamarzocco tests ([@zweckj] - [#129725]) +- Fix advantage_air CI failure ([@epenet] - [#129735]) +- Small cleanup mold_indicator ([@gjohansson-ST] - [#129736]) +- Add OptionsFlow helper for a mutable copy of the config entry options ([@epenet] - [#129718]) +- Improve code quality in yale_smart_alarm options flow ([@gjohansson-ST] - [#129531]) +- Add Measurement StateClass to HomematicIP Cloud Wind and Rain Sensor ([@hahn-th] - [#129724]) +- Cleanup unnecessary OptionsFlowWithConfigEntry (part 1) ([@epenet] - [#129752]) +- Fix flaky tests in advantage_air ([@epenet] - [#129758]) +- Show NUT device serial number if provided in Device Info ([@tdfountain] - [#124168]) +- Bump plugwise to v1.5.0 ([@bouwew] - [#129668]) +- Use new helper properties in rfxtrx options flow ([@epenet] - [#129784]) +- Use new helper properties in yalexs_ble options flow ([@epenet] - [#129790]) +- Use new helper properties in watttime options flow ([@epenet] - [#129789]) +- Use new helper properties in verisure options flow ([@epenet] - [#129788]) +- Use new helper properties in tomorrowio options flow ([@epenet] - [#129787]) +- Use new helper properties in steam_online options flow ([@epenet] - [#129785]) +- Use new helper properties in recollect_waste options flow ([@epenet] - [#129783]) +- Use new helper properties in plaato options flow ([@epenet] - [#129782]) +- Use new helper properties in motioneye options flow ([@epenet] - [#129780]) +- Use new helper properties in flux_led options flow ([@epenet] - [#129776]) +- Use new helper properties in dsmr options flow ([@epenet] - [#129775]) +- Use new helper properties in crownstone options flow ([@epenet] - [#129774]) +- Small code quality improvement/cleanup in random ([@gjohansson-ST] - [#129542]) +- Add coordinator to suez_water ([@jb101010-2] - [#129242]) +- Use JSON as format for .HA_RESTORE ([@ludeeus] - [#129792]) +- Remove deprecated property setters in option flows ([@epenet] - [#129773]) +- Switch back to av 13.1.0 ([@cdce8p] - [#129699]) +- Bump python-bsblan to 1.2.1 ([@liudger] - [#129635]) +- Small cleanups to the websocket command phase ([@bdraco] - [#129712]) +- Use new helper properties in yeelight options flow ([@epenet] - [#129791]) +- Improve exceptions in habitica cast skill action ([@tr4nt0r] - [#129603]) +- Bump monzopy to 1.4.2 ([@JakeMartin-ICL] - [#129726]) +- Update codeowners of Fritz integration ([@mammuth] - [#129595]) +- Stop recording of non-changing attributes in threshold ([@gjohansson-ST] - [#129541]) +- Fix translations in honeywell ([@gjohansson-ST] - [#129823]) +- Fix missing translation in jewish_calendar ([@gjohansson-ST] - [#129822]) +- Suggest area for NUT based on device location ([@tdfountain] - [#129770]) +- Use translated errors in Russound RIO ([@noahhusby] - [#129820]) +- Update charset-normalizer to 3.4.0 ([@cdce8p] - [#129821]) +- Use new helper properties in konnected options flow ([@epenet] - [#129778]) +- Use new helper properties in hyperion options flow ([@epenet] - [#129777]) +- Cleanup deprecated OptionsFlowWithConfigEntry (part 3) ([@epenet] - [#129756]) +- Cleanup deprecated OptionsFlowWithConfigEntry (part 2) ([@epenet] - [#129754]) +- Reapply "Fix unused snapshots not triggering failure in CI" ([@epenet] - [#129311]) +- Use coordinator async_setup in vizio ([@gjohansson-ST] - [#129450]) +- Set config_entry explicitly in wled coordinator ([@epenet] - [#129425]) +- Set config_entry explicitly in caldav coordinator ([@epenet] - [#129424]) +- Set config_entry explicitly in todoist coordinator ([@epenet] - [#129421]) +- Pass the config entry explicitly in aemet coordinator ([@epenet] - [#128097]) +- Drop use of initialize_options in onkyo ([@epenet] - [#129869]) +- Drop use of initialize_options in androidtv ([@epenet] - [#129854]) +- Bump hass-nabucasa from 0.83.0 to 0.84.0 ([@ludeeus] - [#129873]) +- Remove dead code in translation checks ([@epenet] - [#129875]) +- Fix flaky tests in device_sun_light_trigger ([@epenet] - [#129871]) +- Drop use of initialize_options in androidtv_remote ([@epenet] - [#129855]) +- Add reconfigure flow to yale_smart_alarm ([@gjohansson-ST] - [#129536]) +- Add child lock for tplink thermostats ([@rytilahti] - [#129649]) +- Bump pynecil to 0.2.1 ([@tr4nt0r] - [#129843]) +- Add device model ID if provided by NUT ([@tdfountain] - [#124189]) +- Drop initialize_options helper from OptionsFlow ([@epenet] - [#129870]) +- Bump python-tado to 0.17.7 ([@karlbeecken] - [#129842]) +- Add Reolink PTZ tilt position sensor ([@starkillerOG] - [#129837]) +- Fix missing translation string in emoncms ([@alexandrecuer] - [#129859]) +- Use different VAD thresholds for before and during voice command ([@synesthesiam] - [#129848]) +- Add binary sensor platform to Habitica integration ([@tr4nt0r] - [#129613]) +- Remove usage of options property in OptionsFlow (part 1) ([@epenet] - [#129895]) +- Remove usage of options property in OptionsFlow (part 2) ([@epenet] - [#129897]) +- Add signing support to Tesla Fleet ([@Bre77] - [#128407]) +- Bump huawei-lte-api to 1.10.0 ([@scop] - [#129911]) +- Bump actions/attest-build-provenance from 1.4.3 to 1.4.4 (@dependabot - [#129924]) +- Use read-only options in lastfm options flow ([@epenet] - [#129928]) +- Consolidating async_add_entities into one call in Ecobee ([@nromyn] - [#129917]) +- Use new helper properties in netatmo options flow ([@epenet] - [#129781]) +- Use read-only options in emoncms options flow ([@epenet] - [#129926]) +- Add motion sensor setting to tplink ([@rytilahti] - [#129393]) +- Improve history coordinator in Teslemetry ([@Bre77] - [#128235]) +- Move Jewish Calendar to runtime data ([@tsvi] - [#129609]) +- Fix audit-licenses check for multiple Python versions [ci] ([@cdce8p] - [#129951]) +- Use read-only options in onkyo options flow ([@epenet] - [#129929]) +- Use read-only options in google cloud options flow ([@epenet] - [#129927]) +- Ensure that all files in a folder are in the same test bucket ([@epenet] - [#129946]) +- Bump aiohttp to 3.11.0b3 ([@bdraco] - [#129363]) +- Remove options property from OptionFlow ([@epenet] - [#129890]) +- Replace Supervisor resolution API calls with aiohasupervisor ([@mdegat01] - [#129599]) +- Update numpy to 2.1.2 and pandas to 2.2.3 ([@cdce8p] - [#129958]) +- Report update_percentage in shelly update entity ([@emontnemery] - [#129382]) +- Add temporary package constraint on flexparser and pint to fix CI ([@epenet] - [#130016]) +- Bump zwave-js-server-python to 0.59.0 ([@MindFreeze] - [#129482]) +- Update pytest warnings filter ([@cdce8p] - [#130027]) +- Add checks for translation placeholders ([@epenet] - [#129963]) +- Bump PySuez to 1.3.1 ([@jb101010-2] - [#129825]) +- Bump huum to 0.7.11 ([@frwickst] - [#130047]) +- Improve tests for frame helper ([@epenet] - [#130046]) +- Fix esphome mqtt discovery by handling case where payload is a empty string ([@Links2004] - [#129969]) +- Add new frame helper to better distinguish custom and core integrations ([@epenet] - [#130025]) +- Remove temporary pint constraint ([@cdce8p] - [#130070]) +- Add Switcher Lights support ([@YogevBokobza] - [#129494]) +- Align Switcher cover platform with changes from light platform ([@YogevBokobza] - [#130094]) +- Avoid collision when replacing existing config entry with same unique id ([@emontnemery] - [#130062]) +- Merge both stun server into one as it's the same server only on a different port ([@edenhaus] - [#130019]) +- Bump aiohttp to 3.11.0b4 ([@bdraco] - [#130097]) +- Add NASweb integration ([@nasWebio] - [#98118]) +- Bang & Olufsen add beolink grouping ([@mj23000] - [#113438]) +- Migrate from entry unique id to emoncms unique id ([@alexandrecuer] - [#129133]) +- Add checks for flow title/description placeholders ([@epenet] - [#129140]) +- Bring emoncms coverage to 100% ([@epenet] - [#130092]) +- Trigger full CI run on homeassistant_hardware integration changes ([@epenet] - [#130129]) +- Suez water: simplify config flow ([@jb101010-2] - [#130083]) +- Bump uv to 0.5.0 ([@edenhaus] - [#130127]) +- Enable overriding connection port for tplink devices ([@sdb9696] - [#129619]) +- Remove Z-Wave incorrect lock service descriptions ([@MartinHjelmare] - [#130034]) +- Drop OptionsFlowWithConfigEntry usage in homeassistant_hardware ([@epenet] - [#130078]) +- Add Nord Pool integration ([@gjohansson-ST] - [#129983]) +- Get/Set custom config parameter for zwave_js node ([@MindFreeze] - [#129332]) +- Add binary sensor platform to the Lektrico integration ([@Lektrico] - [#129872]) +- Only apply OptionsFlowWithConfigEntry deprecation to core ([@epenet] - [#130054]) +- Split test doesn't need to be executed per Python version ([@edenhaus] - [#130147]) +- Fix utility_meter on DST changes ([@dgomes] - [#129862]) +- Add reconfigure flow to Nord Pool ([@gjohansson-ST] - [#130151]) +- Add option to specify additional markers for wheel build requirements ([@cdce8p] - [#129949]) +- Add voc and formaldehyde to Tuya CO2 Detector ([@murfy76] - [#130119]) +- Use TemplateStateFromEntityId in Template trigger entity ([@gjohansson-ST] - [#130136]) +- Add support for MW/GW/TW and GWh/TWh ([@jschlyter] - [#130089]) +- Fix failing UniFi Protect tests on some systems ([@TheJulianJES] - [#129516]) +- Bump orjson to 3.10.11 ([@bdraco] - [#130182]) +- Code quality improvements on utility_meter ([@dgomes] - [#129918]) +- Update numpy to 2.1.3 ([@cdce8p] - [#130191]) +- Bump tplink-omada-client to 1.4.3 ([@reey] - [#130184]) +- Rename tedee library ([@zweckj] - [#130203]) +- Move check thresholds valid to platform schema in threshold ([@gjohansson-ST] - [#129540]) +- Add water price sensor to suez water ([@jb101010-2] - [#130141]) +- Rename lamarzocco library ([@zweckj] - [#130204]) +- Fix missing unit of measurement for blink wifi strength ([@magicalyak] - [#128409]) +- Add blood glucose concentration device class ([@epenet] - [#129340]) +- Report update_percentage in ezviz update entity ([@emontnemery] - [#129377]) +- Update wheel builder to 2024.11.0 ([@cdce8p] - [#130209]) +- Add Reolink chime vehicle tone ([@starkillerOG] - [#129835]) +- Add tests for cast skill action in Habitica ([@tr4nt0r] - [#129596]) +- Install zlib-dev for pillow wheel build ([@cdce8p] - [#130211]) +- Fix cast skill test in Habitica ([@tr4nt0r] - [#130213]) +- Add smarty reset filters timer button ([@marcodutto] - [#129637]) +- Cleanup yaml import and legacy file notify service ([@jbouwh] - [#130219]) +- Add sensors for attribute points (str, int, per, con) to Habitica ([@tr4nt0r] - [#130186]) +- Change update after button press for lamarzocco ([@zweckj] - [#129616]) +- Add custom integration action sections support to hassfest ([@mj23000] - [#130148]) +- Add fan preset mode icons and strings to vesync ([@oltdaniel] - [#129584]) +- Simplify Bang & Olufsen source determination ([@mj23000] - [#130072]) +- Improve entity test coverage for Russound RIO ([@noahhusby] - [#129828]) +- Add missing translation string for NINA ([@DeerMaximum] - [#129826]) +- Add actions for quest handling to Habitica ([@tr4nt0r] - [#129650]) +- Update grpcio to 1.67.1 ([@cdce8p] - [#130240]) +- Fix typo in reminder date language string in Todoist integration ([@maxshcherbina] - [#130241]) +- Fix flaky modbus tests ([@cdce8p] - [#130252]) +- Fix path to tesla fleet key file in config folder ([@lotharbach] - [#130124]) +- Update nest tests to unload config entries to perform clean teardown ([@allenporter] - [#130266]) +- Bump aiohttp to 3.11.0b5 ([@bdraco] - [#130264]) +- Bump pynordpool to 0.2.2 ([@gjohansson-ST] - [#130257]) +- Support additional media player states for Russound RIO ([@noahhusby] - [#130261]) +- Update description for generic hygrostat description ([@maxshcherbina] - [#130244]) +- Add support for Python 3.13 ([@cdce8p] - [#129442]) +- Palazzetti DHCP Discovery ([@dotvav] - [#129731]) +- Bump psutil to 6.1.0 ([@gjohansson-ST] - [#130254]) +- Move manual trigger entity tests ([@gjohansson-ST] - [#130134]) +- Add actions for scoring habits and rewards in Habitica ([@tr4nt0r] - [#129605]) +- Remove incorrect mark fixture in nordpool ([@gjohansson-ST] - [#130278]) +- Ecobee aux cutover threshold ([@nromyn] - [#129474]) +- Bump aiohttp to 3.11.0rc0 ([@bdraco] - [#130284]) +- Remove geniushub yaml support after 6 months of deprecation ([@jbouwh] - [#130285]) +- Remove unused `file` CONFIG_SCHEMA ([@jbouwh] - [#130287]) +- Add links to deprecation issue message for Home Connect Binary door ([@Diegorro98] - [#129779]) +- Remove jewish_calendar yaml support after 6 months of deprecation ([@jbouwh] - [#130291]) +- Remove tibber legacy notify service after 6 months of deprecation ([@jbouwh] - [#130292]) +- Remove Jewish Calendar config flow upgrade ([@tsvi] - [#129612]) +- Deprecate api_call action in Habitica integration ([@tr4nt0r] - [#128119]) +- Bump eq3btsmart to 1.2.1 ([@EuleMitKeule] - [#130297]) +- Bump pypalazzetti to 0.1.11 ([@dotvav] - [#130293]) +- Update Sonarr config flow to standardize ports ([@Khabi] - [#127625]) +- Add diagnostics to LinkPlay ([@silamon] - [#126768]) +- Add support for binary sensor states in Google Assistant ([@joostlek] - [#127652]) +- Remove YAML import from lcl integration after 6 months deprecation ([@jbouwh] - [#130305]) +- Remove YAML warning for thethingsnetwork after warning for 6 months ([@jbouwh] - [#130307]) +- Remove extra state attributes from some QNAP sensors ([@jbouwh] - [#130310]) +- Bump github/codeql-action from 3.27.0 to 3.27.1 (@dependabot - [#130323]) +- Add alarm count sensor for Kostal Inverters ([@N3rdix] - [#130324]) +- Use runtime data for eq3btsmart ([@EuleMitKeule] - [#130334]) +- Prepare eq3btsmart base entity for additional platforms ([@EuleMitKeule] - [#130340]) +- Fix typo in BaseBackupManager.async_restore_backup ([@emontnemery] - [#130329]) +- Sort some code in cloud preferences ([@emontnemery] - [#130345]) +- Add binary sensor platform to eq3btsmart ([@EuleMitKeule] - [#130352]) +- Bump deebot-client to 8.4.1 ([@edenhaus] - [#130357]) +- Add Switchbot Hub 2, Switchbot Meter Pro and Switchbot Meter Pro (CO2) devices to Switchbot Cloud integration. ([@ErikElkins] - [#130295]) +- Fix copy-paste error in STATISTIC_UNIT_TO_UNIT_CONVERTER ([@emontnemery] - [#130375]) +- Update pydantic to 1.10.19 ([@cdce8p] - [#130373]) +- Bump lcn-frontend to 0.2.2 ([@alengwenus] - [#130383]) +- Code cleanup for LCN integration ([@alengwenus] - [#130385]) +- Use report_usage in integrations ([@epenet] - [#130366]) +- Update pillow to 11.0.0 ([@cdce8p] - [#130194]) +- Add go2rtc to devcontainer ([@edenhaus] - [#130380]) +- Bump Weheat wh-python to 2024.11.02 ([@barryvdh] - [#130337]) +- Remove deprecated YAML loaders ([@epenet] - [#130364]) +- Bump aiorussound to 4.1.0 ([@noahhusby] - [#130382]) +- Update tuya-device-sharing-sdk to version 0.2.1 ([@lanthaler] - [#130333]) +- Adjust logging for OptionsFlow deprecation ([@epenet] - [#130360]) +- Bump ruff to 0.7.3 ([@autinerd] - [#130390]) +- Improve exception handling in Nord Pool ([@gjohansson-ST] - [#130386]) +- Bump aiohttp to 3.11.0rc1 ([@bdraco] - [#130320]) +- Use report_usage in helpers ([@epenet] - [#130365]) +- Add switch platform to eq3btsmart ([@EuleMitKeule] - [#130363]) +- Add upload capability to the backup integration ([@ludeeus] - [#128546]) +- Simplify modern_forms config flow ([@epenet] - [#130441]) +- Add diagnostics to Nord Pool ([@gjohansson-ST] - [#130461]) +- Correct spelling of BloodGlucoseConcentrationConverter ([@mrspouse] - [#130449]) +- Bump aiohttp to 3.11.0rc2 ([@bdraco] - [#130484]) +- Bump zwave-js-server-python to 0.59.1 ([@cgarwood] - [#130468]) +- Bump github/codeql-action from 3.27.1 to 3.27.3 (@dependabot - [#130489]) +- Fix Music Assistant manifest ([@joostlek] - [#130515]) +- Avoid core manifest to have an issue tracker ([@joostlek] - [#130514]) +- Improve type hints in fritzbox config flow ([@epenet] - [#130509]) +- Improve type hints in fritz config flow ([@epenet] - [#130511]) +- Bump millheater to 0.12.2 ([@Danielhiversen] - [#130454]) +- Add Sky remote integration ([@dunnmj] - [#124507]) +- Make WS command backup/generate send events ([@emontnemery] - [#130524]) +- Update huum to 0.7.12 ([@cdce8p] - [#130527]) +- Update base image to Python 3.13 and deprecated 3.12 ([@cdce8p] - [#130425]) +- Bump aiohttp to 3.11.0 ([@bdraco] - [#130542]) +- Downgrade devcontainer to Python 3.12 again ([@silamon] - [#130562]) +- Upgrade to hassil 2.0 ([@synesthesiam] - [#130544]) +- Adjust minimum scapy version to 2.6.1 ([@epenet] - [#130565]) +- Force login prompt in Tesla Fleet ([@Bre77] - [#130576]) +- Fix when the Roborock map is being provisioned ([@Lash-L] - [#130574]) +- Add require_webrtc_support decorator ([@edenhaus] - [#130519]) +- Refactor camera WebRTC tests ([@edenhaus] - [#130581]) +- Update hassfest image to Python 3.13 ([@cdce8p] - [#130607]) +- Bump eq3btsmart to 1.4.1 ([@EuleMitKeule] - [#130426]) +- Add acaia integration ([@zweckj] - [#130059]) +- Move lcn non-config_entry related code to async_setup ([@alengwenus] - [#130603]) +- Removing myself from template codeowners ([@tetienne] - [#130617]) +- Add number platform to eq3btsmart ([@EuleMitKeule] - [#130429]) +- Refactor translation checks ([@epenet] - [#130585]) +- Add Python version to issue ID ([@edenhaus] - [#130611]) +- Use test helpers for acaia buttons ([@zweckj] - [#130626]) +- Add translation checks for repair flows ([@epenet] - [#130619]) +- Handle sentence triggers and local intents before pipeline agent ([@synesthesiam] - [#129058]) +- Bump aiohttp-fast-zlib to 0.2.0 ([@bdraco] - [#130628]) +- Fix incorrect patch in flume tests ([@epenet] - [#130631]) +- Make Switch as x platform options translatable ([@joostlek] - [#130443]) +- Fix translation missing errors in supervisor tests ([@mdegat01] - [#130640]) +- Bump aiohttp to 3.11.1 ([@bdraco] - [#130636]) +- Update mypy-dev to 1.14.0a3 ([@cdce8p] - [#130629]) +- Bump aiohttp 3.11.2 ([@bdraco] - [#130663]) +- Use single_config_entry in google_assistant_sdk ([@epenet] - [#130632]) +- Bump codecov/codecov-action from 4.6.0 to 5.0.0 (@dependabot - [#130671]) +- Fix missing argument in translation checks ([@epenet] - [#130674]) +- Deprecate returning to dock in Husqvarna Automower ([@Thomas55555] - [#130649]) +- Fix Reolink firmware updates by uploading directly ([@starkillerOG] - [#127007]) +- Bump github/codeql-action from 3.27.3 to 3.27.4 (@dependabot - [#130670]) +- Use BLOOD_GLUCOSE_CONCENTRATION device class in dexcom ([@epenet] - [#130526]) +- Improve type hints in roomba config flow ([@epenet] - [#130512]) +- Improve type hints in starline config flow ([@epenet] - [#130507]) +- Improve type hints in aussie_broadband config flow ([@epenet] - [#130506]) +- Improve type hints in motionblinds_ble config flow ([@epenet] - [#130439]) +- Improve type hints in smlight config flow ([@epenet] - [#130435]) +- Improve type hints in soundtouch config flow ([@epenet] - [#130431]) +- Improve type hints in tolo config flow ([@epenet] - [#130421]) +- Use reauth helpers in system_bridge ([@epenet] - [#130422]) +- Remove checks for DeviceEntryDisabler and DeviceEntryType enum ([@epenet] - [#130367]) +- Drop restore_state backwards compatibility ([@epenet] - [#130411]) +- Finish migration from report to report_usage ([@epenet] - [#130412]) +- Improve type hints in Time-based One Time Password auth module ([@epenet] - [#130420]) +- Update velbus-aio to 2024.11.0 ([@cdce8p] - [#130695]) +- Improve type hints in modern_forms config flow ([@epenet] - [#130698]) +- Improve type hints in system_bridge config flow ([@epenet] - [#130697]) +- Remove old setuptools keys from metadata ([@cdce8p] - [#130699]) +- Prevent None strings in description_placeholders ([@epenet] - [#127103]) +- Add translation checks for issue registry ([@epenet] - [#130593]) +- Fix modern_forms config flow test logic ([@epenet] - [#130491]) +- Bump nextdns to version 4.0.0 ([@bieniu] - [#130701]) +- Inline hydrawise sensor value_fn definitions as lambdas ([@dknowles2] - [#130702]) +- Add HVACAction state to palazzetti climate ([@dotvav] - [#130502]) +- Add starline run sensor ([@Anonym-tsk] - [#130444]) +- Allow reconnecting wireless omada clients ([@reey] - [#128491]) +- Add two WiiM models to linkplay ([@dnikles] - [#130707]) +- Do not create ESPHome Dashboard update entity if no configuration found ([@jesserockz] - [#129751]) +- Use shorthand attribute for extra state attributes in statistics ([@gjohansson-ST] - [#129353]) +- Add action for using transformation items to Habitica ([@tr4nt0r] - [#129606]) +- Add sensor platform to eq3btsmart ([@EuleMitKeule] - [#130438]) +- Switcher add current current temperature sensor ([@YogevBokobza] - [#130653]) +- KNX: Cache last telegram for each group address ([@farmio] - [#130566]) +- Bump ruff to 0.7.4 ([@autinerd] - [#130716]) +- Fix and bump codecov-action to 5.0.2 ([@TheJulianJES] - [#130729]) +- Fix Sonos get_queue action may fail if track metadata is missing ([@PeteRager] - [#130756]) +- Increase Hydrawise polling time to 5 minutes ([@dknowles2] - [#130759]) +- Remove Nest code related to Works with Nest API removal ([@allenporter] - [#130785]) +- Update knx-frontend to 2024.11.16.205004 ([@farmio] - [#130786]) +- Remove code for old fitbit config import ([@allenporter] - [#130783]) +- Update Google calendar OAuth instructions ([@allenporter] - [#130775]) +- Bump pypalazzetti to 0.1.12 ([@dotvav] - [#130800]) +- Bump yarl to 1.17.2 ([@bdraco] - [#130830]) +- Bump uiprotect to 6.5.0 ([@RaHehl] - [#130834]) +- Remove myself from codeowners ([@Santobert] - [#130805]) +- Fix missing Shelly MAC address checks ([@thecode] - [#130833]) +- Bump starlink-grpc-core to 1.2.0 ([@boswelja] - [#130488]) +- Bump pykoplenti to 1.3.0 ([@bvanelli] - [#130719]) +- Support KNX lights with multiple color modes ([@farmio] - [#130842]) +- Add entity picture for gems to Habitica integration ([@tr4nt0r] - [#130827]) +- Add diagnostics to HomeConnect ([@jwillemsen] - [#130500]) +- Bump pytouchlinesl to 0.1.9 ([@jnsgruk] - [#130867]) +- Linkplay additional models ([@MahrWe] - [#130262]) +- Bump accuweather to 4.0.0 ([@bieniu] - [#130868]) +- Fix mqtt subscription signature ([@jbouwh] - [#130866]) +- Add sensor platform to acaia ([@zweckj] - [#130614]) +- Bump PySwitchbot to 0.53.0 ([@greyeee] - [#130869]) +- Add binary_sensor platform to acaia ([@zweckj] - [#130676]) +- Bump uiprotect to 6.6.0 ([@RaHehl] - [#130872]) +- Bump hassil to 2.0.2 ([@synesthesiam] - [#130891]) +- Bump webrtc-models to 0.3.0 ([@sdb9696] - [#130889]) +- Use camera_capabilities instead frontend_stream_type ([@edenhaus] - [#130604]) +- Bump aioswitcher to 5.0.0 ([@YogevBokobza] - [#130874]) +- Bump PySwitchbot to 0.53.2 ([@bdraco] - [#130906]) +- Use RTCIceCandidateInit instead of RTCIceCandidate ([@edenhaus] - [#130901]) +- Catch googlemaps exceptions in google_travel_time ([@eifinger] - [#130903]) +- Modernize Fitbit entity names ([@allenporter] - [#130828]) +- Bump pre-commit-hooks to v5.0.0 ([@Thomas55555] - [#130888]) +- Add new sensors to Mill ([@Danielhiversen] - [#130896]) +- Bump aiohttp to 3.11.4 ([@bdraco] - [#130924]) +- Simplify FanEntity preset_mode shorthand attributes ([@epenet] - [#130930]) +- Update strings.json to fix typo in "Husqavarna" ([@NoRi2909] - [#130954]) +- Update strings.json to replace wrong "todo" with "lawn mower" ([@NoRi2909] - [#130962]) +- Add Hejhome Fingerbot (Tuya whitelabel) configuration ([@MarcoGlauser] - [#130732]) +- Bump aiohttp to 3.11.5 ([@bdraco] - [#130964]) +- Bump PyJWT to 2.10.0 ([@bdraco] - [#130907]) +- Remove deprecated not used constants in switchbot ([@gjohansson-ST] - [#130980]) +- Remove deprecated yaml import from dynalite ([@gjohansson-ST] - [#130982]) +- Add missing translations and icons for ZHA Sinope devices ([@ckm2k1] - [#130826]) +- Add sensor test to sabnzbd ([@jpbede] - [#130988]) +- Pass sabnzdb config entry explicitly to coordinator ([@jpbede] - [#130990]) +- Use HassKey in ping ([@jpbede] - [#130973]) +- Bump plugwise to v1.5.1 ([@bouwew] - [#130966]) +- Improve precision of HSV color conversion ([@MindFreeze] - [#130880]) +- Add base entity to sabnzbd ([@jpbede] - [#130995]) +- Bump aiohttp to 3.11.6 ([@bdraco] - [#130993]) +- Bump microBeesPy to 0.3.3 ([@FedDam] - [#130942]) +- Simplify FanEntity percentage and speed_count shorthand attributes ([@epenet] - [#130935]) +- Use snapshot in Sensibo tests ([@gjohansson-ST] - [#130994]) +- Clean up old migration in Twente Milieu ([@frenck] - [#130998]) +- Bump pypalazzetti to 0.1.13 ([@dotvav] - [#130956]) +- Add µV as UnitOfElectricPotential ([@tr4nt0r] - [#130838]) +- Add calendars for to-do and daily reminders to Habitica integration ([@tr4nt0r] - [#130789]) +- Bump plugwise to v1.5.2 ([@bouwew] - [#131012]) +- Bump codecov/codecov-action from 5.0.2 to 5.0.4 (@dependabot - [#131008]) +- UniFi Protect small textual fix in action description ([@RaHehl] - [#131009]) +- Add programs to Home Connect diagnostics ([@Diegorro98] - [#131011]) +- Add button platform to sabnzbd and deprecate custom actions ([@jpbede] - [#130999]) +- Update Amberelectric to use amberelectric version 2.0.12 ([@madpilot] - [#125701]) +- Add Z-Wave `installer_mode` yaml option ([@MindFreeze] - [#129888]) +- Remove code-owner from Habitica ([@tr4nt0r] - [#131024]) +- Add quality_scale.yaml to track IQS progress ([@joostlek] - [#130953]) +- Use now() from dt_util for Date and Time intents ([@balloob] - [#131049]) +- Change to rule slugs ([@joostlek] - [#131043]) +- Update forecast-solar to 4.0.0 ([@klaasnicolaas] - [#131044]) +- Remove deprecated yaml import from sabnzbd ([@jpbede] - [#131052]) +- Ensure a comment is required when making an exempt for the IQS ([@frenck] - [#131051]) +- Use ConfigEntry runtime_data in P1 Monitor ([@klaasnicolaas] - [#131048]) +- Bump pysuezV2 to 1.3.2 ([@jb101010-2] - [#131037]) +- Add unit translations for github integration ([@abmantis] - [#130538]) +- Set HA time zone with freeze_time in agent test ([@synesthesiam] - [#131058]) +- Bump pynina to 0.3.4 ([@DeerMaximum] - [#131059]) +- Remove old entity unique id migration from sabnzbd ([@jpbede] - [#131064]) +- Add number platform to sabnzbd and deprecate custom action ([@jpbede] - [#131029]) +- Use ConfigEntry runtime_data in Pure Energie ([@klaasnicolaas] - [#131061]) +- Use runtime_data in sabnzbd ([@jpbede] - [#131069]) +- Bump codecov/codecov-action to v5.0.5 ([@jpbede] - [#131055]) +- Record current IQS state for Twente Milieu ([@frenck] - [#131063]) +- Remove import from config flow in SABnzbd ([@jpbede] - [#131078]) +- Drop current quality scale ([@joostlek] - [#131072]) +- Implement new Integration Quality Scale ([@joostlek] - [#130518]) +- Split async_get_issue_tracker loader function ([@epenet] - [#130856]) +- Add ability to set HA breaking version in report_usage ([@epenet] - [#130858]) +- Add diagnostics per device to Home Connect ([@Diegorro98] - [#131010]) +- Add startup exception handling to nordpool ([@gjohansson-ST] - [#131104]) +- Bump uiprotect to 6.6.1 ([@RaHehl] - [#131107]) +- Set UniFi Protect `icr_lux` min to 0 allowing "below 1 lux" ([@RaHehl] - [#131115]) +- Add Reolink push for battery info and sleep status ([@starkillerOG] - [#131103]) +- Add current quality scale status to AVM FRITZ!Box Tools ([@mib1185] - [#131102]) +- Bump codecov/codecov-action from 5.0.5 to 5.0.7 (@dependabot - [#131135]) +- Bump github/codeql-action from 3.27.4 to 3.27.5 (@dependabot - [#131134]) +- Nina: Add URL for more information to warning ([@DeerMaximum] - [#131070]) +- Add created sensor in filesize ([@gjohansson-ST] - [#131108]) +- Add codeowner for unifiprotect ([@RaHehl] - [#131136]) +- Bump pylutron-caseta to 0.22.0 ([@bobpaul] - [#131129]) +- Fix wrong "(s)" that was leftover changing from "service(s)" to "actions" ([@NoRi2909] - [#131141]) +- Add informative header to ZHA update entity release notes ([@puddly] - [#130099]) +- Add diagnostics to acaia ([@zweckj] - [#131153]) +- Bump thinqconnect to 1.0.1 ([@LG-ThinQ-Integration] - [#131132]) +- Improve explanation of 'device_tracker.see' action ([@NoRi2909] - [#131095]) +- Use runtime_data for Fully Kiosk Browser integration ([@cgarwood] - [#131101]) +- Update websockets package constraint to 13.1 ([@sdb9696] - [#131039]) +- Use reauth helpers in renault ([@epenet] - [#131147]) +- Add quality_scale.yaml for Fully Kiosk Browser integration ([@cgarwood] - [#131071]) +- Add ability to pass integration domain to report_usage ([@epenet] - [#130705]) +- Area units and conversion between metric and US ([@mikey0000] - [#123563]) +- Improve comments in ConfigEntriesFlowManager.async_finish_flow ([@emontnemery] - [#131175]) +- Dont count unrecorded time for history_stats ([@karwosts] - [#126271]) +- Set up MQTT websocket_api and dump, publish actions from `async_setup` ([@jbouwh] - [#131170]) +- Set PARALLEL_UPDATES = 0 for MQTT components as no semaphore is needed ([@jbouwh] - [#131174]) +- Bump yarl to 1.18.0 ([@bdraco] - [#131183]) +- Bump aiohttp to 3.11.7 ([@bdraco] - [#131188]) +- Add unit translations for KNX integration ([@farmio] - [#131176]) +- Add optional flag to bypass the media proxy in esphome media players ([@marcelveldt] - [#131191]) +- Fix two strings for the Generic hygrostat UI ([@NoRi2909] - [#131185]) +- Bump securetar to 2024.11.0 ([@emontnemery] - [#131172]) +- Add PARALLEL_UPDATES = 0 to Reolink platforms ([@starkillerOG] - [#131165]) +- Bump AEMET-OpenData to v0.6.2 ([@Noltari] - [#131178]) +- Remove config entry unique id from trafikverket_train ([@gjohansson-ST] - [#130989]) +- Don't save Home Assistant device ID at Home Connect device ([@Diegorro98] - [#131013]) +- Fix correct handling in ManualTriggerEntity ([@gjohansson-ST] - [#130135]) +- Allow mL/s as UnitOfVolumeFlowRate ([@zweckj] - [#130771]) +- Add remaining snapshot testing to Sensibo ([@gjohansson-ST] - [#131105]) +- Generic ZHA Zeroconf discovery ([@puddly] - [#126294]) +- Add check for quality_scale.yaml ([@joostlek] - [#131096]) +- Bump pyenphase to 1.23.0 ([@catsmanac] - [#131205]) +- Add missing unique_id check on blink user flows ([@epenet] - [#131209]) +- Add translation for ConfigEntryAuthFailed to lamarzocco ([@zweckj] - [#131145]) +- Change "Add …" to "Create …" for consistency ([@NoRi2909] - [#131198]) +- Change "Add …" to "Create …" for consistency ([@NoRi2909] - [#131199]) +- Change "Add …" to "Create …" for consistency ([@NoRi2909] - [#131197]) +- Input number: Make description of decrement option consistent ([@NoRi2909] - [#131089]) +- Improve description of Random helper by removing repetition ([@NoRi2909] - [#131092]) +- Fix alarm_control_panel translation string ([@NoRi2909] - [#131157]) +- Fix Xiaomi Miio translation strings ([@NoRi2909] - [#131154]) +- Fix calendar translation strings ([@NoRi2909] - [#131160]) +- Use config entry title as sensor name in Filesize ([@gjohansson-ST] - [#131109]) +- Fix group translation strings ([@NoRi2909] - [#131150]) +- Bump pytouchlinesl to 0.2.0 ([@peroo] - [#131088]) +- Fix manifest.json schema violations ([@autinerd] - [#131220]) +- Add data_description for password in Fully Kiosk config flow ([@cgarwood] - [#131222]) +- Remove configurable name in config flow from SABnzbd ([@jpbede] - [#131073]) +- Improve SABnzbd config flow tests ([@jpbede] - [#131234]) +- Upgrade to ayla-iot-unofficial 1.4.4 ([@crevetor] - [#131228]) +- Patch entry setup in lamarzocco tests ([@zweckj] - [#131217]) +- Fix title upon discovery for lamarzocco ([@zweckj] - [#131207]) +- Make UpdateFailed translateable ([@zweckj] - [#131098]) +- Add parallel updates & exception translations to tedee ([@zweckj] - [#131146]) +- Bump pylamarzocco to 1.2.7 ([@zweckj] - [#131236]) +- Add StarLine flex logic and panic buttons ([@Anonym-tsk] - [#130819]) +- Enable strict typing for Reolink ([@starkillerOG] - [#131239]) +- Add waterheater platform bsblan ([@liudger] - [#129053]) +- Cleanup AWS config flow ([@epenet] - [#131244]) +- Add connectivity checks to renault config flow ([@epenet] - [#131251]) +- Palazzetti sensors ([@dotvav] - [#130804]) +- Bump aioacaia to 0.1.8 ([@zweckj] - [#131235]) +- Update manifest JSON schema for new quality scale ([@autinerd] - [#131213]) +- Use TextSelector in SABnzbd config flow ([@jpbede] - [#131255]) +- Add consistent descriptions to turn on / off and toggle commands ([@NoRi2909] - [#130985]) +- Add flow rate sensor to acaia ([@zweckj] - [#131254]) +- Enhance data_description in SABnzbd ([@jpbede] - [#131256]) +- Replace "Add …" with "Create …" for New Helper title ([@NoRi2909] - [#131253]) +- Deprecate camera frontend_stream_type ([@edenhaus] - [#130932]) +- Add data descriptions for all config fields in Mastodon integration ([@andrew-codechimp] - [#131260]) +- Fix incorrect action descriptions of Nexia integration ([@NoRi2909] - [#131087]) +- Use ServiceValidationError in Renault ([@epenet] - [#131265]) +- Add entity translations and entity category for IMAP mail count sensor ([@jbouwh] - [#131152]) +- Mark abode as single_config_entry ([@epenet] - [#131241]) +- Bump hdate to 0.11.1 ([@tsvi] - [#130456]) +- Fix typo in humidity::name of Nexia integration ([@NoRi2909] - [#131267]) +- Use `ConfigEntry.runtime_data` to store runtime data at Home Connect ([@Diegorro98] - [#131014]) +- Populate HVACAction/HVACMode for TouchlineSL zones ([@peroo] - [#131075]) +- Bump hass-nabucasa to 0.85.0 ([@klejejs] - [#131271]) +- Bump ruff to 0.8.0 ([@autinerd] - [#131273]) +- Add default placeholders for config validation errors ([@epenet] - [#131277]) +- Change "Add …" to "Create …" for New Helper dialog ([@NoRi2909] - [#131278]) +- Bump pytrafikverket to 1.1.1 ([@gjohansson-ST] - [#131270]) +- Add "Create …" for new Random Helper dialog ([@NoRi2909] - [#131283]) +- Fix incorrect translation string in palazzetti ([@epenet] - [#131272]) +- Use _attr_is_on in fibaro light ([@rappenze] - [#131211]) +- Improve imap config flow strings and add data descriptions ([@jbouwh] - [#131279]) +- Fix honeywell translation_placeholder ([@epenet] - [#131288]) +- Fix missing exception translation in tibber ([@epenet] - [#131287]) +- Fix missing exception translation in alarm_control_panel ([@epenet] - [#131280]) +- Fix lamarzocco translation_placeholder ([@epenet] - [#131284]) +- Deprecate camera async_handle_web_rtc_offer ([@edenhaus] - [#131285]) +- Ensure sentence triggers are only checked once ([@synesthesiam] - [#131210]) +- Bump aiopegelonline to 0.1.0 ([@mib1185] - [#131295]) +- Validate quality scale tiers against the tier declared in the integration manifest ([@allenporter] - [#131286]) +- Remove wrong periods from action names ([@NoRi2909] - [#131290]) +- Fix Home Connect service validation error placeholders ([@Diegorro98] - [#131294]) +- Add legacy to integrations that have not moved to the UI ([@joostlek] - [#131171]) +- Bump microBeesPy to 0.3.5 ([@FedDam] - [#131034]) +- Record current IQS state for lamarzocco ([@zweckj] - [#131084]) +- Record current IQS state for HomeWizard Energy ([@frenck] - [#131082]) +- Bump mozart-api to 4.1.1.116.3 ([@mj23000] - [#131269]) +- Add test foundation to Music Assistant integration ([@marcelveldt] - [#129534]) +- Add config_flow's seperated reaseon and more debug information ([@LG-ThinQ-Integration] - [#131131]) +- Clean up hassfest, fix CI ([@frenck] - [#131305]) +- Record current IQS state for Elgato ([@frenck] - [#131077]) +- Cache intent recognition results ([@synesthesiam] - [#131114]) +- Update quality scale validation to sort output ([@allenporter] - [#131324]) +- Add quality scale to airgradient ([@joostlek] - [#131292]) +- Record current IQS state for tedee ([@zweckj] - [#131081]) +- Record current IQS state for inexogy ([@jpbede] - [#131208]) +- Record current IQS state for ViCare ([@CFenner] - [#131202]) +- Record current IQS state for Autarco ([@klaasnicolaas] - [#131090]) +- Add quality scale for MQTT ([@jbouwh] - [#131113]) +- Bump Fully Kiosk Browser to Bronze quality scale ([@cgarwood] - [#131221]) +- Bump aiostreammagic to 2.8.6 ([@noahhusby] - [#131312]) +- Add Config Flow data descriptions for HomeWizard ([@DCSBL] - [#131315]) +- Webrtc use RTCIceCandidateInit messages with frontend ([@sdb9696] - [#129879]) +- Bump pylamarzocco to 1.2.11 ([@zweckj] - [#131331]) +- Bump solax to 3.2.1 ([@squishykid] - [#131373]) +- Mark quality_scale docs-installation-parameters as done ([@DCSBL] - [#131372]) +- Add missing apostrophe for possessive form ([@NoRi2909] - [#131368]) +- Mark quality_scale docs-removal-instructions as done ([@DCSBL] - [#131370]) +- Add quality scale for rainbird ([@allenporter] - [#131332]) +- Update AEMET-OpenData to v0.6.3 ([@Noltari] - [#131303]) +- Improve description of Elevation field in homeassistant.set_location ([@NoRi2909] - [#131356]) +- Add quality_scale.yaml to palazzetti ([@dotvav] - [#131335]) +- Remove unused config flow import step ([@allenporter] - [#131379]) +- Add dict of translated errors to Tessie ([@Bre77] - [#131346]) +- Translate UpdateFailed exception in PEGELONLINE ([@mib1185] - [#131380]) +- Add unit of measurement to translations for Mastodon ([@andrew-codechimp] - [#131343]) +- Pass websession to solarlog_cli ([@dontinelli] - [#131300]) +- Add unit translations for NextDNS integration ([@bieniu] - [#131281]) +- Use breaks_in_ha_version in report_usage ([@epenet] - [#131137]) +- Fix errors in fixtures and tests ([@tr4nt0r] - [#131388]) +- Bumb python-homewizard-energy to 7.0.0 ([@DCSBL] - [#131366]) +- Update snapshots for mashumaro 3.15 ([@balloob] - [#131406]) +- Add ability to get config_entry as required ([@epenet] - [#131400]) +- Replace "Add" with "Create" in description of Helper ([@NoRi2909] - [#131403]) +- Replace "Add" with "Create" in description of Helper ([@NoRi2909] - [#131407]) +- Replace "Add" with "Create" in description of Helper ([@NoRi2909] - [#131405]) +- Remove deprecation warnings for KNX yaml ([@farmio] - [#131402]) +- Mark IQS rule `config-flow` as todo in AVM Fritz!BOX Tools ([@mib1185] - [#131419]) +- Bump yalexs-ble to 2.5.1 ([@bdraco] - [#131398]) +- Use short namespace for dr and er in config_entries ([@epenet] - [#131412]) +- Bump py-aosmith to 1.0.11 ([@bdr99] - [#131422]) +- Bump aioesphomeapi to 27.0.2 ([@bdraco] - [#131397]) +- Small cleanup in Trafikverket Camera ([@gjohansson-ST] - [#131424]) +- Set parallel updates for acaia ([@zweckj] - [#131306]) +- Mark HomeWizard docs quality scale requirements as done ([@DCSBL] - [#131414]) +- Add quality_scale.yaml to hassfest pre-commit filter ([@epenet] - [#131392]) +- Add quality scale for IMAP integration ([@jbouwh] - [#131289]) +- Add entity picture for mystic hourglasses to Habitica ([@tr4nt0r] - [#131428]) +- Remove deprecated yaml import in media extractor ([@gjohansson-ST] - [#131426]) +- Fix language picker in workday ([@gjohansson-ST] - [#131423]) +- Set data description for all Rainbird config flow fields ([@allenporter] - [#131432]) +- Add data description to config flow for fyta ([@dontinelli] - [#131441]) +- Add data description for acaia ([@zweckj] - [#131437]) +- Add data description for lamarzocco ([@zweckj] - [#131435]) +- Add keepalive `data_description` for mqtt ([@jbouwh] - [#131446]) +- Allow Alexa to stop a cover ([@jbouwh] - [#130846]) +- Translate UpdateFailed error in AVM Fritz/BOX Tools ([@mib1185] - [#131466]) +- Add reauthentication support for Rainbird ([@allenporter] - [#131434]) +- Define ViCare fan entity presets based on the actual by the device supported presets ([@CFenner] - [#130886]) +- Fix humidifier entity feature docstring ([@kongo09] - [#131470]) +- Add version to SABnzbd device info ([@jpbede] - [#131479]) +- Set single_config_entry in azure event hub ([@epenet] - [#131483]) +- Rename `.sab` module to `.helpers` in SABnzbd ([@jpbede] - [#131481]) +- Set single_config_entry in cpuspeed ([@epenet] - [#131486]) +- Bump aiostreammagic to 2.10.0 ([@noahhusby] - [#131415]) +- Set parallelism for Habitica ([@tr4nt0r] - [#131480]) +- Set single_config_entry in canary ([@epenet] - [#131485]) +- Deprecate async_register_rtsp_to_web_rtc_provider ([@edenhaus] - [#131462]) +- Fix incorrect already_configured string in bang olufsen ([@epenet] - [#131484]) +- Bump uiprotect to 6.6.2 ([@RaHehl] - [#131475]) +- Hide TTS filename behind random token ([@synesthesiam] - [#131192]) +- Add exception translation in HomeWizard coordinator ([@DCSBL] - [#131404]) +- Make every palazzetti entity unavailable if appropriate ([@dotvav] - [#131385]) +- Bump deebot-client to 9.0.0 ([@edenhaus] - [#131525]) +- Revert "Make WS command backup/generate send events" ([@emontnemery] - [#131530]) +- Remove deprecated v2 api from glances ([@gjohansson-ST] - [#131427]) +- Bump aioacaia to 0.1.9 ([@zweckj] - [#131533]) +- Bump aio-geojson-generic-client to 0.5 ([@avee87] - [#131514]) +- Bump velbusaio to 2024.11.1 ([@cereal2nd] - [#131506]) +- Update pytest-cov to 6.0.0 ([@cdce8p] - [#131518]) +- Bump pyoverkiz 1.15.0 ([@iMicknl] - [#131478]) +- Deprecate RTSPtoWebRTC ([@edenhaus] - [#131467]) +- Bump stookwijzer to v1.5.1 ([@frenck] - [#131567]) +- Bump uv to 0.5.4 ([@edenhaus] - [#131513]) +- Add data coordinator to Stookwijzer ([@frenck] - [#131574]) +- Update Fully Kiosk quality scale progress ([@cgarwood] - [#131411]) +- Update climate strings for consistent names and descriptions ([@NoRi2909] - [#130967]) +- Update types packages ([@cdce8p] - [#131573]) +- Add entity descriptions to Stookwijzer ([@frenck] - [#131585]) +- Bump reolink-aio to 0.11.3 ([@starkillerOG] - [#131568]) +- Add new sensors to Stookwijzer ([@frenck] - [#131587]) +- Add data description for Stookwijzer config flow ([@frenck] - [#131591]) +- Extend tests for Stookwijzer init ([@frenck] - [#131589]) +- Bump nibe to 2.13.0 ([@cedeherd] - [#131572]) +- Fix logic for purge of recorder runs ([@emontnemery] - [#130378]) +- Bump airtouch5py to 0.2.11 ([@danzel] - [#131436]) +- Add unit of measurement to translations for Mealie ([@andrew-codechimp] - [#131345]) +- Enable strict typing for Stookwijzer ([@frenck] - [#131590]) +- Add action exceptions to Cambridge Audio ([@noahhusby] - [#131597]) +- Add parallel updates to Cambridge Audio ([@noahhusby] - [#131596]) +- Update instructions for setting up ecowitt ([@mxr] - [#131502]) +- Bump pyschlage to 2024.11.0 ([@dknowles2] - [#131593]) +- Ignore flaky cloud translations ([@epenet] - [#131600]) +- Add timesync and restart functionality to linkplay ([@silamon] - [#130167]) +- Fix twoSet temp and fan_mode error in LG ThinQ integration ([@LG-ThinQ-Integration] - [#131130]) +- Add reconfigure flow to SABnzbd ([@jpbede] - [#131555]) +- Add translation for exceptions in coordinator for fyta ([@dontinelli] - [#131521]) +- Remove Bang & Olufsen static icon ([@mj23000] - [#131528]) +- Add parallel updates setting to Bang & Olufsen ([@mj23000] - [#131526]) +- Refactor coordinator for Garages Amsterdam integration ([@klaasnicolaas] - [#131054]) +- Pass websession to fyta_cli ([@dontinelli] - [#131311]) +- Filter entity names before intent matching ([@synesthesiam] - [#131563]) +- Translate UpdateFailed in devolo Home Network ([@Shutgun] - [#131603]) +- Use hostname as config entry title in SABnzbd ([@jpbede] - [#131604]) +- Streamline HomeWizard unit test MAC-addresses ([@DCSBL] - [#131310]) +- Add fingerprint and nfc event support to unifiprotect ([@RaHehl] - [#130840]) +- Set PARALLEL_UPDATES in remaining HomeWizard platforms ([@DCSBL] - [#131316]) +- Add and improve descriptions in ista EcoTrand config flow ([@tr4nt0r] - [#131566]) +- Add translation to coordinator exceptions in solarlog ([@dontinelli] - [#131523]) +- Set PARALLEL_UPDATES for lamarzocco and UpdateFailed translation ([@zweckj] - [#131099]) +- Update two strings for creating a Utility meter Helper ([@NoRi2909] - [#131196]) +- Update rainbird to meet the runtime-data quality scale check ([@allenporter] - [#131391]) +- Add unit translations for Brother integration ([@bieniu] - [#131275]) +- Bump pypalazzetti to 0.1.14 ([@dotvav] - [#131443]) +- Add reconfigure flow to filesize ([@gjohansson-ST] - [#131106]) +- Update coverage to 7.6.8 ([@cdce8p] - [#131515]) +- Remove non-translated string from exceptions in devolo Home Network ([@Shutgun] - [#131606]) +- Abort SABnzbd config flow when instance already configured ([@jpbede] - [#131607]) +- Fix Values for Recording mode and Infrared mode entities are not showing correctly ([@RaHehl] - [#131487]) +- Add descriptions for config flow in Habitica integration ([@tr4nt0r] - [#131461]) +- Adjust the fan entity icon to it's state in ViCare integration ([@CFenner] - [#131553]) +- Add disconnect/reconnect tests to Cambridge Audio ([@noahhusby] - [#131100]) +- Allow dhcp discovery to update host for lamarzocco ([@zweckj] - [#131047]) +- Add Reolink bitrate and framerate select entities ([@starkillerOG] - [#131571]) +- Test connection in config flow for Husqvarna Automower ([@Thomas55555] - [#131557]) +- Use ConfigEntry runtime_data in Garages Amsterdam ([@klaasnicolaas] - [#131611]) +- Fix SABnzbd number icon ([@jpbede] - [#131615]) +- Bump motionblindsble to 0.1.3 ([@LennP] - [#131613]) +- Add Update syrupy snapshots VScode task ([@mib1185] - [#131536]) +- Fix bug on creating entities with unknown state - Garages Amsterdam ([@klaasnicolaas] - [#131619]) +- Add test to validate HomeWizard updates discovery info ([@DCSBL] - [#131540]) +- Add diagnostics to Palazzetti ([@dotvav] - [#131608]) +- Add configuration url to SABnzbd device info ([@jpbede] - [#131617]) +- Add live view camera entity to ring integration ([@sdb9696] - [#127579]) +- Support time entities in time conditions ([@silamon] - [#124575]) +- Bump ring_doorbell to 0.9.13 ([@sdb9696] - [#131627]) +- Add Reolink binning mode select entity ([@starkillerOG] - [#131570]) +- Add intent to cancel all timers ([@jpbede] - [#130873]) +- Bump Weheat wh-python to 2024.11.26 ([@jesperraemaekers] - [#131630]) +- Prevent changing email address in inexogy reauth ([@jpbede] - [#131632]) +- Sync overkiz Atlantic Water Heater datetime before switching the away mode on ([@ALERTua] - [#127408]) +- Add area slot to response for cancel all timers ([@synesthesiam] - [#131638]) +- Add binary sensor to SABnzbd ([@jpbede] - [#131651]) +- Add more supported lines to London Underground ([@jpbede] - [#131650]) +- Add DHCP configuration update in HomeWizard ([@DCSBL] - [#131547]) +- Clarify 'item' and 'rename' descriptions of 'update_item' action ([@NoRi2909] - [#131336]) +- Add reconfiguration flow in HomeWizard ([@DCSBL] - [#131535]) +- Add base entity class for Touchline zones ([@peroo] - [#131094]) +- Use SensorEntityDescription in emoncms ([@alexandrecuer] - [#130451]) +- Raise HomeAssistantError if update fails ([@JakeMartin-ICL] - [#129727]) +- Make set value template number option required ([@MartinHjelmare] - [#131625]) +- Detect ingress host used when adding a Mealie integration ([@andrew-codechimp] - [#130418]) +- Add support for single phase power meter aqcz in Tuya ([@blackovercoat] - [#126470]) +- Record current IQS state for Stookwijzer ([@frenck] - [#131592]) +- Add missing sensors to Tuya CO2 Detector ([@MarcoBuster] - [#131313]) +- Add diagnostics platform to Habitica ([@tr4nt0r] - [#131489]) +- tplink: forward compatible typing and test changes for kasa 0.8 ([@sdb9696] - [#131623]) +- Add PARALLEL_UPDATES to Husqvarna Automower ([@Thomas55555] - [#131662]) +- Record current IQS state for acaia ([@zweckj] - [#131086]) +- Add quality scale for solarlog ([@dontinelli] - [#131440]) +- Record current quality scale in renault ([@epenet] - [#131394]) +- Mark HomeWizard quality scale as platinum ([@DCSBL] - [#131663]) +- Don't enable number of collisions by default for Husqvarna Automower ([@Thomas55555] - [#131665]) +- Bump androidtv to 0.0.75 ([@prabhjotsbhatia-ca] - [#131642]) +- Bump tplink python-kasa dependency to 0.8.0 ([@sdb9696] - [#131249]) +- Add a constraint for aiofiles to ensure it does not get downgraded ([@bdraco] - [#131666]) +- Dump ffmpeg stderr to ESPhome debug log ([@mib1185] - [#130808]) +- Bump PySwitchbot to 0.54.0 ([@bdraco] - [#131664]) +- Fix Bang & Olufsen WebSocket debug log and test ([@mj23000] - [#131671]) +- Adds media_browser functionality to the music assistant integration ([@jozefKruszynski] - [#131577]) +- Add Bang & Olufsen diagnostics ([@mj23000] - [#131538]) +- Add wake word select for ESPHome Assist satellite ([@synesthesiam] - [#131309]) +- Allow an LLM to see script response values ([@balloob] - [#131683]) +- Bump zeroconf to 0.136.2 ([@bdraco] - [#131681]) +- Bump docker/build-push-action from 6.9.0 to 6.10.0 (@dependabot - [#131685]) +- Bump plugwise to v1.6.0 and adapt ([@bouwew] - [#131659]) +- Use entity description class for Garages Amsterdam ([@klaasnicolaas] - [#131672]) +- Bump ZHA to 0.0.40 ([@TheJulianJES] - [#131680]) +- Add missing section data_description to translation validator in hassfest ([@tr4nt0r] - [#131675]) +- Add translation checks for service exceptions ([@epenet] - [#131266]) +- Use report_usage for deprecation warning in alarm_control_panel ([@gjohansson-ST] - [#130543]) +- Nested stop actions will now return response_variables ([@Petro31] - [#126393]) +- Add data_description to devolo Home Network ([@Shutgun] - [#131511]) +- Fix bluesound_group attribute in bluesound integration ([@LouisChrist] - [#130815]) +- Clean up early assignment in script response ([@frenck] - [#131691]) +- Have Utility Meter monitor Timezone changes in configuration ([@dgomes] - [#131112]) +- Add time and offset config to Swiss public transport connections ([@miaucl] - [#120357]) +- Add open to Template lock ([@gjohansson-ST] - [#129292]) +- Bump aioshelly to 12.1.0 ([@thecode] - [#131714]) +- Bump samsungtvws to 2.7.0 ([@epenet] - [#131690]) +- Use default translation on SensorEntity unit_of_measurement ([@abmantis] - [#131633]) +- Fix ADS platform schema ([@epenet] - [#131701]) +- Add horizontal swing support to ClimateEntity ([@gjohansson-ST] - [#125578]) +- Remove workaround for flaky translation tests ([@epenet] - [#131628]) +- Add data description to Iron OS integration ([@tr4nt0r] - [#131719]) +- Unifiprotect fix missing domain check ([@RaHehl] - [#131724]) +- Update snapshot to fix CI ([@epenet] - [#131725]) +- Update frontend to 20241127.0 ([@bramkragten] - [#131722]) +- Home connect program select entities ([@Diegorro98] - [#126157]) +- Bump intents to 2024.11.27 ([@synesthesiam] - [#131727]) +- Add actions to Music Assistant integration ([@marcelveldt] - [#129515]) +- Raise error if sensor has translated and hardcoded unit ([@abmantis] - [#131657]) +- Improve test quality in alarm_control_panel ([@gjohansson-ST] - [#130541]) +- Add video event proxy endpoint for unifiprotect ([@lutzvahl] - [#129980]) +- Unifiprotect replace direct mocks with MockConfigEntry for test_async_ufp_instance_for_config_entry_ids ([@RaHehl] - [#131736]) +- Do not double expose scripts in LLM tools ([@balloob] - [#131726]) +- Update hash regex for frontend file in tests ([@piitaya] - [#131742]) +- Create MQTT device referenced by via device ([@jbouwh] - [#131588]) + +[#113438]: https://github.com/home-assistant/core/pull/113438 +[#120357]: https://github.com/home-assistant/core/pull/120357 +[#123563]: https://github.com/home-assistant/core/pull/123563 +[#124168]: https://github.com/home-assistant/core/pull/124168 +[#124189]: https://github.com/home-assistant/core/pull/124189 +[#124507]: https://github.com/home-assistant/core/pull/124507 +[#124575]: https://github.com/home-assistant/core/pull/124575 +[#125327]: https://github.com/home-assistant/core/pull/125327 +[#125578]: https://github.com/home-assistant/core/pull/125578 +[#125701]: https://github.com/home-assistant/core/pull/125701 +[#126157]: https://github.com/home-assistant/core/pull/126157 +[#126271]: https://github.com/home-assistant/core/pull/126271 +[#126294]: https://github.com/home-assistant/core/pull/126294 +[#126393]: https://github.com/home-assistant/core/pull/126393 +[#126470]: https://github.com/home-assistant/core/pull/126470 +[#126768]: https://github.com/home-assistant/core/pull/126768 +[#127007]: https://github.com/home-assistant/core/pull/127007 +[#127103]: https://github.com/home-assistant/core/pull/127103 +[#127408]: https://github.com/home-assistant/core/pull/127408 +[#127579]: https://github.com/home-assistant/core/pull/127579 +[#127625]: https://github.com/home-assistant/core/pull/127625 +[#127652]: https://github.com/home-assistant/core/pull/127652 +[#128097]: https://github.com/home-assistant/core/pull/128097 +[#128119]: https://github.com/home-assistant/core/pull/128119 +[#128235]: https://github.com/home-assistant/core/pull/128235 +[#128365]: https://github.com/home-assistant/core/pull/128365 +[#128407]: https://github.com/home-assistant/core/pull/128407 +[#128409]: https://github.com/home-assistant/core/pull/128409 +[#128491]: https://github.com/home-assistant/core/pull/128491 +[#128546]: https://github.com/home-assistant/core/pull/128546 +[#128644]: https://github.com/home-assistant/core/pull/128644 +[#129053]: https://github.com/home-assistant/core/pull/129053 +[#129058]: https://github.com/home-assistant/core/pull/129058 +[#129133]: https://github.com/home-assistant/core/pull/129133 +[#129140]: https://github.com/home-assistant/core/pull/129140 +[#129242]: https://github.com/home-assistant/core/pull/129242 +[#129292]: https://github.com/home-assistant/core/pull/129292 +[#129311]: https://github.com/home-assistant/core/pull/129311 +[#129319]: https://github.com/home-assistant/core/pull/129319 +[#129332]: https://github.com/home-assistant/core/pull/129332 +[#129340]: https://github.com/home-assistant/core/pull/129340 +[#129353]: https://github.com/home-assistant/core/pull/129353 +[#129363]: https://github.com/home-assistant/core/pull/129363 +[#129377]: https://github.com/home-assistant/core/pull/129377 +[#129382]: https://github.com/home-assistant/core/pull/129382 +[#129393]: https://github.com/home-assistant/core/pull/129393 +[#129421]: https://github.com/home-assistant/core/pull/129421 +[#129424]: https://github.com/home-assistant/core/pull/129424 +[#129425]: https://github.com/home-assistant/core/pull/129425 +[#129427]: https://github.com/home-assistant/core/pull/129427 +[#129442]: https://github.com/home-assistant/core/pull/129442 +[#129450]: https://github.com/home-assistant/core/pull/129450 +[#129466]: https://github.com/home-assistant/core/pull/129466 +[#129474]: https://github.com/home-assistant/core/pull/129474 +[#129482]: https://github.com/home-assistant/core/pull/129482 +[#129494]: https://github.com/home-assistant/core/pull/129494 +[#129515]: https://github.com/home-assistant/core/pull/129515 +[#129516]: https://github.com/home-assistant/core/pull/129516 +[#129518]: https://github.com/home-assistant/core/pull/129518 +[#129525]: https://github.com/home-assistant/core/pull/129525 +[#129531]: https://github.com/home-assistant/core/pull/129531 +[#129534]: https://github.com/home-assistant/core/pull/129534 +[#129536]: https://github.com/home-assistant/core/pull/129536 +[#129538]: https://github.com/home-assistant/core/pull/129538 +[#129540]: https://github.com/home-assistant/core/pull/129540 +[#129541]: https://github.com/home-assistant/core/pull/129541 +[#129542]: https://github.com/home-assistant/core/pull/129542 +[#129543]: https://github.com/home-assistant/core/pull/129543 +[#129552]: https://github.com/home-assistant/core/pull/129552 +[#129562]: https://github.com/home-assistant/core/pull/129562 +[#129571]: https://github.com/home-assistant/core/pull/129571 +[#129577]: https://github.com/home-assistant/core/pull/129577 +[#129584]: https://github.com/home-assistant/core/pull/129584 +[#129595]: https://github.com/home-assistant/core/pull/129595 +[#129596]: https://github.com/home-assistant/core/pull/129596 +[#129599]: https://github.com/home-assistant/core/pull/129599 +[#129603]: https://github.com/home-assistant/core/pull/129603 +[#129605]: https://github.com/home-assistant/core/pull/129605 +[#129606]: https://github.com/home-assistant/core/pull/129606 +[#129609]: https://github.com/home-assistant/core/pull/129609 +[#129612]: https://github.com/home-assistant/core/pull/129612 +[#129613]: https://github.com/home-assistant/core/pull/129613 +[#129616]: https://github.com/home-assistant/core/pull/129616 +[#129617]: https://github.com/home-assistant/core/pull/129617 +[#129619]: https://github.com/home-assistant/core/pull/129619 +[#129625]: https://github.com/home-assistant/core/pull/129625 +[#129628]: https://github.com/home-assistant/core/pull/129628 +[#129635]: https://github.com/home-assistant/core/pull/129635 +[#129637]: https://github.com/home-assistant/core/pull/129637 +[#129645]: https://github.com/home-assistant/core/pull/129645 +[#129649]: https://github.com/home-assistant/core/pull/129649 +[#129650]: https://github.com/home-assistant/core/pull/129650 +[#129651]: https://github.com/home-assistant/core/pull/129651 +[#129668]: https://github.com/home-assistant/core/pull/129668 +[#129669]: https://github.com/home-assistant/core/pull/129669 +[#129675]: https://github.com/home-assistant/core/pull/129675 +[#129688]: https://github.com/home-assistant/core/pull/129688 +[#129689]: https://github.com/home-assistant/core/pull/129689 +[#129691]: https://github.com/home-assistant/core/pull/129691 +[#129695]: https://github.com/home-assistant/core/pull/129695 +[#129699]: https://github.com/home-assistant/core/pull/129699 +[#129712]: https://github.com/home-assistant/core/pull/129712 +[#129718]: https://github.com/home-assistant/core/pull/129718 +[#129724]: https://github.com/home-assistant/core/pull/129724 +[#129725]: https://github.com/home-assistant/core/pull/129725 +[#129726]: https://github.com/home-assistant/core/pull/129726 +[#129727]: https://github.com/home-assistant/core/pull/129727 +[#129731]: https://github.com/home-assistant/core/pull/129731 +[#129735]: https://github.com/home-assistant/core/pull/129735 +[#129736]: https://github.com/home-assistant/core/pull/129736 +[#129751]: https://github.com/home-assistant/core/pull/129751 +[#129752]: https://github.com/home-assistant/core/pull/129752 +[#129754]: https://github.com/home-assistant/core/pull/129754 +[#129756]: https://github.com/home-assistant/core/pull/129756 +[#129758]: https://github.com/home-assistant/core/pull/129758 +[#129770]: https://github.com/home-assistant/core/pull/129770 +[#129773]: https://github.com/home-assistant/core/pull/129773 +[#129774]: https://github.com/home-assistant/core/pull/129774 +[#129775]: https://github.com/home-assistant/core/pull/129775 +[#129776]: https://github.com/home-assistant/core/pull/129776 +[#129777]: https://github.com/home-assistant/core/pull/129777 +[#129778]: https://github.com/home-assistant/core/pull/129778 +[#129779]: https://github.com/home-assistant/core/pull/129779 +[#129780]: https://github.com/home-assistant/core/pull/129780 +[#129781]: https://github.com/home-assistant/core/pull/129781 +[#129782]: https://github.com/home-assistant/core/pull/129782 +[#129783]: https://github.com/home-assistant/core/pull/129783 +[#129784]: https://github.com/home-assistant/core/pull/129784 +[#129785]: https://github.com/home-assistant/core/pull/129785 +[#129787]: https://github.com/home-assistant/core/pull/129787 +[#129788]: https://github.com/home-assistant/core/pull/129788 +[#129789]: https://github.com/home-assistant/core/pull/129789 +[#129790]: https://github.com/home-assistant/core/pull/129790 +[#129791]: https://github.com/home-assistant/core/pull/129791 +[#129792]: https://github.com/home-assistant/core/pull/129792 +[#129820]: https://github.com/home-assistant/core/pull/129820 +[#129821]: https://github.com/home-assistant/core/pull/129821 +[#129822]: https://github.com/home-assistant/core/pull/129822 +[#129823]: https://github.com/home-assistant/core/pull/129823 +[#129825]: https://github.com/home-assistant/core/pull/129825 +[#129826]: https://github.com/home-assistant/core/pull/129826 +[#129828]: https://github.com/home-assistant/core/pull/129828 +[#129835]: https://github.com/home-assistant/core/pull/129835 +[#129837]: https://github.com/home-assistant/core/pull/129837 +[#129842]: https://github.com/home-assistant/core/pull/129842 +[#129843]: https://github.com/home-assistant/core/pull/129843 +[#129848]: https://github.com/home-assistant/core/pull/129848 +[#129854]: https://github.com/home-assistant/core/pull/129854 +[#129855]: https://github.com/home-assistant/core/pull/129855 +[#129859]: https://github.com/home-assistant/core/pull/129859 +[#129862]: https://github.com/home-assistant/core/pull/129862 +[#129869]: https://github.com/home-assistant/core/pull/129869 +[#129870]: https://github.com/home-assistant/core/pull/129870 +[#129871]: https://github.com/home-assistant/core/pull/129871 +[#129872]: https://github.com/home-assistant/core/pull/129872 +[#129873]: https://github.com/home-assistant/core/pull/129873 +[#129875]: https://github.com/home-assistant/core/pull/129875 +[#129879]: https://github.com/home-assistant/core/pull/129879 +[#129888]: https://github.com/home-assistant/core/pull/129888 +[#129890]: https://github.com/home-assistant/core/pull/129890 +[#129895]: https://github.com/home-assistant/core/pull/129895 +[#129897]: https://github.com/home-assistant/core/pull/129897 +[#129911]: https://github.com/home-assistant/core/pull/129911 +[#129917]: https://github.com/home-assistant/core/pull/129917 +[#129918]: https://github.com/home-assistant/core/pull/129918 +[#129924]: https://github.com/home-assistant/core/pull/129924 +[#129926]: https://github.com/home-assistant/core/pull/129926 +[#129927]: https://github.com/home-assistant/core/pull/129927 +[#129928]: https://github.com/home-assistant/core/pull/129928 +[#129929]: https://github.com/home-assistant/core/pull/129929 +[#129946]: https://github.com/home-assistant/core/pull/129946 +[#129949]: https://github.com/home-assistant/core/pull/129949 +[#129951]: https://github.com/home-assistant/core/pull/129951 +[#129958]: https://github.com/home-assistant/core/pull/129958 +[#129963]: https://github.com/home-assistant/core/pull/129963 +[#129969]: https://github.com/home-assistant/core/pull/129969 +[#129980]: https://github.com/home-assistant/core/pull/129980 +[#129983]: https://github.com/home-assistant/core/pull/129983 +[#130016]: https://github.com/home-assistant/core/pull/130016 +[#130019]: https://github.com/home-assistant/core/pull/130019 +[#130025]: https://github.com/home-assistant/core/pull/130025 +[#130027]: https://github.com/home-assistant/core/pull/130027 +[#130034]: https://github.com/home-assistant/core/pull/130034 +[#130046]: https://github.com/home-assistant/core/pull/130046 +[#130047]: https://github.com/home-assistant/core/pull/130047 +[#130054]: https://github.com/home-assistant/core/pull/130054 +[#130059]: https://github.com/home-assistant/core/pull/130059 +[#130062]: https://github.com/home-assistant/core/pull/130062 +[#130070]: https://github.com/home-assistant/core/pull/130070 +[#130072]: https://github.com/home-assistant/core/pull/130072 +[#130078]: https://github.com/home-assistant/core/pull/130078 +[#130083]: https://github.com/home-assistant/core/pull/130083 +[#130089]: https://github.com/home-assistant/core/pull/130089 +[#130092]: https://github.com/home-assistant/core/pull/130092 +[#130094]: https://github.com/home-assistant/core/pull/130094 +[#130097]: https://github.com/home-assistant/core/pull/130097 +[#130099]: https://github.com/home-assistant/core/pull/130099 +[#130119]: https://github.com/home-assistant/core/pull/130119 +[#130124]: https://github.com/home-assistant/core/pull/130124 +[#130127]: https://github.com/home-assistant/core/pull/130127 +[#130129]: https://github.com/home-assistant/core/pull/130129 +[#130134]: https://github.com/home-assistant/core/pull/130134 +[#130135]: https://github.com/home-assistant/core/pull/130135 +[#130136]: https://github.com/home-assistant/core/pull/130136 +[#130141]: https://github.com/home-assistant/core/pull/130141 +[#130147]: https://github.com/home-assistant/core/pull/130147 +[#130148]: https://github.com/home-assistant/core/pull/130148 +[#130151]: https://github.com/home-assistant/core/pull/130151 +[#130167]: https://github.com/home-assistant/core/pull/130167 +[#130182]: https://github.com/home-assistant/core/pull/130182 +[#130184]: https://github.com/home-assistant/core/pull/130184 +[#130186]: https://github.com/home-assistant/core/pull/130186 +[#130191]: https://github.com/home-assistant/core/pull/130191 +[#130194]: https://github.com/home-assistant/core/pull/130194 +[#130203]: https://github.com/home-assistant/core/pull/130203 +[#130204]: https://github.com/home-assistant/core/pull/130204 +[#130209]: https://github.com/home-assistant/core/pull/130209 +[#130211]: https://github.com/home-assistant/core/pull/130211 +[#130213]: https://github.com/home-assistant/core/pull/130213 +[#130219]: https://github.com/home-assistant/core/pull/130219 +[#130240]: https://github.com/home-assistant/core/pull/130240 +[#130241]: https://github.com/home-assistant/core/pull/130241 +[#130244]: https://github.com/home-assistant/core/pull/130244 +[#130252]: https://github.com/home-assistant/core/pull/130252 +[#130254]: https://github.com/home-assistant/core/pull/130254 +[#130257]: https://github.com/home-assistant/core/pull/130257 +[#130261]: https://github.com/home-assistant/core/pull/130261 +[#130262]: https://github.com/home-assistant/core/pull/130262 +[#130264]: https://github.com/home-assistant/core/pull/130264 +[#130266]: https://github.com/home-assistant/core/pull/130266 +[#130278]: https://github.com/home-assistant/core/pull/130278 +[#130284]: https://github.com/home-assistant/core/pull/130284 +[#130285]: https://github.com/home-assistant/core/pull/130285 +[#130287]: https://github.com/home-assistant/core/pull/130287 +[#130291]: https://github.com/home-assistant/core/pull/130291 +[#130292]: https://github.com/home-assistant/core/pull/130292 +[#130293]: https://github.com/home-assistant/core/pull/130293 +[#130295]: https://github.com/home-assistant/core/pull/130295 +[#130297]: https://github.com/home-assistant/core/pull/130297 +[#130305]: https://github.com/home-assistant/core/pull/130305 +[#130307]: https://github.com/home-assistant/core/pull/130307 +[#130310]: https://github.com/home-assistant/core/pull/130310 +[#130320]: https://github.com/home-assistant/core/pull/130320 +[#130323]: https://github.com/home-assistant/core/pull/130323 +[#130324]: https://github.com/home-assistant/core/pull/130324 +[#130329]: https://github.com/home-assistant/core/pull/130329 +[#130333]: https://github.com/home-assistant/core/pull/130333 +[#130334]: https://github.com/home-assistant/core/pull/130334 +[#130337]: https://github.com/home-assistant/core/pull/130337 +[#130340]: https://github.com/home-assistant/core/pull/130340 +[#130345]: https://github.com/home-assistant/core/pull/130345 +[#130352]: https://github.com/home-assistant/core/pull/130352 +[#130357]: https://github.com/home-assistant/core/pull/130357 +[#130360]: https://github.com/home-assistant/core/pull/130360 +[#130363]: https://github.com/home-assistant/core/pull/130363 +[#130364]: https://github.com/home-assistant/core/pull/130364 +[#130365]: https://github.com/home-assistant/core/pull/130365 +[#130366]: https://github.com/home-assistant/core/pull/130366 +[#130367]: https://github.com/home-assistant/core/pull/130367 +[#130373]: https://github.com/home-assistant/core/pull/130373 +[#130375]: https://github.com/home-assistant/core/pull/130375 +[#130378]: https://github.com/home-assistant/core/pull/130378 +[#130380]: https://github.com/home-assistant/core/pull/130380 +[#130382]: https://github.com/home-assistant/core/pull/130382 +[#130383]: https://github.com/home-assistant/core/pull/130383 +[#130385]: https://github.com/home-assistant/core/pull/130385 +[#130386]: https://github.com/home-assistant/core/pull/130386 +[#130390]: https://github.com/home-assistant/core/pull/130390 +[#130411]: https://github.com/home-assistant/core/pull/130411 +[#130412]: https://github.com/home-assistant/core/pull/130412 +[#130418]: https://github.com/home-assistant/core/pull/130418 +[#130420]: https://github.com/home-assistant/core/pull/130420 +[#130421]: https://github.com/home-assistant/core/pull/130421 +[#130422]: https://github.com/home-assistant/core/pull/130422 +[#130425]: https://github.com/home-assistant/core/pull/130425 +[#130426]: https://github.com/home-assistant/core/pull/130426 +[#130429]: https://github.com/home-assistant/core/pull/130429 +[#130431]: https://github.com/home-assistant/core/pull/130431 +[#130435]: https://github.com/home-assistant/core/pull/130435 +[#130438]: https://github.com/home-assistant/core/pull/130438 +[#130439]: https://github.com/home-assistant/core/pull/130439 +[#130441]: https://github.com/home-assistant/core/pull/130441 +[#130443]: https://github.com/home-assistant/core/pull/130443 +[#130444]: https://github.com/home-assistant/core/pull/130444 +[#130449]: https://github.com/home-assistant/core/pull/130449 +[#130451]: https://github.com/home-assistant/core/pull/130451 +[#130454]: https://github.com/home-assistant/core/pull/130454 +[#130456]: https://github.com/home-assistant/core/pull/130456 +[#130461]: https://github.com/home-assistant/core/pull/130461 +[#130468]: https://github.com/home-assistant/core/pull/130468 +[#130484]: https://github.com/home-assistant/core/pull/130484 +[#130488]: https://github.com/home-assistant/core/pull/130488 +[#130489]: https://github.com/home-assistant/core/pull/130489 +[#130491]: https://github.com/home-assistant/core/pull/130491 +[#130500]: https://github.com/home-assistant/core/pull/130500 +[#130502]: https://github.com/home-assistant/core/pull/130502 +[#130506]: https://github.com/home-assistant/core/pull/130506 +[#130507]: https://github.com/home-assistant/core/pull/130507 +[#130509]: https://github.com/home-assistant/core/pull/130509 +[#130511]: https://github.com/home-assistant/core/pull/130511 +[#130512]: https://github.com/home-assistant/core/pull/130512 +[#130514]: https://github.com/home-assistant/core/pull/130514 +[#130515]: https://github.com/home-assistant/core/pull/130515 +[#130518]: https://github.com/home-assistant/core/pull/130518 +[#130519]: https://github.com/home-assistant/core/pull/130519 +[#130524]: https://github.com/home-assistant/core/pull/130524 +[#130526]: https://github.com/home-assistant/core/pull/130526 +[#130527]: https://github.com/home-assistant/core/pull/130527 +[#130538]: https://github.com/home-assistant/core/pull/130538 +[#130541]: https://github.com/home-assistant/core/pull/130541 +[#130542]: https://github.com/home-assistant/core/pull/130542 +[#130543]: https://github.com/home-assistant/core/pull/130543 +[#130544]: https://github.com/home-assistant/core/pull/130544 +[#130562]: https://github.com/home-assistant/core/pull/130562 +[#130565]: https://github.com/home-assistant/core/pull/130565 +[#130566]: https://github.com/home-assistant/core/pull/130566 +[#130574]: https://github.com/home-assistant/core/pull/130574 +[#130576]: https://github.com/home-assistant/core/pull/130576 +[#130581]: https://github.com/home-assistant/core/pull/130581 +[#130585]: https://github.com/home-assistant/core/pull/130585 +[#130593]: https://github.com/home-assistant/core/pull/130593 +[#130603]: https://github.com/home-assistant/core/pull/130603 +[#130604]: https://github.com/home-assistant/core/pull/130604 +[#130607]: https://github.com/home-assistant/core/pull/130607 +[#130611]: https://github.com/home-assistant/core/pull/130611 +[#130614]: https://github.com/home-assistant/core/pull/130614 +[#130617]: https://github.com/home-assistant/core/pull/130617 +[#130619]: https://github.com/home-assistant/core/pull/130619 +[#130626]: https://github.com/home-assistant/core/pull/130626 +[#130628]: https://github.com/home-assistant/core/pull/130628 +[#130629]: https://github.com/home-assistant/core/pull/130629 +[#130631]: https://github.com/home-assistant/core/pull/130631 +[#130632]: https://github.com/home-assistant/core/pull/130632 +[#130636]: https://github.com/home-assistant/core/pull/130636 +[#130640]: https://github.com/home-assistant/core/pull/130640 +[#130649]: https://github.com/home-assistant/core/pull/130649 +[#130653]: https://github.com/home-assistant/core/pull/130653 +[#130663]: https://github.com/home-assistant/core/pull/130663 +[#130670]: https://github.com/home-assistant/core/pull/130670 +[#130671]: https://github.com/home-assistant/core/pull/130671 +[#130674]: https://github.com/home-assistant/core/pull/130674 +[#130676]: https://github.com/home-assistant/core/pull/130676 +[#130695]: https://github.com/home-assistant/core/pull/130695 +[#130697]: https://github.com/home-assistant/core/pull/130697 +[#130698]: https://github.com/home-assistant/core/pull/130698 +[#130699]: https://github.com/home-assistant/core/pull/130699 +[#130701]: https://github.com/home-assistant/core/pull/130701 +[#130702]: https://github.com/home-assistant/core/pull/130702 +[#130705]: https://github.com/home-assistant/core/pull/130705 +[#130707]: https://github.com/home-assistant/core/pull/130707 +[#130716]: https://github.com/home-assistant/core/pull/130716 +[#130719]: https://github.com/home-assistant/core/pull/130719 +[#130729]: https://github.com/home-assistant/core/pull/130729 +[#130732]: https://github.com/home-assistant/core/pull/130732 +[#130756]: https://github.com/home-assistant/core/pull/130756 +[#130759]: https://github.com/home-assistant/core/pull/130759 +[#130771]: https://github.com/home-assistant/core/pull/130771 +[#130775]: https://github.com/home-assistant/core/pull/130775 +[#130783]: https://github.com/home-assistant/core/pull/130783 +[#130785]: https://github.com/home-assistant/core/pull/130785 +[#130786]: https://github.com/home-assistant/core/pull/130786 +[#130789]: https://github.com/home-assistant/core/pull/130789 +[#130800]: https://github.com/home-assistant/core/pull/130800 +[#130804]: https://github.com/home-assistant/core/pull/130804 +[#130805]: https://github.com/home-assistant/core/pull/130805 +[#130808]: https://github.com/home-assistant/core/pull/130808 +[#130815]: https://github.com/home-assistant/core/pull/130815 +[#130819]: https://github.com/home-assistant/core/pull/130819 +[#130826]: https://github.com/home-assistant/core/pull/130826 +[#130827]: https://github.com/home-assistant/core/pull/130827 +[#130828]: https://github.com/home-assistant/core/pull/130828 +[#130830]: https://github.com/home-assistant/core/pull/130830 +[#130833]: https://github.com/home-assistant/core/pull/130833 +[#130834]: https://github.com/home-assistant/core/pull/130834 +[#130838]: https://github.com/home-assistant/core/pull/130838 +[#130840]: https://github.com/home-assistant/core/pull/130840 +[#130842]: https://github.com/home-assistant/core/pull/130842 +[#130846]: https://github.com/home-assistant/core/pull/130846 +[#130856]: https://github.com/home-assistant/core/pull/130856 +[#130858]: https://github.com/home-assistant/core/pull/130858 +[#130866]: https://github.com/home-assistant/core/pull/130866 +[#130867]: https://github.com/home-assistant/core/pull/130867 +[#130868]: https://github.com/home-assistant/core/pull/130868 +[#130869]: https://github.com/home-assistant/core/pull/130869 +[#130872]: https://github.com/home-assistant/core/pull/130872 +[#130873]: https://github.com/home-assistant/core/pull/130873 +[#130874]: https://github.com/home-assistant/core/pull/130874 +[#130880]: https://github.com/home-assistant/core/pull/130880 +[#130886]: https://github.com/home-assistant/core/pull/130886 +[#130888]: https://github.com/home-assistant/core/pull/130888 +[#130889]: https://github.com/home-assistant/core/pull/130889 +[#130891]: https://github.com/home-assistant/core/pull/130891 +[#130896]: https://github.com/home-assistant/core/pull/130896 +[#130901]: https://github.com/home-assistant/core/pull/130901 +[#130903]: https://github.com/home-assistant/core/pull/130903 +[#130906]: https://github.com/home-assistant/core/pull/130906 +[#130907]: https://github.com/home-assistant/core/pull/130907 +[#130924]: https://github.com/home-assistant/core/pull/130924 +[#130930]: https://github.com/home-assistant/core/pull/130930 +[#130932]: https://github.com/home-assistant/core/pull/130932 +[#130935]: https://github.com/home-assistant/core/pull/130935 +[#130942]: https://github.com/home-assistant/core/pull/130942 +[#130953]: https://github.com/home-assistant/core/pull/130953 +[#130954]: https://github.com/home-assistant/core/pull/130954 +[#130956]: https://github.com/home-assistant/core/pull/130956 +[#130962]: https://github.com/home-assistant/core/pull/130962 +[#130964]: https://github.com/home-assistant/core/pull/130964 +[#130966]: https://github.com/home-assistant/core/pull/130966 +[#130967]: https://github.com/home-assistant/core/pull/130967 +[#130973]: https://github.com/home-assistant/core/pull/130973 +[#130980]: https://github.com/home-assistant/core/pull/130980 +[#130982]: https://github.com/home-assistant/core/pull/130982 +[#130985]: https://github.com/home-assistant/core/pull/130985 +[#130988]: https://github.com/home-assistant/core/pull/130988 +[#130989]: https://github.com/home-assistant/core/pull/130989 +[#130990]: https://github.com/home-assistant/core/pull/130990 +[#130993]: https://github.com/home-assistant/core/pull/130993 +[#130994]: https://github.com/home-assistant/core/pull/130994 +[#130995]: https://github.com/home-assistant/core/pull/130995 +[#130998]: https://github.com/home-assistant/core/pull/130998 +[#130999]: https://github.com/home-assistant/core/pull/130999 +[#131008]: https://github.com/home-assistant/core/pull/131008 +[#131009]: https://github.com/home-assistant/core/pull/131009 +[#131010]: https://github.com/home-assistant/core/pull/131010 +[#131011]: https://github.com/home-assistant/core/pull/131011 +[#131012]: https://github.com/home-assistant/core/pull/131012 +[#131013]: https://github.com/home-assistant/core/pull/131013 +[#131014]: https://github.com/home-assistant/core/pull/131014 +[#131024]: https://github.com/home-assistant/core/pull/131024 +[#131029]: https://github.com/home-assistant/core/pull/131029 +[#131034]: https://github.com/home-assistant/core/pull/131034 +[#131037]: https://github.com/home-assistant/core/pull/131037 +[#131039]: https://github.com/home-assistant/core/pull/131039 +[#131043]: https://github.com/home-assistant/core/pull/131043 +[#131044]: https://github.com/home-assistant/core/pull/131044 +[#131047]: https://github.com/home-assistant/core/pull/131047 +[#131048]: https://github.com/home-assistant/core/pull/131048 +[#131049]: https://github.com/home-assistant/core/pull/131049 +[#131051]: https://github.com/home-assistant/core/pull/131051 +[#131052]: https://github.com/home-assistant/core/pull/131052 +[#131054]: https://github.com/home-assistant/core/pull/131054 +[#131055]: https://github.com/home-assistant/core/pull/131055 +[#131058]: https://github.com/home-assistant/core/pull/131058 +[#131059]: https://github.com/home-assistant/core/pull/131059 +[#131061]: https://github.com/home-assistant/core/pull/131061 +[#131063]: https://github.com/home-assistant/core/pull/131063 +[#131064]: https://github.com/home-assistant/core/pull/131064 +[#131069]: https://github.com/home-assistant/core/pull/131069 +[#131070]: https://github.com/home-assistant/core/pull/131070 +[#131071]: https://github.com/home-assistant/core/pull/131071 +[#131072]: https://github.com/home-assistant/core/pull/131072 +[#131073]: https://github.com/home-assistant/core/pull/131073 +[#131075]: https://github.com/home-assistant/core/pull/131075 +[#131077]: https://github.com/home-assistant/core/pull/131077 +[#131078]: https://github.com/home-assistant/core/pull/131078 +[#131081]: https://github.com/home-assistant/core/pull/131081 +[#131082]: https://github.com/home-assistant/core/pull/131082 +[#131084]: https://github.com/home-assistant/core/pull/131084 +[#131086]: https://github.com/home-assistant/core/pull/131086 +[#131087]: https://github.com/home-assistant/core/pull/131087 +[#131088]: https://github.com/home-assistant/core/pull/131088 +[#131089]: https://github.com/home-assistant/core/pull/131089 +[#131090]: https://github.com/home-assistant/core/pull/131090 +[#131092]: https://github.com/home-assistant/core/pull/131092 +[#131094]: https://github.com/home-assistant/core/pull/131094 +[#131095]: https://github.com/home-assistant/core/pull/131095 +[#131096]: https://github.com/home-assistant/core/pull/131096 +[#131098]: https://github.com/home-assistant/core/pull/131098 +[#131099]: https://github.com/home-assistant/core/pull/131099 +[#131100]: https://github.com/home-assistant/core/pull/131100 +[#131101]: https://github.com/home-assistant/core/pull/131101 +[#131102]: https://github.com/home-assistant/core/pull/131102 +[#131103]: https://github.com/home-assistant/core/pull/131103 +[#131104]: https://github.com/home-assistant/core/pull/131104 +[#131105]: https://github.com/home-assistant/core/pull/131105 +[#131106]: https://github.com/home-assistant/core/pull/131106 +[#131107]: https://github.com/home-assistant/core/pull/131107 +[#131108]: https://github.com/home-assistant/core/pull/131108 +[#131109]: https://github.com/home-assistant/core/pull/131109 +[#131112]: https://github.com/home-assistant/core/pull/131112 +[#131113]: https://github.com/home-assistant/core/pull/131113 +[#131114]: https://github.com/home-assistant/core/pull/131114 +[#131115]: https://github.com/home-assistant/core/pull/131115 +[#131129]: https://github.com/home-assistant/core/pull/131129 +[#131130]: https://github.com/home-assistant/core/pull/131130 +[#131131]: https://github.com/home-assistant/core/pull/131131 +[#131132]: https://github.com/home-assistant/core/pull/131132 +[#131134]: https://github.com/home-assistant/core/pull/131134 +[#131135]: https://github.com/home-assistant/core/pull/131135 +[#131136]: https://github.com/home-assistant/core/pull/131136 +[#131137]: https://github.com/home-assistant/core/pull/131137 +[#131141]: https://github.com/home-assistant/core/pull/131141 +[#131145]: https://github.com/home-assistant/core/pull/131145 +[#131146]: https://github.com/home-assistant/core/pull/131146 +[#131147]: https://github.com/home-assistant/core/pull/131147 +[#131150]: https://github.com/home-assistant/core/pull/131150 +[#131152]: https://github.com/home-assistant/core/pull/131152 +[#131153]: https://github.com/home-assistant/core/pull/131153 +[#131154]: https://github.com/home-assistant/core/pull/131154 +[#131157]: https://github.com/home-assistant/core/pull/131157 +[#131160]: https://github.com/home-assistant/core/pull/131160 +[#131165]: https://github.com/home-assistant/core/pull/131165 +[#131170]: https://github.com/home-assistant/core/pull/131170 +[#131171]: https://github.com/home-assistant/core/pull/131171 +[#131172]: https://github.com/home-assistant/core/pull/131172 +[#131174]: https://github.com/home-assistant/core/pull/131174 +[#131175]: https://github.com/home-assistant/core/pull/131175 +[#131176]: https://github.com/home-assistant/core/pull/131176 +[#131178]: https://github.com/home-assistant/core/pull/131178 +[#131183]: https://github.com/home-assistant/core/pull/131183 +[#131185]: https://github.com/home-assistant/core/pull/131185 +[#131188]: https://github.com/home-assistant/core/pull/131188 +[#131191]: https://github.com/home-assistant/core/pull/131191 +[#131192]: https://github.com/home-assistant/core/pull/131192 +[#131196]: https://github.com/home-assistant/core/pull/131196 +[#131197]: https://github.com/home-assistant/core/pull/131197 +[#131198]: https://github.com/home-assistant/core/pull/131198 +[#131199]: https://github.com/home-assistant/core/pull/131199 +[#131202]: https://github.com/home-assistant/core/pull/131202 +[#131205]: https://github.com/home-assistant/core/pull/131205 +[#131207]: https://github.com/home-assistant/core/pull/131207 +[#131208]: https://github.com/home-assistant/core/pull/131208 +[#131209]: https://github.com/home-assistant/core/pull/131209 +[#131210]: https://github.com/home-assistant/core/pull/131210 +[#131211]: https://github.com/home-assistant/core/pull/131211 +[#131213]: https://github.com/home-assistant/core/pull/131213 +[#131217]: https://github.com/home-assistant/core/pull/131217 +[#131220]: https://github.com/home-assistant/core/pull/131220 +[#131221]: https://github.com/home-assistant/core/pull/131221 +[#131222]: https://github.com/home-assistant/core/pull/131222 +[#131228]: https://github.com/home-assistant/core/pull/131228 +[#131234]: https://github.com/home-assistant/core/pull/131234 +[#131235]: https://github.com/home-assistant/core/pull/131235 +[#131236]: https://github.com/home-assistant/core/pull/131236 +[#131239]: https://github.com/home-assistant/core/pull/131239 +[#131241]: https://github.com/home-assistant/core/pull/131241 +[#131244]: https://github.com/home-assistant/core/pull/131244 +[#131249]: https://github.com/home-assistant/core/pull/131249 +[#131251]: https://github.com/home-assistant/core/pull/131251 +[#131253]: https://github.com/home-assistant/core/pull/131253 +[#131254]: https://github.com/home-assistant/core/pull/131254 +[#131255]: https://github.com/home-assistant/core/pull/131255 +[#131256]: https://github.com/home-assistant/core/pull/131256 +[#131260]: https://github.com/home-assistant/core/pull/131260 +[#131265]: https://github.com/home-assistant/core/pull/131265 +[#131266]: https://github.com/home-assistant/core/pull/131266 +[#131267]: https://github.com/home-assistant/core/pull/131267 +[#131269]: https://github.com/home-assistant/core/pull/131269 +[#131270]: https://github.com/home-assistant/core/pull/131270 +[#131271]: https://github.com/home-assistant/core/pull/131271 +[#131272]: https://github.com/home-assistant/core/pull/131272 +[#131273]: https://github.com/home-assistant/core/pull/131273 +[#131275]: https://github.com/home-assistant/core/pull/131275 +[#131277]: https://github.com/home-assistant/core/pull/131277 +[#131278]: https://github.com/home-assistant/core/pull/131278 +[#131279]: https://github.com/home-assistant/core/pull/131279 +[#131280]: https://github.com/home-assistant/core/pull/131280 +[#131281]: https://github.com/home-assistant/core/pull/131281 +[#131283]: https://github.com/home-assistant/core/pull/131283 +[#131284]: https://github.com/home-assistant/core/pull/131284 +[#131285]: https://github.com/home-assistant/core/pull/131285 +[#131286]: https://github.com/home-assistant/core/pull/131286 +[#131287]: https://github.com/home-assistant/core/pull/131287 +[#131288]: https://github.com/home-assistant/core/pull/131288 +[#131289]: https://github.com/home-assistant/core/pull/131289 +[#131290]: https://github.com/home-assistant/core/pull/131290 +[#131292]: https://github.com/home-assistant/core/pull/131292 +[#131294]: https://github.com/home-assistant/core/pull/131294 +[#131295]: https://github.com/home-assistant/core/pull/131295 +[#131300]: https://github.com/home-assistant/core/pull/131300 +[#131303]: https://github.com/home-assistant/core/pull/131303 +[#131305]: https://github.com/home-assistant/core/pull/131305 +[#131306]: https://github.com/home-assistant/core/pull/131306 +[#131309]: https://github.com/home-assistant/core/pull/131309 +[#131310]: https://github.com/home-assistant/core/pull/131310 +[#131311]: https://github.com/home-assistant/core/pull/131311 +[#131312]: https://github.com/home-assistant/core/pull/131312 +[#131313]: https://github.com/home-assistant/core/pull/131313 +[#131315]: https://github.com/home-assistant/core/pull/131315 +[#131316]: https://github.com/home-assistant/core/pull/131316 +[#131324]: https://github.com/home-assistant/core/pull/131324 +[#131331]: https://github.com/home-assistant/core/pull/131331 +[#131332]: https://github.com/home-assistant/core/pull/131332 +[#131335]: https://github.com/home-assistant/core/pull/131335 +[#131336]: https://github.com/home-assistant/core/pull/131336 +[#131343]: https://github.com/home-assistant/core/pull/131343 +[#131345]: https://github.com/home-assistant/core/pull/131345 +[#131346]: https://github.com/home-assistant/core/pull/131346 +[#131356]: https://github.com/home-assistant/core/pull/131356 +[#131366]: https://github.com/home-assistant/core/pull/131366 +[#131368]: https://github.com/home-assistant/core/pull/131368 +[#131370]: https://github.com/home-assistant/core/pull/131370 +[#131372]: https://github.com/home-assistant/core/pull/131372 +[#131373]: https://github.com/home-assistant/core/pull/131373 +[#131379]: https://github.com/home-assistant/core/pull/131379 +[#131380]: https://github.com/home-assistant/core/pull/131380 +[#131385]: https://github.com/home-assistant/core/pull/131385 +[#131388]: https://github.com/home-assistant/core/pull/131388 +[#131391]: https://github.com/home-assistant/core/pull/131391 +[#131392]: https://github.com/home-assistant/core/pull/131392 +[#131394]: https://github.com/home-assistant/core/pull/131394 +[#131397]: https://github.com/home-assistant/core/pull/131397 +[#131398]: https://github.com/home-assistant/core/pull/131398 +[#131400]: https://github.com/home-assistant/core/pull/131400 +[#131402]: https://github.com/home-assistant/core/pull/131402 +[#131403]: https://github.com/home-assistant/core/pull/131403 +[#131404]: https://github.com/home-assistant/core/pull/131404 +[#131405]: https://github.com/home-assistant/core/pull/131405 +[#131406]: https://github.com/home-assistant/core/pull/131406 +[#131407]: https://github.com/home-assistant/core/pull/131407 +[#131411]: https://github.com/home-assistant/core/pull/131411 +[#131412]: https://github.com/home-assistant/core/pull/131412 +[#131414]: https://github.com/home-assistant/core/pull/131414 +[#131415]: https://github.com/home-assistant/core/pull/131415 +[#131419]: https://github.com/home-assistant/core/pull/131419 +[#131422]: https://github.com/home-assistant/core/pull/131422 +[#131423]: https://github.com/home-assistant/core/pull/131423 +[#131424]: https://github.com/home-assistant/core/pull/131424 +[#131426]: https://github.com/home-assistant/core/pull/131426 +[#131427]: https://github.com/home-assistant/core/pull/131427 +[#131428]: https://github.com/home-assistant/core/pull/131428 +[#131432]: https://github.com/home-assistant/core/pull/131432 +[#131434]: https://github.com/home-assistant/core/pull/131434 +[#131435]: https://github.com/home-assistant/core/pull/131435 +[#131436]: https://github.com/home-assistant/core/pull/131436 +[#131437]: https://github.com/home-assistant/core/pull/131437 +[#131440]: https://github.com/home-assistant/core/pull/131440 +[#131441]: https://github.com/home-assistant/core/pull/131441 +[#131443]: https://github.com/home-assistant/core/pull/131443 +[#131446]: https://github.com/home-assistant/core/pull/131446 +[#131461]: https://github.com/home-assistant/core/pull/131461 +[#131462]: https://github.com/home-assistant/core/pull/131462 +[#131466]: https://github.com/home-assistant/core/pull/131466 +[#131467]: https://github.com/home-assistant/core/pull/131467 +[#131470]: https://github.com/home-assistant/core/pull/131470 +[#131475]: https://github.com/home-assistant/core/pull/131475 +[#131478]: https://github.com/home-assistant/core/pull/131478 +[#131479]: https://github.com/home-assistant/core/pull/131479 +[#131480]: https://github.com/home-assistant/core/pull/131480 +[#131481]: https://github.com/home-assistant/core/pull/131481 +[#131483]: https://github.com/home-assistant/core/pull/131483 +[#131484]: https://github.com/home-assistant/core/pull/131484 +[#131485]: https://github.com/home-assistant/core/pull/131485 +[#131486]: https://github.com/home-assistant/core/pull/131486 +[#131487]: https://github.com/home-assistant/core/pull/131487 +[#131489]: https://github.com/home-assistant/core/pull/131489 +[#131502]: https://github.com/home-assistant/core/pull/131502 +[#131506]: https://github.com/home-assistant/core/pull/131506 +[#131511]: https://github.com/home-assistant/core/pull/131511 +[#131513]: https://github.com/home-assistant/core/pull/131513 +[#131514]: https://github.com/home-assistant/core/pull/131514 +[#131515]: https://github.com/home-assistant/core/pull/131515 +[#131518]: https://github.com/home-assistant/core/pull/131518 +[#131521]: https://github.com/home-assistant/core/pull/131521 +[#131523]: https://github.com/home-assistant/core/pull/131523 +[#131525]: https://github.com/home-assistant/core/pull/131525 +[#131526]: https://github.com/home-assistant/core/pull/131526 +[#131528]: https://github.com/home-assistant/core/pull/131528 +[#131530]: https://github.com/home-assistant/core/pull/131530 +[#131533]: https://github.com/home-assistant/core/pull/131533 +[#131535]: https://github.com/home-assistant/core/pull/131535 +[#131536]: https://github.com/home-assistant/core/pull/131536 +[#131538]: https://github.com/home-assistant/core/pull/131538 +[#131540]: https://github.com/home-assistant/core/pull/131540 +[#131547]: https://github.com/home-assistant/core/pull/131547 +[#131553]: https://github.com/home-assistant/core/pull/131553 +[#131555]: https://github.com/home-assistant/core/pull/131555 +[#131557]: https://github.com/home-assistant/core/pull/131557 +[#131563]: https://github.com/home-assistant/core/pull/131563 +[#131566]: https://github.com/home-assistant/core/pull/131566 +[#131567]: https://github.com/home-assistant/core/pull/131567 +[#131568]: https://github.com/home-assistant/core/pull/131568 +[#131570]: https://github.com/home-assistant/core/pull/131570 +[#131571]: https://github.com/home-assistant/core/pull/131571 +[#131572]: https://github.com/home-assistant/core/pull/131572 +[#131573]: https://github.com/home-assistant/core/pull/131573 +[#131574]: https://github.com/home-assistant/core/pull/131574 +[#131577]: https://github.com/home-assistant/core/pull/131577 +[#131585]: https://github.com/home-assistant/core/pull/131585 +[#131587]: https://github.com/home-assistant/core/pull/131587 +[#131588]: https://github.com/home-assistant/core/pull/131588 +[#131589]: https://github.com/home-assistant/core/pull/131589 +[#131590]: https://github.com/home-assistant/core/pull/131590 +[#131591]: https://github.com/home-assistant/core/pull/131591 +[#131592]: https://github.com/home-assistant/core/pull/131592 +[#131593]: https://github.com/home-assistant/core/pull/131593 +[#131596]: https://github.com/home-assistant/core/pull/131596 +[#131597]: https://github.com/home-assistant/core/pull/131597 +[#131600]: https://github.com/home-assistant/core/pull/131600 +[#131603]: https://github.com/home-assistant/core/pull/131603 +[#131604]: https://github.com/home-assistant/core/pull/131604 +[#131606]: https://github.com/home-assistant/core/pull/131606 +[#131607]: https://github.com/home-assistant/core/pull/131607 +[#131608]: https://github.com/home-assistant/core/pull/131608 +[#131611]: https://github.com/home-assistant/core/pull/131611 +[#131613]: https://github.com/home-assistant/core/pull/131613 +[#131615]: https://github.com/home-assistant/core/pull/131615 +[#131617]: https://github.com/home-assistant/core/pull/131617 +[#131619]: https://github.com/home-assistant/core/pull/131619 +[#131623]: https://github.com/home-assistant/core/pull/131623 +[#131625]: https://github.com/home-assistant/core/pull/131625 +[#131627]: https://github.com/home-assistant/core/pull/131627 +[#131628]: https://github.com/home-assistant/core/pull/131628 +[#131630]: https://github.com/home-assistant/core/pull/131630 +[#131632]: https://github.com/home-assistant/core/pull/131632 +[#131633]: https://github.com/home-assistant/core/pull/131633 +[#131638]: https://github.com/home-assistant/core/pull/131638 +[#131642]: https://github.com/home-assistant/core/pull/131642 +[#131650]: https://github.com/home-assistant/core/pull/131650 +[#131651]: https://github.com/home-assistant/core/pull/131651 +[#131657]: https://github.com/home-assistant/core/pull/131657 +[#131659]: https://github.com/home-assistant/core/pull/131659 +[#131662]: https://github.com/home-assistant/core/pull/131662 +[#131663]: https://github.com/home-assistant/core/pull/131663 +[#131664]: https://github.com/home-assistant/core/pull/131664 +[#131665]: https://github.com/home-assistant/core/pull/131665 +[#131666]: https://github.com/home-assistant/core/pull/131666 +[#131671]: https://github.com/home-assistant/core/pull/131671 +[#131672]: https://github.com/home-assistant/core/pull/131672 +[#131675]: https://github.com/home-assistant/core/pull/131675 +[#131680]: https://github.com/home-assistant/core/pull/131680 +[#131681]: https://github.com/home-assistant/core/pull/131681 +[#131683]: https://github.com/home-assistant/core/pull/131683 +[#131685]: https://github.com/home-assistant/core/pull/131685 +[#131690]: https://github.com/home-assistant/core/pull/131690 +[#131691]: https://github.com/home-assistant/core/pull/131691 +[#131701]: https://github.com/home-assistant/core/pull/131701 +[#131714]: https://github.com/home-assistant/core/pull/131714 +[#131719]: https://github.com/home-assistant/core/pull/131719 +[#131722]: https://github.com/home-assistant/core/pull/131722 +[#131724]: https://github.com/home-assistant/core/pull/131724 +[#131725]: https://github.com/home-assistant/core/pull/131725 +[#131726]: https://github.com/home-assistant/core/pull/131726 +[#131727]: https://github.com/home-assistant/core/pull/131727 +[#131736]: https://github.com/home-assistant/core/pull/131736 +[#131742]: https://github.com/home-assistant/core/pull/131742 +[#98118]: https://github.com/home-assistant/core/pull/98118 +[@ALERTua]: https://github.com/ALERTua +[@Anonym-tsk]: https://github.com/Anonym-tsk +[@Bre77]: https://github.com/Bre77 +[@CFenner]: https://github.com/CFenner +[@DCSBL]: https://github.com/DCSBL +[@Danielhiversen]: https://github.com/Danielhiversen +[@DeerMaximum]: https://github.com/DeerMaximum +[@Diegorro98]: https://github.com/Diegorro98 +[@ErikElkins]: https://github.com/ErikElkins +[@EuleMitKeule]: https://github.com/EuleMitKeule +[@FedDam]: https://github.com/FedDam +[@JakeMartin-ICL]: https://github.com/JakeMartin-ICL +[@Khabi]: https://github.com/Khabi +[@LG-ThinQ-Integration]: https://github.com/LG-ThinQ-Integration +[@Lash-L]: https://github.com/Lash-L +[@Lektrico]: https://github.com/Lektrico +[@LennP]: https://github.com/LennP +[@Links2004]: https://github.com/Links2004 +[@LouisChrist]: https://github.com/LouisChrist +[@MahrWe]: https://github.com/MahrWe +[@MarcoBuster]: https://github.com/MarcoBuster +[@MarcoGlauser]: https://github.com/MarcoGlauser +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MindFreeze]: https://github.com/MindFreeze +[@N3rdix]: https://github.com/N3rdix +[@NoRi2909]: https://github.com/NoRi2909 +[@Noltari]: https://github.com/Noltari +[@PeteRager]: https://github.com/PeteRager +[@Petro31]: https://github.com/Petro31 +[@RaHehl]: https://github.com/RaHehl +[@Santobert]: https://github.com/Santobert +[@Shutgun]: https://github.com/Shutgun +[@TheJulianJES]: https://github.com/TheJulianJES +[@Thomas55555]: https://github.com/Thomas55555 +[@YogevBokobza]: https://github.com/YogevBokobza +[@abmantis]: https://github.com/abmantis +[@alengwenus]: https://github.com/alengwenus +[@alexandrecuer]: https://github.com/alexandrecuer +[@allenporter]: https://github.com/allenporter +[@andrew-codechimp]: https://github.com/andrew-codechimp +[@autinerd]: https://github.com/autinerd +[@avee87]: https://github.com/avee87 +[@balloob]: https://github.com/balloob +[@barryvdh]: https://github.com/barryvdh +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@blackovercoat]: https://github.com/blackovercoat +[@bobpaul]: https://github.com/bobpaul +[@boswelja]: https://github.com/boswelja +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@bvanelli]: https://github.com/bvanelli +[@catsmanac]: https://github.com/catsmanac +[@cdce8p]: https://github.com/cdce8p +[@cedeherd]: https://github.com/cedeherd +[@cereal2nd]: https://github.com/cereal2nd +[@cgarwood]: https://github.com/cgarwood +[@ckm2k1]: https://github.com/ckm2k1 +[@crevetor]: https://github.com/crevetor +[@danzel]: https://github.com/danzel +[@dgomes]: https://github.com/dgomes +[@dknowles2]: https://github.com/dknowles2 +[@dnikles]: https://github.com/dnikles +[@dontinelli]: https://github.com/dontinelli +[@dotvav]: https://github.com/dotvav +[@dunnmj]: https://github.com/dunnmj +[@edenhaus]: https://github.com/edenhaus +[@eifinger]: https://github.com/eifinger +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@farmio]: https://github.com/farmio +[@frenck]: https://github.com/frenck +[@frwickst]: https://github.com/frwickst +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@greyeee]: https://github.com/greyeee +[@hahn-th]: https://github.com/hahn-th +[@iMicknl]: https://github.com/iMicknl +[@jb101010-2]: https://github.com/jb101010-2 +[@jbouwh]: https://github.com/jbouwh +[@jesperraemaekers]: https://github.com/jesperraemaekers +[@jesserockz]: https://github.com/jesserockz +[@jnsgruk]: https://github.com/jnsgruk +[@joostlek]: https://github.com/joostlek +[@jozefKruszynski]: https://github.com/jozefKruszynski +[@jpbede]: https://github.com/jpbede +[@jschlyter]: https://github.com/jschlyter +[@jwillemsen]: https://github.com/jwillemsen +[@karlbeecken]: https://github.com/karlbeecken +[@karwosts]: https://github.com/karwosts +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@klejejs]: https://github.com/klejejs +[@kongo09]: https://github.com/kongo09 +[@lanthaler]: https://github.com/lanthaler +[@liudger]: https://github.com/liudger +[@lotharbach]: https://github.com/lotharbach +[@ludeeus]: https://github.com/ludeeus +[@lutzvahl]: https://github.com/lutzvahl +[@madpilot]: https://github.com/madpilot +[@magicalyak]: https://github.com/magicalyak +[@mammuth]: https://github.com/mammuth +[@marcelveldt]: https://github.com/marcelveldt +[@marcodutto]: https://github.com/marcodutto +[@maxshcherbina]: https://github.com/maxshcherbina +[@mdegat01]: https://github.com/mdegat01 +[@miaucl]: https://github.com/miaucl +[@mib1185]: https://github.com/mib1185 +[@mikey0000]: https://github.com/mikey0000 +[@mj23000]: https://github.com/mj23000 +[@mrspouse]: https://github.com/mrspouse +[@murfy76]: https://github.com/murfy76 +[@mxr]: https://github.com/mxr +[@nasWebio]: https://github.com/nasWebio +[@noahhusby]: https://github.com/noahhusby +[@nromyn]: https://github.com/nromyn +[@oltdaniel]: https://github.com/oltdaniel +[@peroo]: https://github.com/peroo +[@piitaya]: https://github.com/piitaya +[@prabhjotsbhatia-ca]: https://github.com/prabhjotsbhatia-ca +[@puddly]: https://github.com/puddly +[@rappenze]: https://github.com/rappenze +[@reey]: https://github.com/reey +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@sdb9696]: https://github.com/sdb9696 +[@silamon]: https://github.com/silamon +[@squishykid]: https://github.com/squishykid +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@tdfountain]: https://github.com/tdfountain +[@tetienne]: https://github.com/tetienne +[@thecode]: https://github.com/thecode +[@tr4nt0r]: https://github.com/tr4nt0r +[@tsvi]: https://github.com/tsvi +[@zweckj]: https://github.com/zweckj diff --git a/source/images/blog/2024-12/llm-fallback.png b/source/images/blog/2024-12/llm-fallback.png new file mode 100644 index 0000000000000000000000000000000000000000..62a577a5143cfd42894d0ebfb00dbe9cfc34b1ca GIT binary patch literal 42746 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�#}`m>=(NmdlgAq@PwcJ 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

g`oFnXPT`J#V3*NWaN$P<*+Q{oaXh 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

    ?c+@cRqz&GNEQ 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 z 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 z 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�s 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 literal 0 HcmV?d00001 diff --git a/source/images/blog/2024-12/social.jpg b/source/images/blog/2024-12/social.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9edef331686f27fe2e7a64d7f5bacd85a7b679aa GIT binary patch literal 201339 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

    4}awJl<)?p9& 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 z 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 Date: Wed, 27 Nov 2024 18:57:16 +0100 Subject: [PATCH 002/169] 2024.12: Sync with codebase --- CODEOWNERS | 16 +++++++++++----- source/_integrations/acaia.markdown | 1 + source/_integrations/accuweather.markdown | 1 - source/_integrations/acer_projector.markdown | 1 + source/_integrations/actiontec.markdown | 1 + source/_integrations/ads.markdown | 1 + source/_integrations/advantage_air.markdown | 1 - source/_integrations/airly.markdown | 1 - source/_integrations/alpha_vantage.markdown | 1 + source/_integrations/amazon_polly.markdown | 1 + source/_integrations/amcrest.markdown | 1 + source/_integrations/ampio.markdown | 1 + source/_integrations/androidtv_remote.markdown | 1 - source/_integrations/anel_pwrctrl.markdown | 1 + source/_integrations/apache_kafka.markdown | 1 + source/_integrations/apcupsd.markdown | 1 - source/_integrations/apprise.markdown | 1 + source/_integrations/aprs.markdown | 1 + source/_integrations/aqualogic.markdown | 1 + source/_integrations/aquostv.markdown | 1 + source/_integrations/arest.markdown | 1 + source/_integrations/arris_tg2492lg.markdown | 1 + source/_integrations/aruba.markdown | 1 + source/_integrations/arwn.markdown | 1 + source/_integrations/aten_pe.markdown | 1 + source/_integrations/atome.markdown | 1 + source/_integrations/avea.markdown | 1 + source/_integrations/avion.markdown | 1 + source/_integrations/aws.markdown | 1 + source/_integrations/axis.markdown | 1 - source/_integrations/azure_service_bus.markdown | 1 + source/_integrations/baidu.markdown | 1 + source/_integrations/bang_olufsen.markdown | 4 ++-- source/_integrations/bbox.markdown | 1 + source/_integrations/beewi_smartclim.markdown | 1 + source/_integrations/bitcoin.markdown | 1 + source/_integrations/bizkaibus.markdown | 1 + source/_integrations/blackbird.markdown | 1 + source/_integrations/blinksticklight.markdown | 1 + source/_integrations/blockchain.markdown | 1 + .../_integrations/bluetooth_le_tracker.markdown | 1 + source/_integrations/bluetooth_tracker.markdown | 1 + source/_integrations/bond.markdown | 1 - source/_integrations/brother.markdown | 1 - source/_integrations/bt_home_hub_5.markdown | 1 + source/_integrations/bt_smarthub.markdown | 1 + source/_integrations/ccm15.markdown | 2 +- source/_integrations/chacon_dio.markdown | 2 +- source/_integrations/channels.markdown | 1 + source/_integrations/cisco_ios.markdown | 1 + .../cisco_mobility_express.markdown | 1 + source/_integrations/cisco_webex_teams.markdown | 1 + source/_integrations/citybikes.markdown | 1 + source/_integrations/clementine.markdown | 1 + source/_integrations/clickatell.markdown | 1 + source/_integrations/clicksend.markdown | 1 + source/_integrations/clicksend_tts.markdown | 1 + source/_integrations/cmus.markdown | 1 + .../_integrations/comed_hourly_pricing.markdown | 1 + source/_integrations/comelit.markdown | 1 - source/_integrations/comfoconnect.markdown | 1 + source/_integrations/compensation.markdown | 1 + source/_integrations/concord232.markdown | 1 + source/_integrations/cppm_tracker.markdown | 1 + source/_integrations/cups.markdown | 1 + source/_integrations/currencylayer.markdown | 1 + source/_integrations/danfoss_air.markdown | 1 + source/_integrations/datadog.markdown | 1 + source/_integrations/ddwrt.markdown | 1 + source/_integrations/deako.markdown | 5 ++--- source/_integrations/deconz.markdown | 1 - source/_integrations/decora.markdown | 1 + source/_integrations/decora_wifi.markdown | 1 + source/_integrations/delijn.markdown | 1 + source/_integrations/denon.markdown | 1 + .../_integrations/devolo_home_control.markdown | 1 - .../_integrations/devolo_home_network.markdown | 1 - source/_integrations/digital_ocean.markdown | 1 + source/_integrations/directv.markdown | 1 - source/_integrations/discogs.markdown | 1 + source/_integrations/dlib_face_detect.markdown | 1 + source/_integrations/dlib_face_identify.markdown | 1 + source/_integrations/dlna_dms.markdown | 1 - source/_integrations/dominos.markdown | 1 + source/_integrations/doods.markdown | 1 + source/_integrations/dovado.markdown | 1 + source/_integrations/dsmr_reader.markdown | 1 - .../_integrations/dublin_bus_transport.markdown | 1 + source/_integrations/duckdns.markdown | 1 + source/_integrations/duotecno.markdown | 1 - source/_integrations/dweet.markdown | 1 + source/_integrations/easyenergy.markdown | 1 - source/_integrations/ebox.markdown | 1 + source/_integrations/ebusd.markdown | 1 + source/_integrations/ecoal_boiler.markdown | 1 + source/_integrations/ecobee.markdown | 1 - .../_integrations/eddystone_temperature.markdown | 1 + source/_integrations/edimax.markdown | 1 + source/_integrations/egardia.markdown | 1 + source/_integrations/elgato.markdown | 1 - source/_integrations/eliqonline.markdown | 1 + source/_integrations/elv.markdown | 1 + source/_integrations/emby.markdown | 1 + source/_integrations/emoncms_history.markdown | 1 + source/_integrations/energyzero.markdown | 1 - .../entur_public_transport.markdown | 1 + source/_integrations/envisalink.markdown | 1 + source/_integrations/ephember.markdown | 1 + source/_integrations/eq3btsmart.markdown | 1 - source/_integrations/esphome.markdown | 1 - source/_integrations/etherscan.markdown | 1 + source/_integrations/eufy.markdown | 1 + source/_integrations/everlights.markdown | 1 + source/_integrations/evohome.markdown | 1 + source/_integrations/facebook.markdown | 1 + source/_integrations/fail2ban.markdown | 1 + source/_integrations/familyhub.markdown | 1 + source/_integrations/fastdotcom.markdown | 1 - source/_integrations/ffmpeg_motion.markdown | 1 + source/_integrations/ffmpeg_noise.markdown | 1 + source/_integrations/fido.markdown | 1 + source/_integrations/fints.markdown | 1 + source/_integrations/firmata.markdown | 1 + source/_integrations/fixer.markdown | 1 + source/_integrations/fleetgo.markdown | 1 + source/_integrations/flexit.markdown | 1 + source/_integrations/flic.markdown | 1 + source/_integrations/flock.markdown | 1 + source/_integrations/folder.markdown | 1 + source/_integrations/foobot.markdown | 1 + source/_integrations/forecast_solar.markdown | 1 - source/_integrations/fortios.markdown | 1 + source/_integrations/foursquare.markdown | 1 + source/_integrations/free_mobile.markdown | 1 + source/_integrations/freedns.markdown | 1 + source/_integrations/fritzbox.markdown | 1 - source/_integrations/fronius.markdown | 1 - source/_integrations/fujitsu_fglair.markdown | 5 ++--- source/_integrations/fully_kiosk.markdown | 1 + source/_integrations/futurenow.markdown | 1 + source/_integrations/fyta.markdown | 1 - source/_integrations/garadget.markdown | 1 + source/_integrations/gc100.markdown | 1 + source/_integrations/gdacs.markdown | 1 - source/_integrations/geo_rss_events.markdown | 1 + source/_integrations/geonetnz_quakes.markdown | 1 - source/_integrations/gios.markdown | 1 - source/_integrations/gitlab_ci.markdown | 1 + source/_integrations/gitter.markdown | 1 + source/_integrations/go2rtc.markdown | 2 +- source/_integrations/goalzero.markdown | 1 - .../_integrations/google_assistant_sdk.markdown | 1 - .../google_generative_ai_conversation.markdown | 1 - source/_integrations/google_maps.markdown | 1 + source/_integrations/google_photos.markdown | 2 -- source/_integrations/google_pubsub.markdown | 1 + source/_integrations/google_wifi.markdown | 1 + source/_integrations/graphite.markdown | 1 + source/_integrations/greeneye_monitor.markdown | 1 + source/_integrations/greenwave.markdown | 1 + source/_integrations/gstreamer.markdown | 1 + source/_integrations/gtfs.markdown | 1 + source/_integrations/habitica.markdown | 9 ++++----- source/_integrations/harman_kardon_avr.markdown | 1 + source/_integrations/haveibeenpwned.markdown | 1 + source/_integrations/hddtemp.markdown | 1 + source/_integrations/hdmi_cec.markdown | 1 + source/_integrations/heatmiser.markdown | 1 + source/_integrations/hikvision.markdown | 1 + source/_integrations/hikvisioncam.markdown | 1 + source/_integrations/hitron_coda.markdown | 1 + source/_integrations/home_connect.markdown | 2 ++ source/_integrations/homematic.markdown | 1 + source/_integrations/homematicip_cloud.markdown | 1 - source/_integrations/homewizard.markdown | 1 + source/_integrations/horizon.markdown | 1 + source/_integrations/hp_ilo.markdown | 1 + source/_integrations/hue.markdown | 1 - source/_integrations/hyperion.markdown | 1 - source/_integrations/iammeter.markdown | 1 + source/_integrations/idasen_desk.markdown | 1 - source/_integrations/idteck_prox.markdown | 1 + source/_integrations/iglo.markdown | 1 + source/_integrations/ign_sismologia.markdown | 1 + source/_integrations/ihc.markdown | 1 + source/_integrations/imgw_pib.markdown | 1 - source/_integrations/influxdb.markdown | 1 + source/_integrations/intesishome.markdown | 1 + source/_integrations/iperf3.markdown | 1 + .../_integrations/irish_rail_transport.markdown | 1 + source/_integrations/iron_os.markdown | 2 +- source/_integrations/iskra.markdown | 2 +- source/_integrations/itach.markdown | 1 + source/_integrations/itunes.markdown | 1 + source/_integrations/jewish_calendar.markdown | 1 - source/_integrations/joaoapps_join.markdown | 1 + source/_integrations/kaiterra.markdown | 1 + source/_integrations/kankun.markdown | 1 + source/_integrations/keba.markdown | 1 + source/_integrations/kef.markdown | 1 + source/_integrations/keyboard.markdown | 1 + source/_integrations/keyboard_remote.markdown | 1 + source/_integrations/kira.markdown | 1 + source/_integrations/kiwi.markdown | 1 + source/_integrations/knx.markdown | 1 - source/_integrations/kwb.markdown | 1 + source/_integrations/lacrosse.markdown | 1 + source/_integrations/lametric.markdown | 1 - source/_integrations/lannouncer.markdown | 1 + source/_integrations/lektrico.markdown | 1 + source/_integrations/lg_netcast.markdown | 1 - source/_integrations/lg_thinq.markdown | 8 +++++--- source/_integrations/lifx_cloud.markdown | 1 + source/_integrations/lightwave.markdown | 1 + source/_integrations/limitlessled.markdown | 1 + source/_integrations/linksys_smart.markdown | 1 + source/_integrations/linode.markdown | 1 + source/_integrations/linux_battery.markdown | 1 + source/_integrations/lirc.markdown | 1 + source/_integrations/litejet.markdown | 1 - source/_integrations/llamalab_automate.markdown | 1 + source/_integrations/local_file.markdown | 1 + source/_integrations/logentries.markdown | 1 + source/_integrations/london_air.markdown | 1 + source/_integrations/london_underground.markdown | 1 + source/_integrations/luci.markdown | 1 + source/_integrations/luftdaten.markdown | 1 - source/_integrations/lw12wifi.markdown | 1 + source/_integrations/lyric.markdown | 1 - source/_integrations/manual_mqtt.markdown | 1 + source/_integrations/marytts.markdown | 1 + source/_integrations/matrix.markdown | 1 + source/_integrations/maxcube.markdown | 1 + source/_integrations/mediaroom.markdown | 1 + source/_integrations/melissa.markdown | 1 + source/_integrations/meraki.markdown | 1 + source/_integrations/message_bird.markdown | 1 + source/_integrations/meteoalarm.markdown | 1 + source/_integrations/mfi.markdown | 1 + source/_integrations/microsoft.markdown | 1 + source/_integrations/microsoft_face.markdown | 1 + .../_integrations/microsoft_face_detect.markdown | 1 + .../microsoft_face_identify.markdown | 1 + source/_integrations/minecraft_server.markdown | 1 - source/_integrations/minio.markdown | 1 + source/_integrations/mochad.markdown | 1 + source/_integrations/modbus.markdown | 1 - source/_integrations/mqtt.markdown | 1 - source/_integrations/mqtt_eventstream.markdown | 1 + source/_integrations/mqtt_json.markdown | 1 + source/_integrations/mqtt_room.markdown | 1 + source/_integrations/mqtt_statestream.markdown | 1 + source/_integrations/msteams.markdown | 1 + source/_integrations/mvglive.markdown | 1 + source/_integrations/mycroft.markdown | 1 + source/_integrations/mythicbeastsdns.markdown | 1 + source/_integrations/nad.markdown | 1 + source/_integrations/nam.markdown | 1 - source/_integrations/namecheapdns.markdown | 1 + source/_integrations/nasweb.markdown | 1 - source/_integrations/neato.markdown | 2 -- .../nederlandse_spoorwegen.markdown | 1 + source/_integrations/ness_alarm.markdown | 1 + source/_integrations/nest.markdown | 1 - source/_integrations/netdata.markdown | 1 + source/_integrations/netio.markdown | 1 + source/_integrations/neurio_energy.markdown | 1 + source/_integrations/nextdns.markdown | 1 - source/_integrations/nightscout.markdown | 1 - source/_integrations/niko_home_control.markdown | 1 + source/_integrations/nilu.markdown | 1 + source/_integrations/nissan_leaf.markdown | 1 + source/_integrations/nmbs.markdown | 1 + source/_integrations/no_ip.markdown | 1 + source/_integrations/noaa_tides.markdown | 1 + source/_integrations/nordpool.markdown | 3 ++- source/_integrations/norway_air.markdown | 1 + source/_integrations/notify_events.markdown | 1 + source/_integrations/nsw_fuel_station.markdown | 1 + .../nsw_rural_fire_service_feed.markdown | 1 + source/_integrations/numato.markdown | 1 + source/_integrations/nws.markdown | 1 - source/_integrations/nx584.markdown | 1 + source/_integrations/oasa_telematics.markdown | 1 + source/_integrations/oem.markdown | 1 + source/_integrations/ohmconnect.markdown | 1 + source/_integrations/ombi.markdown | 1 + source/_integrations/onewire.markdown | 1 - source/_integrations/openalpr_cloud.markdown | 1 + source/_integrations/openerz.markdown | 1 + source/_integrations/openevse.markdown | 1 + .../_integrations/openhardwaremonitor.markdown | 1 + source/_integrations/opensensemap.markdown | 1 + source/_integrations/opnsense.markdown | 1 + source/_integrations/opple.markdown | 1 + source/_integrations/oru.markdown | 1 + source/_integrations/orvibo.markdown | 1 + source/_integrations/osramlightify.markdown | 1 + source/_integrations/p1_monitor.markdown | 1 - source/_integrations/palazzetti.markdown | 4 +++- source/_integrations/panasonic_bluray.markdown | 1 + source/_integrations/pandora.markdown | 1 + source/_integrations/panel_custom.markdown | 2 +- source/_integrations/pencom.markdown | 1 + source/_integrations/picotts.markdown | 1 + source/_integrations/pilight.markdown | 1 + source/_integrations/pioneer.markdown | 1 + source/_integrations/piper.markdown | 1 + source/_integrations/pjlink.markdown | 1 + source/_integrations/pocketcasts.markdown | 1 + source/_integrations/point.markdown | 1 - source/_integrations/proliphix.markdown | 1 + source/_integrations/prometheus.markdown | 1 + source/_integrations/prowl.markdown | 1 + source/_integrations/proxmoxve.markdown | 1 + source/_integrations/proxy.markdown | 1 + .../_integrations/pulseaudio_loopback.markdown | 1 + source/_integrations/pure_energie.markdown | 1 - source/_integrations/push.markdown | 1 + source/_integrations/pushsafer.markdown | 1 + source/_integrations/pvoutput.markdown | 1 - .../_integrations/pvpc_hourly_pricing.markdown | 1 - source/_integrations/pyload.markdown | 1 - source/_integrations/qld_bushfire.markdown | 1 + source/_integrations/qrcode.markdown | 1 + source/_integrations/quantum_gateway.markdown | 1 + source/_integrations/qvr_pro.markdown | 1 + source/_integrations/qwikswitch.markdown | 1 + source/_integrations/raincloud.markdown | 1 + source/_integrations/raspyrfm.markdown | 1 + source/_integrations/rdw.markdown | 1 - source/_integrations/recswitch.markdown | 1 + source/_integrations/reddit.markdown | 1 + source/_integrations/rejseplanen.markdown | 1 + source/_integrations/remember_the_milk.markdown | 1 + source/_integrations/remote_rpi_gpio.markdown | 1 + source/_integrations/renault.markdown | 1 - source/_integrations/reolink.markdown | 2 +- source/_integrations/repetier.markdown | 1 + source/_integrations/rflink.markdown | 7 +++---- source/_integrations/ring.markdown | 1 - source/_integrations/ripple.markdown | 1 + source/_integrations/risco.markdown | 1 - .../_integrations/rituals_perfume_genie.markdown | 1 - source/_integrations/rmvtransport.markdown | 1 + source/_integrations/rocketchat.markdown | 1 + source/_integrations/roku.markdown | 1 - source/_integrations/route53.markdown | 1 + source/_integrations/rpi_camera.markdown | 1 + source/_integrations/rtorrent.markdown | 1 + source/_integrations/russound_rio.markdown | 1 - source/_integrations/russound_rnet.markdown | 1 + source/_integrations/sabnzbd.markdown | 2 +- source/_integrations/saj.markdown | 1 + source/_integrations/satel_integra.markdown | 1 + source/_integrations/schluter.markdown | 1 + source/_integrations/scsgate.markdown | 1 + source/_integrations/sendgrid.markdown | 1 + source/_integrations/sensibo.markdown | 1 - source/_integrations/serial_pm.markdown | 1 + source/_integrations/sesame.markdown | 1 + source/_integrations/seven_segments.markdown | 1 + source/_integrations/shelly.markdown | 1 - source/_integrations/shodan.markdown | 1 + source/_integrations/sigfox.markdown | 1 + source/_integrations/sighthound.markdown | 1 + source/_integrations/signal_messenger.markdown | 1 + source/_integrations/sinch.markdown | 1 + source/_integrations/sisyphus.markdown | 1 + source/_integrations/sky_hub.markdown | 1 + source/_integrations/sky_remote.markdown | 9 +++------ source/_integrations/skybeacon.markdown | 1 + source/_integrations/slide.markdown | 1 + source/_integrations/smarttub.markdown | 1 - source/_integrations/smtp.markdown | 1 + source/_integrations/snips.markdown | 1 + source/_integrations/snmp.markdown | 1 + source/_integrations/solaredge_local.markdown | 1 + source/_integrations/solarlog.markdown | 1 + source/_integrations/sonarr.markdown | 1 - source/_integrations/songpal.markdown | 1 - source/_integrations/sony_projector.markdown | 1 + source/_integrations/spaceapi.markdown | 1 + source/_integrations/spc.markdown | 1 + source/_integrations/splunk.markdown | 1 + source/_integrations/spotify.markdown | 3 +-- source/_integrations/starlingbank.markdown | 1 + source/_integrations/starlink.markdown | 1 - source/_integrations/startca.markdown | 1 + source/_integrations/statistics.markdown | 1 - source/_integrations/statsd.markdown | 1 + source/_integrations/stiebel_eltron.markdown | 1 + source/_integrations/supervisord.markdown | 1 + source/_integrations/supla.markdown | 1 + .../swiss_hydrological_data.markdown | 1 + source/_integrations/swisscom.markdown | 1 + source/_integrations/switchbot_cloud.markdown | 2 +- source/_integrations/switcher_kis.markdown | 1 - source/_integrations/switchmate.markdown | 1 + source/_integrations/syncthing.markdown | 1 - source/_integrations/synology_chat.markdown | 1 + source/_integrations/synology_srm.markdown | 1 + source/_integrations/syslog.markdown | 1 + source/_integrations/system_bridge.markdown | 1 - source/_integrations/tailscale.markdown | 1 - source/_integrations/tailwind.markdown | 1 - source/_integrations/tank_utility.markdown | 1 + source/_integrations/tankerkoenig.markdown | 1 - source/_integrations/tapsaff.markdown | 1 + source/_integrations/tcp.markdown | 1 + source/_integrations/technove.markdown | 1 - source/_integrations/ted5000.markdown | 1 + source/_integrations/telegram.markdown | 1 + source/_integrations/telegram_bot.markdown | 1 + source/_integrations/tellduslive.markdown | 1 - source/_integrations/tellstick.markdown | 1 + source/_integrations/telnet.markdown | 1 + source/_integrations/temper.markdown | 1 + source/_integrations/template.markdown | 1 - source/_integrations/tensorflow.markdown | 1 + source/_integrations/tesla_fleet.markdown | 1 - source/_integrations/teslemetry.markdown | 1 - source/_integrations/tessie.markdown | 1 - source/_integrations/tfiac.markdown | 1 + source/_integrations/thermoworks_smoke.markdown | 1 + source/_integrations/thingspeak.markdown | 1 + source/_integrations/thinkingcleaner.markdown | 1 + source/_integrations/thomson.markdown | 1 + source/_integrations/tibber.markdown | 1 - source/_integrations/tikteck.markdown | 1 + source/_integrations/tmb.markdown | 1 + source/_integrations/tomato.markdown | 1 + source/_integrations/torque.markdown | 1 + source/_integrations/touchline.markdown | 1 + source/_integrations/tplink.markdown | 1 - source/_integrations/tplink_lte.markdown | 1 + source/_integrations/transport_nsw.markdown | 1 + source/_integrations/travisci.markdown | 1 + source/_integrations/twentemilieu.markdown | 1 - source/_integrations/twilio_call.markdown | 1 + source/_integrations/twilio_sms.markdown | 1 + source/_integrations/twitter.markdown | 1 + source/_integrations/ubus.markdown | 1 + source/_integrations/uk_transport.markdown | 1 + source/_integrations/unifi.markdown | 1 - source/_integrations/unifi_direct.markdown | 1 + source/_integrations/unifiled.markdown | 1 + source/_integrations/unifiprotect.markdown | 2 ++ source/_integrations/upc_connect.markdown | 1 + source/_integrations/uptimerobot.markdown | 1 - .../_integrations/usgs_earthquakes_feed.markdown | 1 + source/_integrations/uvc.markdown | 1 + source/_integrations/vallox.markdown | 2 +- source/_integrations/vasttrafik.markdown | 1 + source/_integrations/versasense.markdown | 1 + source/_integrations/viaggiatreno.markdown | 1 + source/_integrations/vivotek.markdown | 1 + source/_integrations/vizio.markdown | 1 - source/_integrations/vlc.markdown | 1 + source/_integrations/vodafone_station.markdown | 1 - source/_integrations/voicerss.markdown | 1 + source/_integrations/volkszaehler.markdown | 1 + source/_integrations/vulcan.markdown | 1 - source/_integrations/vultr.markdown | 1 + source/_integrations/w800rf32.markdown | 1 + source/_integrations/waterfurnace.markdown | 1 + source/_integrations/watson_iot.markdown | 1 + source/_integrations/watson_tts.markdown | 1 + source/_integrations/webostv.markdown | 1 - source/_integrations/whisper.markdown | 1 + source/_integrations/wilight.markdown | 1 - source/_integrations/wirelesstag.markdown | 1 + source/_integrations/withings.markdown | 1 - source/_integrations/wiz.markdown | 1 - source/_integrations/wled.markdown | 1 - source/_integrations/worldtidesinfo.markdown | 1 + source/_integrations/worxlandroid.markdown | 1 + source/_integrations/ws66i.markdown | 1 - source/_integrations/wsdot.markdown | 1 + source/_integrations/x10.markdown | 1 + source/_integrations/xeoma.markdown | 1 + source/_integrations/xiaomi.markdown | 1 + source/_integrations/xiaomi_tv.markdown | 1 + source/_integrations/xmpp.markdown | 1 + source/_integrations/xs1.markdown | 1 + source/_integrations/yamaha.markdown | 1 + source/_integrations/yandex_transport.markdown | 1 + source/_integrations/yandextts.markdown | 1 + source/_integrations/yeelight.markdown | 1 - source/_integrations/yeelightsunflower.markdown | 1 + source/_integrations/yi.markdown | 1 + source/_integrations/zabbix.markdown | 1 + source/_integrations/zengge.markdown | 1 + source/_integrations/zestimate.markdown | 1 + source/_integrations/zhong_hong.markdown | 1 + source/_integrations/ziggo_mediabox_xl.markdown | 1 + source/_integrations/zodiac.markdown | 1 - source/_integrations/zoneminder.markdown | 1 + source/_integrations/zwave_js.markdown | 1 - 499 files changed, 422 insertions(+), 153 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index fa637d18601..08de6b73e71 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -10,6 +10,7 @@ # Pages source/_integrations/3_day_blinds.markdown @starkillerOG source/_integrations/abode.markdown @shred86 +source/_integrations/acaia.markdown @zweckj source/_integrations/accuweather.markdown @bieniu source/_integrations/acmeda.markdown @atmurray source/_integrations/acomax.markdown @starkillerOG @@ -288,7 +289,7 @@ source/_integrations/fortios.markdown @kimfrellsen source/_integrations/foscam.markdown @krmarien source/_integrations/freebox.markdown @hacf-fr @Quentame source/_integrations/freedompro.markdown @stefano055415 -source/_integrations/fritz.markdown @mammuth @AaronDavidSchneider @chemelli74 @mib1185 +source/_integrations/fritz.markdown @AaronDavidSchneider @chemelli74 @mib1185 source/_integrations/fritzbox.markdown @mib1185 @flabbamann source/_integrations/fritzbox_callmonitor.markdown @cdce8p source/_integrations/fronius.markdown @farmio @@ -314,6 +315,7 @@ source/_integrations/geonetnz_volcano.markdown @exxamalte source/_integrations/gios.markdown @bieniu source/_integrations/github.markdown @timmo001 @ludeeus source/_integrations/glances.markdown @engrbm87 +source/_integrations/go2rtc.markdown @home-assistant/core source/_integrations/goalzero.markdown @tkdrob source/_integrations/gogogate2.markdown @vangorra source/_integrations/goodwe.markdown @mletenay @starkillerOG @@ -334,7 +336,7 @@ source/_integrations/gree.markdown @cmroche source/_integrations/greeneye_monitor.markdown @jkeljo source/_integrations/group.markdown @home-assistant/core source/_integrations/guardian.markdown @bachya -source/_integrations/habitica.markdown @ASMfreaK @leikoilja @tr4nt0r +source/_integrations/habitica.markdown @tr4nt0r source/_integrations/hardware.markdown @home-assistant/core source/_integrations/harmony.markdown @ehendrix23 @bdraco @mkeesey @Aohzan source/_integrations/hassio.markdown @home-assistant/supervisor @@ -377,6 +379,7 @@ source/_integrations/humidifier.markdown @home-assistant/core @Shulyaka source/_integrations/hunterdouglas_powerview.markdown @bdraco @kingy444 @trullock source/_integrations/hurrican_shutters_wholesale.markdown @starkillerOG source/_integrations/husqvarna_automower.markdown @Thomas55555 +source/_integrations/husqvarna_automower_ble.markdown @alistair23 source/_integrations/huum.markdown @frwickst source/_integrations/hvv_departures.markdown @vigonotion source/_integrations/hydrawise.markdown @dknowles2 @thomaskistler @ptcryan @@ -466,6 +469,7 @@ source/_integrations/legrand.markdown @cgtobi source/_integrations/lektrico.markdown @lektrico source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave source/_integrations/lg_netcast.markdown @Drafteed @splinter98 +source/_integrations/lg_thinq.markdown @LG-ThinQ-Integration source/_integrations/lidarr.markdown @tkdrob source/_integrations/lifx.markdown @Djelibeybi source/_integrations/light.markdown @home-assistant/core @@ -548,7 +552,7 @@ source/_integrations/mystrom.markdown @fabaff source/_integrations/myuplink.markdown @pajzo @astrandb source/_integrations/nam.markdown @bieniu source/_integrations/nanoleaf.markdown @milanmeu @joostlek -source/_integrations/neato.markdown @Santobert +source/_integrations/nasweb.markdown @nasWebio source/_integrations/nederlandse_spoorwegen.markdown @YarmoM source/_integrations/ness_alarm.markdown @nickw444 source/_integrations/nest.markdown @allenporter @@ -572,6 +576,7 @@ source/_integrations/nissan_leaf.markdown @filcole source/_integrations/nmbs.markdown @thibmaek source/_integrations/noaa_tides.markdown @jdelaney72 source/_integrations/nobo_hub.markdown @echoromeo @oyvindwe +source/_integrations/nordpool.markdown @gjohansson-ST source/_integrations/notify.markdown @home-assistant/core source/_integrations/notify_events.markdown @matrozov @papajojo source/_integrations/notion.markdown @bachya @@ -711,7 +716,6 @@ source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Orhideous source/_integrations/roon.markdown @pavoni source/_integrations/rpi_power.markdown @shenxn @swetoast source/_integrations/rss_feed_template.markdown @home-assistant/core -source/_integrations/rtsp_to_webrtc.markdown @allenporter source/_integrations/ruckus_unleashed.markdown @lanrat @ms264556 @gabe565 source/_integrations/russound_rio.markdown @noahhusby source/_integrations/ruuvi_gateway.markdown @akx @@ -764,6 +768,7 @@ source/_integrations/sinch.markdown @bendikrb source/_integrations/siren.markdown @home-assistant/core @raman325 source/_integrations/sisyphus.markdown @jkeljo source/_integrations/sky_hub.markdown @rogerselwyn +source/_integrations/sky_remote.markdown @dunnmj @saty9 source/_integrations/skybell.markdown @tkdrob source/_integrations/slack.markdown @tkdrob @fletcherau source/_integrations/sleepiq.markdown @mfugate1 @kbickar @@ -847,7 +852,7 @@ source/_integrations/tautulli.markdown @ludeeus @tkdrob source/_integrations/technove.markdown @Moustachauve source/_integrations/tedee.markdown @patrickhilker @zweckj source/_integrations/tellduslive.markdown @fredrike -source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core +source/_integrations/template.markdown @PhracturedBlue @home-assistant/core source/_integrations/tesla_fleet.markdown @Bre77 source/_integrations/tesla_wall_connector.markdown @einarhauks source/_integrations/teslemetry.markdown @Bre77 @@ -894,6 +899,7 @@ source/_integrations/ukraine_alarm.markdown @PaulAnnekov source/_integrations/unifi.markdown @Kane610 source/_integrations/unifi_direct.markdown @tofuSCHNITZEL source/_integrations/unifiled.markdown @florisvdk +source/_integrations/unifiprotect.markdown @RaHehl source/_integrations/upb.markdown @gwww source/_integrations/upc_connect.markdown @pvizeli @fabaff source/_integrations/upcloud.markdown @scop diff --git a/source/_integrations/acaia.markdown b/source/_integrations/acaia.markdown index 6dfe4c8d934..fbc214a0680 100644 --- a/source/_integrations/acaia.markdown +++ b/source/_integrations/acaia.markdown @@ -12,6 +12,7 @@ ha_domain: acaia ha_platforms: - binary_sensor - button + - diagnostics - sensor ha_bluetooth: true ha_codeowners: diff --git a/source/_integrations/accuweather.markdown b/source/_integrations/accuweather.markdown index 130a7a0937a..d774586dab4 100644 --- a/source/_integrations/accuweather.markdown +++ b/source/_integrations/accuweather.markdown @@ -9,7 +9,6 @@ ha_config_flow: true ha_codeowners: - '@bieniu' ha_domain: accuweather -ha_quality_scale: platinum ha_platforms: - diagnostics - sensor diff --git a/source/_integrations/acer_projector.markdown b/source/_integrations/acer_projector.markdown index f156f91af45..b6aea80c832 100644 --- a/source/_integrations/acer_projector.markdown +++ b/source/_integrations/acer_projector.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `acer_projector` switch platform allows you to control the state of RS232 connected projectors from [Acer](https://www.acer.com/). diff --git a/source/_integrations/actiontec.markdown b/source/_integrations/actiontec.markdown index a61d58fab6b..636ceb182a2 100644 --- a/source/_integrations/actiontec.markdown +++ b/source/_integrations/actiontec.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Actiontec** {% term integration %} allows you to detect presence by looking at devices connected to an [Actiontec](https://www.actiontec.com/) device. diff --git a/source/_integrations/ads.markdown b/source/_integrations/ads.markdown index e552014bf00..ca35f9251f2 100644 --- a/source/_integrations/ads.markdown +++ b/source/_integrations/ads.markdown @@ -26,6 +26,7 @@ related: title: Configuration file ha_codeowners: - '@mrpasztoradam' +ha_quality_scale: legacy --- The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.com/en-en/products/automation/twincat/) and other devices implementing this interface. diff --git a/source/_integrations/advantage_air.markdown b/source/_integrations/advantage_air.markdown index 33079df8502..45ec2fb5538 100644 --- a/source/_integrations/advantage_air.markdown +++ b/source/_integrations/advantage_air.markdown @@ -16,7 +16,6 @@ ha_config_flow: true ha_codeowners: - '@Bre77' ha_domain: advantage_air -ha_quality_scale: platinum ha_platforms: - binary_sensor - climate diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index ec0aad26d7b..67d2cb3fa12 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -9,7 +9,6 @@ ha_config_flow: true ha_codeowners: - '@bieniu' ha_domain: airly -ha_quality_scale: platinum ha_platforms: - diagnostics - sensor diff --git a/source/_integrations/alpha_vantage.markdown b/source/_integrations/alpha_vantage.markdown index 32dbeefc073..c659bc62981 100644 --- a/source/_integrations/alpha_vantage.markdown +++ b/source/_integrations/alpha_vantage.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. This platform also provides detail about exchange rates. diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index 9e552cb010e..6c41f8b4847 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -14,6 +14,7 @@ ha_codeowners: related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output. diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index 10008bb9b6f..7acef1bc7e0 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -20,6 +20,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `amcrest` camera platform allows you to integrate your [Amcrest](https://amcrest.com/) or Dahua IP camera or doorbell in Home Assistant. diff --git a/source/_integrations/ampio.markdown b/source/_integrations/ampio.markdown index 939bee08844..865f946effe 100644 --- a/source/_integrations/ampio.markdown +++ b/source/_integrations/ampio.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ampio` air quality platform will query the open data API of [ampio.pl](http://smog.ampio.pl/) to monitor air quality sensor station. diff --git a/source/_integrations/androidtv_remote.markdown b/source/_integrations/androidtv_remote.markdown index 8d6d9c23af4..73f6de751d6 100644 --- a/source/_integrations/androidtv_remote.markdown +++ b/source/_integrations/androidtv_remote.markdown @@ -10,7 +10,6 @@ ha_config_flow: true ha_codeowners: - '@tronikos' - '@Drafteed' -ha_quality_scale: platinum ha_domain: androidtv_remote ha_zeroconf: true ha_platforms: diff --git a/source/_integrations/anel_pwrctrl.markdown b/source/_integrations/anel_pwrctrl.markdown index 88ec2658284..c96c36803ae 100644 --- a/source/_integrations/anel_pwrctrl.markdown +++ b/source/_integrations/anel_pwrctrl.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `anel_pwrctrl` switch platform allows you to control [ANEL PwrCtrl](https://en.anel.eu/index.htm?src=/produkte/produkte.htm) devices on firmware 6.x and older. [ANEL PwrCtrl](https://en.anel.eu/index.htm?src=/produkte/produkte.htm) devices on firmware 7.x are not supported. diff --git a/source/_integrations/apache_kafka.markdown b/source/_integrations/apache_kafka.markdown index 414750ec58e..6e669871933 100644 --- a/source/_integrations/apache_kafka.markdown +++ b/source/_integrations/apache_kafka.markdown @@ -9,6 +9,7 @@ ha_codeowners: ha_domain: apache_kafka ha_iot_class: Local Push ha_integration_type: integration +ha_quality_scale: legacy --- The **Apache Kafka** {% term integration %} sends all state changes to a diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index 819e1e30254..090ae342cbd 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -16,7 +16,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration -ha_quality_scale: silver --- [apcupsd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) on the APC device. diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown index 0e008ec0515..ac57fb83a91 100644 --- a/source/_integrations/apprise.markdown +++ b/source/_integrations/apprise.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The [Apprise service](https://github.com/caronc/apprise/) is an all-in-one solution to open up Home Assistant to _just about_ every Notification platform (such as Amazon SNS, Discord, Telegram, Slack, MSTeams, Twilio, etc.) diff --git a/source/_integrations/aprs.markdown b/source/_integrations/aprs.markdown index 8ac6ebee773..f7c4f027703 100644 --- a/source/_integrations/aprs.markdown +++ b/source/_integrations/aprs.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `aprs` [(Automatic Packet Reporting System)](https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System) device tracker integration connects to the [APRS-IS](http://aprs-is.net/) network for tracking amateur radio devices. diff --git a/source/_integrations/aqualogic.markdown b/source/_integrations/aqualogic.markdown index ac195df9f6d..aa1f67e07e9 100644 --- a/source/_integrations/aqualogic.markdown +++ b/source/_integrations/aqualogic.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The AquaLogic integration provides connectivity to a Hayward/Goldline AquaLogic/ProLogic pool controller. Note that an RS-485 to Ethernet adapter connected to the pool controller is required. diff --git a/source/_integrations/aquostv.markdown b/source/_integrations/aquostv.markdown index 41bcd6a7403..9de90c11049 100644 --- a/source/_integrations/aquostv.markdown +++ b/source/_integrations/aquostv.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `aquostv` platform allows you to control a [Sharp Aquos TV](https://global.sharp/aquos/index.html). diff --git a/source/_integrations/arest.markdown b/source/_integrations/arest.markdown index ccd6552d2d3..e3c69d04678 100644 --- a/source/_integrations/arest.markdown +++ b/source/_integrations/arest.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/arris_tg2492lg.markdown b/source/_integrations/arris_tg2492lg.markdown index 709ccc15148..a56af77f0f3 100644 --- a/source/_integrations/arris_tg2492lg.markdown +++ b/source/_integrations/arris_tg2492lg.markdown @@ -14,6 +14,7 @@ ha_integration_type: hub related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This platform allows you to detect presence by looking at connected devices to an Arris TG2492LG router. diff --git a/source/_integrations/aruba.markdown b/source/_integrations/aruba.markdown index e5a3bacc37d..a1142e5c21c 100644 --- a/source/_integrations/aruba.markdown +++ b/source/_integrations/aruba.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This platform allows you to detect presence by looking at connected devices to an [Aruba Instant](https://www.arubanetworks.com/products/networking/aruba-instant/) device. diff --git a/source/_integrations/arwn.markdown b/source/_integrations/arwn.markdown index 5641d2faa01..ac27a86bd36 100644 --- a/source/_integrations/arwn.markdown +++ b/source/_integrations/arwn.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `arwn` sensor platform is a client for the [Ambient Radio Weather Network](https://github.com/sdague/arwn) project. This collects weather station data and makes it available in an MQTT subtree. diff --git a/source/_integrations/aten_pe.markdown b/source/_integrations/aten_pe.markdown index 71d508be66d..e674ee38cfb 100644 --- a/source/_integrations/aten_pe.markdown +++ b/source/_integrations/aten_pe.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `aten_pe` {% term integration %} lets you control [ATEN Rack PDUs](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/) from Home Assistant. diff --git a/source/_integrations/atome.markdown b/source/_integrations/atome.markdown index 952db5f788e..5c5943b2a58 100644 --- a/source/_integrations/atome.markdown +++ b/source/_integrations/atome.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `atome` sensor platform is retrieving the consumption of your home from the [Direct Energy Atome electric meter](https://total.direct-energie.com/particuliers/electricite/compteur-linky/atome). diff --git a/source/_integrations/avea.markdown b/source/_integrations/avea.markdown index d0d84e556e8..e188855ee70 100644 --- a/source/_integrations/avea.markdown +++ b/source/_integrations/avea.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [Elgato Avea](https://www.evehome.com/en/news/elgato-avea-transform-your-home) is a Bluetooth light bulb that is no longer supported by the manufacturer. The `avea` integration allows you to control all your Avea bulbs with Home Assistant. diff --git a/source/_integrations/avion.markdown b/source/_integrations/avion.markdown index 5932e8c2a9b..3f5ccd02baa 100644 --- a/source/_integrations/avion.markdown +++ b/source/_integrations/avion.markdown @@ -9,6 +9,7 @@ ha_domain: avion ha_platforms: - light ha_integration_type: integration +ha_quality_scale: legacy --- Support for the Avi-on Bluetooth dimmer switch [Avi-on](https://avi-on.com/). diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index d6b0df57f1b..ed1556f5ef9 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `aws` integration provides a single place to interact with [Amazon Web Services](https://aws.amazon.com/). Currently it provides a notification platform that can send a message to [AWS SQS](https://aws.amazon.com/sqs/), [AWS SNS](https://aws.amazon.com/sns/), or invoke [AWS Lambda](https://aws.amazon.com/lambda/) functions. diff --git a/source/_integrations/axis.markdown b/source/_integrations/axis.markdown index b17b1a1308a..a33b0195055 100644 --- a/source/_integrations/axis.markdown +++ b/source/_integrations/axis.markdown @@ -13,7 +13,6 @@ ha_codeowners: - '@Kane610' ha_domain: axis ha_qa_scale: platinum -ha_quality_scale: platinum ha_zeroconf: true ha_ssdp: true ha_dhcp: true diff --git a/source/_integrations/azure_service_bus.markdown b/source/_integrations/azure_service_bus.markdown index 4d714089060..8505e44c63d 100644 --- a/source/_integrations/azure_service_bus.markdown +++ b/source/_integrations/azure_service_bus.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/products/service-bus/) from within Home Assistant. diff --git a/source/_integrations/baidu.markdown b/source/_integrations/baidu.markdown index e938ec2f958..48831f3c78b 100644 --- a/source/_integrations/baidu.markdown +++ b/source/_integrations/baidu.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices. diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown index dc1148d6b98..9522176b06d 100644 --- a/source/_integrations/bang_olufsen.markdown +++ b/source/_integrations/bang_olufsen.markdown @@ -8,10 +8,10 @@ ha_release: 2024.2 ha_iot_class: Local Push ha_domain: bang_olufsen ha_platforms: - - media_player - diagnostics + - media_player ha_codeowners: - - "@mj23000" + - '@mj23000' ha_config_flow: true ha_zeroconf: true ha_integration_type: device diff --git a/source/_integrations/bbox.markdown b/source/_integrations/bbox.markdown index 4485298921c..7029b251693 100644 --- a/source/_integrations/bbox.markdown +++ b/source/_integrations/bbox.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `bbox` {% term integration %} uses the [Bbox Modem Router](https://www.bouyguestelecom.fr/offres-internet/bbox-fit) from the French Internet provider Bouygues Telecom. Sensors are mainly bandwidth measures. diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index 06543cbda56..3931ca57970 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `beewi_smartclim` sensor platform allows one to monitor room or external temperature and humidity. The BeeWi SmartClim BLE is a Bluetooth Low Energy sensor device that monitors temperature from a room or a garden from your smartphone by using an APP. Use this integration to track these metrics from any location thanks to Home Assistant, as well as to create some automation scripts based on your room's temperature. diff --git a/source/_integrations/bitcoin.markdown b/source/_integrations/bitcoin.markdown index 3536899ceb5..7dab4df454c 100644 --- a/source/_integrations/bitcoin.markdown +++ b/source/_integrations/bitcoin.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network. diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown index e119e330ca4..f0a290f3a96 100644 --- a/source/_integrations/bizkaibus.markdown +++ b/source/_integrations/bizkaibus.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `bizkaibus` sensor will give you the time until the next bus in the selected stop. diff --git a/source/_integrations/blackbird.markdown b/source/_integrations/blackbird.markdown index 7dcf6021c17..e107a6609e6 100644 --- a/source/_integrations/blackbird.markdown +++ b/source/_integrations/blackbird.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) (8x8) using a serial or IP connection, this integration does not support the 4x4 matrix switch. diff --git a/source/_integrations/blinksticklight.markdown b/source/_integrations/blinksticklight.markdown index 106a3921654..50b5ab93838 100644 --- a/source/_integrations/blinksticklight.markdown +++ b/source/_integrations/blinksticklight.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `blinkstick` platform lets you control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. diff --git a/source/_integrations/blockchain.markdown b/source/_integrations/blockchain.markdown index 8e9a1cbf444..242cd92c61c 100644 --- a/source/_integrations/blockchain.markdown +++ b/source/_integrations/blockchain.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `Blockchain` sensor platform displays Bitcoin wallet balances from [blockchain.com](https://blockchain.com). diff --git a/source/_integrations/bluetooth_le_tracker.markdown b/source/_integrations/bluetooth_le_tracker.markdown index 83cbd4e2994..bd6b2d3e4ca 100644 --- a/source/_integrations/bluetooth_le_tracker.markdown +++ b/source/_integrations/bluetooth_le_tracker.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This tracker discovers new devices on boot and in regular intervals and tracks Bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other. diff --git a/source/_integrations/bluetooth_tracker.markdown b/source/_integrations/bluetooth_tracker.markdown index 6134b1a0ae6..b8676ddfbf0 100644 --- a/source/_integrations/bluetooth_tracker.markdown +++ b/source/_integrations/bluetooth_tracker.markdown @@ -9,6 +9,7 @@ ha_domain: bluetooth_tracker ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`. diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index 8b3c83b33fe..ee9284b22da 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -17,7 +17,6 @@ ha_codeowners: - '@joshs85' - '@marciogranzotto' ha_config_flow: true -ha_quality_scale: platinum ha_zeroconf: true ha_platforms: - button diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown index 4da9e143685..f3577dfbeac 100644 --- a/source/_integrations/brother.markdown +++ b/source/_integrations/brother.markdown @@ -9,7 +9,6 @@ ha_config_flow: true ha_codeowners: - '@bieniu' ha_domain: brother -ha_quality_scale: platinum ha_zeroconf: true ha_platforms: - diagnostics diff --git a/source/_integrations/bt_home_hub_5.markdown b/source/_integrations/bt_home_hub_5.markdown index 1f8d6cc8c3a..ed67f5e032b 100644 --- a/source/_integrations/bt_home_hub_5.markdown +++ b/source/_integrations/bt_home_hub_5.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router. diff --git a/source/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown index e68cf408993..46ecaffb4ab 100644 --- a/source/_integrations/bt_smarthub.markdown +++ b/source/_integrations/bt_smarthub.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This platform offers presence detection by looking at connected devices to a [BT Smart Hub](https://en.wikipedia.org/wiki/BT_Smart_Hub) based router. diff --git a/source/_integrations/ccm15.markdown b/source/_integrations/ccm15.markdown index 2a8dc78990c..62197b91778 100644 --- a/source/_integrations/ccm15.markdown +++ b/source/_integrations/ccm15.markdown @@ -1,5 +1,5 @@ --- -title: Midea CCM15 AC Controller +title: Midea ccm15 AC Controller description: Instructions on how to integrate a Midea CCM15 module into Home Assistant. ha_category: - Climate diff --git a/source/_integrations/chacon_dio.markdown b/source/_integrations/chacon_dio.markdown index 0bbcbc645af..8f63f9b5a38 100644 --- a/source/_integrations/chacon_dio.markdown +++ b/source/_integrations/chacon_dio.markdown @@ -1,5 +1,5 @@ --- -title: Chacon Dio +title: Chacon DiO description: Instructions on how to integrate your Chacon Dio devices within Home Assistant. ha_category: - Cover diff --git a/source/_integrations/channels.markdown b/source/_integrations/channels.markdown index 042d63e63db..139960f106a 100644 --- a/source/_integrations/channels.markdown +++ b/source/_integrations/channels.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The Channels platform allows you to control [Channels](https://getchannels.com/) from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network. diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown index 65007d28d5f..c9d23e996ec 100644 --- a/source/_integrations/cisco_ios.markdown +++ b/source/_integrations/cisco_ios.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This is a presence detection scanner for [Cisco IOS](https://www.cisco.com/) devices. diff --git a/source/_integrations/cisco_mobility_express.markdown b/source/_integrations/cisco_mobility_express.markdown index 54a9381afc9..1744d4d59e6 100644 --- a/source/_integrations/cisco_mobility_express.markdown +++ b/source/_integrations/cisco_mobility_express.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This is a presence detection scanner for [Cisco](https://www.cisco.com) Mobility Express wireless controllers. diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index 08f8a50f808..a5f70291168 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark or Cisco Webex Teams). diff --git a/source/_integrations/citybikes.markdown b/source/_integrations/citybikes.markdown index ecf6e153b2c..8f03b23b4c0 100644 --- a/source/_integrations/citybikes.markdown +++ b/source/_integrations/citybikes.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `citybikes` sensor platform monitors bike availability at bike sharing stations in a chosen area. The data is provided by [CityBikes](https://citybik.es/#about), which supports bike sharing systems all around the world. diff --git a/source/_integrations/clementine.markdown b/source/_integrations/clementine.markdown index f2681947033..401016b25b4 100644 --- a/source/_integrations/clementine.markdown +++ b/source/_integrations/clementine.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `clementine` platform allows you to control a [Clementine Music Player](https://www.clementine-player.org). diff --git a/source/_integrations/clickatell.markdown b/source/_integrations/clickatell.markdown index 989357900ee..ca22c8ea71d 100644 --- a/source/_integrations/clickatell.markdown +++ b/source/_integrations/clickatell.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `clickatell` platform uses [Clickatell](https://www.clickatell.com) to deliver SMS notifications from Home Assistant. diff --git a/source/_integrations/clicksend.markdown b/source/_integrations/clicksend.markdown index 32530ab156d..7497fd44334 100644 --- a/source/_integrations/clicksend.markdown +++ b/source/_integrations/clicksend.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver notifications from Home Assistant. diff --git a/source/_integrations/clicksend_tts.markdown b/source/_integrations/clicksend_tts.markdown index 8d75574c042..d960f5b95d2 100644 --- a/source/_integrations/clicksend_tts.markdown +++ b/source/_integrations/clicksend_tts.markdown @@ -9,6 +9,7 @@ ha_domain: clicksend_tts ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. diff --git a/source/_integrations/cmus.markdown b/source/_integrations/cmus.markdown index 93388762eb3..99954043468 100644 --- a/source/_integrations/cmus.markdown +++ b/source/_integrations/cmus.markdown @@ -9,6 +9,7 @@ ha_domain: cmus ha_platforms: - media_player ha_integration_type: integration +ha_quality_scale: legacy --- The `cmus` platform allows you to control a [cmus](https://cmus.github.io/) music player on a remote or local machine from Home Assistant. diff --git a/source/_integrations/comed_hourly_pricing.markdown b/source/_integrations/comed_hourly_pricing.markdown index 8f0e0351a1a..7819389de0b 100644 --- a/source/_integrations/comed_hourly_pricing.markdown +++ b/source/_integrations/comed_hourly_pricing.markdown @@ -9,6 +9,7 @@ ha_domain: comed_hourly_pricing ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant. diff --git a/source/_integrations/comelit.markdown b/source/_integrations/comelit.markdown index 947bb6dc8b8..d4791c03906 100644 --- a/source/_integrations/comelit.markdown +++ b/source/_integrations/comelit.markdown @@ -26,7 +26,6 @@ ha_platforms: - sensor - switch ha_integration_type: hub -ha_quality_scale: silver --- The Comelit SimpleHome integration allows you to control your [Comelit home automation devices](https://comelitgroup.it/installatore/offerta/domotica-e-smart-home). diff --git a/source/_integrations/comfoconnect.markdown b/source/_integrations/comfoconnect.markdown index 08318ce2fe8..9025273c54f 100644 --- a/source/_integrations/comfoconnect.markdown +++ b/source/_integrations/comfoconnect.markdown @@ -13,6 +13,7 @@ ha_platforms: - fan - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `comfoconnect` integration lets you control Zehnder ComfoAir [Q350](https://products.zehnder-systems.com/en/product/zehnder-comfoair-q350-tr)/[Q450](https://products.zehnder-systems.com/en/product/zehnder-comfoair-q450-tr)/[Q600](https://products.zehnder-systems.com/en/product/zehnder-comfoair-q600-st) diff --git a/source/_integrations/compensation.markdown b/source/_integrations/compensation.markdown index 94bf44ee218..ff3f4938810 100644 --- a/source/_integrations/compensation.markdown +++ b/source/_integrations/compensation.markdown @@ -12,6 +12,7 @@ ha_domain: compensation ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The **Compensation** {% term integration %} consumes the {% term state %} from other {% term sensors %}. It exports the compensated value as state in a separate {% term entity %} and the following values as attributes: `entity_id` and `coefficients`. A single polynomial, linear by default, is fit to all data points provided. diff --git a/source/_integrations/concord232.markdown b/source/_integrations/concord232.markdown index 89d8b926d47..aea5e2dcd61 100644 --- a/source/_integrations/concord232.markdown +++ b/source/_integrations/concord232.markdown @@ -11,6 +11,7 @@ ha_platforms: - alarm_control_panel - binary_sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4. diff --git a/source/_integrations/cppm_tracker.markdown b/source/_integrations/cppm_tracker.markdown index 4b33fe0f047..5c55c667499 100644 --- a/source/_integrations/cppm_tracker.markdown +++ b/source/_integrations/cppm_tracker.markdown @@ -9,6 +9,7 @@ ha_domain: cppm_tracker ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- This platform allows you to detect presence by looking at connected devices to [Aruba Clearpass](https://www.arubanetworks.com/products/security/network-access-control/). diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown index 224a87d6c82..9439839d4d5 100644 --- a/source/_integrations/cups.markdown +++ b/source/_integrations/cups.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `cups` sensor platform uses the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the information using a CUPS server or by communicating directly with the printer with the Internet Printing Protocol. diff --git a/source/_integrations/currencylayer.markdown b/source/_integrations/currencylayer.markdown index bcdd1efd378..76b64fca151 100644 --- a/source/_integrations/currencylayer.markdown +++ b/source/_integrations/currencylayer.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 250 requests per month and updates daily. diff --git a/source/_integrations/danfoss_air.markdown b/source/_integrations/danfoss_air.markdown index 493ab27fc53..9c39088545c 100644 --- a/source/_integrations/danfoss_air.markdown +++ b/source/_integrations/danfoss_air.markdown @@ -14,6 +14,7 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_quality_scale: legacy --- The **Danfoss Air** {% term integration %} allows you to access information from your Danfoss Air HRV unit. diff --git a/source/_integrations/datadog.markdown b/source/_integrations/datadog.markdown index 3c263f77fd2..bcb770a41fc 100644 --- a/source/_integrations/datadog.markdown +++ b/source/_integrations/datadog.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Datadog** {% term integration %} sends all state changes to [Datadog](https://www.datadoghq.com/) using a [Datadog Agent](https://docs.datadoghq.com/guides/basic_agent_usage/). diff --git a/source/_integrations/ddwrt.markdown b/source/_integrations/ddwrt.markdown index 0db25a330ad..0544bd1c962 100644 --- a/source/_integrations/ddwrt.markdown +++ b/source/_integrations/ddwrt.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ddwrt` {% term integration %} offers presence detection by looking at connected devices to a [DD-WRT](https://dd-wrt.com/) based router. diff --git a/source/_integrations/deako.markdown b/source/_integrations/deako.markdown index 462290d0df2..22d47c3ae5e 100644 --- a/source/_integrations/deako.markdown +++ b/source/_integrations/deako.markdown @@ -1,10 +1,10 @@ --- -title: Deako Smart Lighting +title: Deako description: Instructions on how to integrate Deako Smart Lighting into Home Assistant. ha_category: - Switch ha_iot_class: Local Polling -ha_release: "2024.10" +ha_release: '2024.10' ha_domain: deako ha_config_flow: true ha_platforms: @@ -33,4 +33,3 @@ Features not currently supported: - Deako groups - Deako scenes - diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 44005df3412..efda77ab5d9 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -16,7 +16,6 @@ ha_category: ha_release: 0.61 ha_iot_class: Local Push ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@Kane610' ha_domain: deconz diff --git a/source/_integrations/decora.markdown b/source/_integrations/decora.markdown index 2672db9bf95..e678ec742e6 100644 --- a/source/_integrations/decora.markdown +++ b/source/_integrations/decora.markdown @@ -9,6 +9,7 @@ ha_domain: decora ha_platforms: - light ha_integration_type: integration +ha_quality_scale: legacy --- Support for the Decora Bluetooth dimmer switch [Leviton](https://www.leviton.com/en/products/residential/dimmers/automation-smart-home/decora-digital-with-bluetooth-dimmers#t=Products&sort=%40wcs_site_tree_rank%20ascending&layout=card). diff --git a/source/_integrations/decora_wifi.markdown b/source/_integrations/decora_wifi.markdown index 70a270c4014..ed78193941a 100644 --- a/source/_integrations/decora_wifi.markdown +++ b/source/_integrations/decora_wifi.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Support for [Leviton Decora Wi-Fi](https://www.leviton.com/products/residential/automation-smart-home/decora-smart-all/decora-smart-with-wifi-technology) dimmers/switches via the MyLeviton API. diff --git a/source/_integrations/delijn.markdown b/source/_integrations/delijn.markdown index 00e10c726f5..26f89ebfa90 100644 --- a/source/_integrations/delijn.markdown +++ b/source/_integrations/delijn.markdown @@ -16,6 +16,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `delijn` {% term integration %} will give you the departure time of the next bus, tram or subway at a specific stop of the De Lijn public transport network in Flanders (Belgium). diff --git a/source/_integrations/denon.markdown b/source/_integrations/denon.markdown index b935e08574f..912b74672f2 100644 --- a/source/_integrations/denon.markdown +++ b/source/_integrations/denon.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `denon` {% term integration %} allows you to control a Denon Network Receiver from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. diff --git a/source/_integrations/devolo_home_control.markdown b/source/_integrations/devolo_home_control.markdown index 7f15a6ada03..c73f19b179a 100755 --- a/source/_integrations/devolo_home_control.markdown +++ b/source/_integrations/devolo_home_control.markdown @@ -16,7 +16,6 @@ ha_codeowners: - '@2Fake' - '@Shutgun' ha_domain: devolo_home_control -ha_quality_scale: gold ha_platforms: - binary_sensor - climate diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index 30e26d925d6..4fd793bbf55 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -16,7 +16,6 @@ ha_codeowners: - '@2Fake' - '@Shutgun' ha_domain: devolo_home_network -ha_quality_scale: platinum ha_platforms: - binary_sensor - button diff --git a/source/_integrations/digital_ocean.markdown b/source/_integrations/digital_ocean.markdown index 0a26ce8659e..1e5cc4b12e5 100644 --- a/source/_integrations/digital_ocean.markdown +++ b/source/_integrations/digital_ocean.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Digital Ocean** {% term integration %} allows you to access the information about your [Digital Ocean](https://www.digitalocean.com/) droplets from Home Assistant. diff --git a/source/_integrations/directv.markdown b/source/_integrations/directv.markdown index 9cc6838cf70..a1900f247c4 100644 --- a/source/_integrations/directv.markdown +++ b/source/_integrations/directv.markdown @@ -8,7 +8,6 @@ ha_release: 0.25 ha_iot_class: Local Polling ha_domain: directv ha_config_flow: true -ha_quality_scale: silver ha_ssdp: true ha_platforms: - media_player diff --git a/source/_integrations/discogs.markdown b/source/_integrations/discogs.markdown index b16da11b67c..4527be87037 100644 --- a/source/_integrations/discogs.markdown +++ b/source/_integrations/discogs.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `discogs` {% term integration %} allows you to see the current amount of records in your [Discogs](https://www.discogs.com) collection. diff --git a/source/_integrations/dlib_face_detect.markdown b/source/_integrations/dlib_face_detect.markdown index 7fb9c035e05..a50462bd2df 100644 --- a/source/_integrations/dlib_face_detect.markdown +++ b/source/_integrations/dlib_face_detect.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `dlib_face_detect` image processing {% term integration %} allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes. diff --git a/source/_integrations/dlib_face_identify.markdown b/source/_integrations/dlib_face_identify.markdown index 90eb68e062d..1b6ef3dc42d 100644 --- a/source/_integrations/dlib_face_identify.markdown +++ b/source/_integrations/dlib_face_identify.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `dlib_face_identify` image processing {% term integration %} allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you to identify persons on camera and fire an event with identify persons. diff --git a/source/_integrations/dlna_dms.markdown b/source/_integrations/dlna_dms.markdown index d6f1b7e278d..1a14af9f903 100644 --- a/source/_integrations/dlna_dms.markdown +++ b/source/_integrations/dlna_dms.markdown @@ -10,7 +10,6 @@ ha_codeowners: - '@chishm' ha_domain: dlna_dms ha_ssdp: true -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/dominos.markdown b/source/_integrations/dominos.markdown index f0e243642a4..40a3e77ac55 100644 --- a/source/_integrations/dominos.markdown +++ b/source/_integrations/dominos.markdown @@ -7,6 +7,7 @@ ha_iot_class: Cloud Polling ha_release: 0.59 ha_domain: dominos ha_integration_type: integration +ha_quality_scale: legacy --- The **Dominos Pizza** {% term integration %} allows you to order Dominos Pizza from within your Home Assistant scripts and automations. diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index b781c3b7c9c..807fdf49d2f 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `doods` image processing {% term integration %} allows you to detect and recognize objects in a camera image using [DOODS](https://github.com/snowzach/doods/). The state of the entity is the number of objects detected and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. diff --git a/source/_integrations/dovado.markdown b/source/_integrations/dovado.markdown index d26b55fd385..5a2bb9fe56e 100644 --- a/source/_integrations/dovado.markdown +++ b/source/_integrations/dovado.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Dovado** {% term integration %} manages communication with the [Dovado](https://www.dovado.com/) router. diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index e3d1be83de9..e91215d9fd2 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -17,7 +17,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration -ha_quality_scale: gold --- The `dsmr_reader` sensor integration allows you to easily add all sensors that [DSMR Reader](https://dsmr-reader.readthedocs.io/en/latest/) (Dutch Smart Meter Requirements Reader) exposes to MQTT. It adds a separate sensor for every field in the MQTT topics which is named `sensor_dsmr_`. diff --git a/source/_integrations/dublin_bus_transport.markdown b/source/_integrations/dublin_bus_transport.markdown index 6dd238d25c8..2a6fc34fab3 100644 --- a/source/_integrations/dublin_bus_transport.markdown +++ b/source/_integrations/dublin_bus_transport.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `dublin_bus_transport` {% term integration %} will give you the time until the next two departures from a Dublin bus stop using the RTPI information. diff --git a/source/_integrations/duckdns.markdown b/source/_integrations/duckdns.markdown index b9608a96eda..09e1d6baf3d 100644 --- a/source/_integrations/duckdns.markdown +++ b/source/_integrations/duckdns.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The DuckDNS {% term integration %} allows you to keep your DuckDNS subdomain always in sync with your public IP address. [DuckDNS](https://www.duckdns.org) is a free service that allows you to bind your own favorite subdomain under `duckdns.org` to the public IP address in use from your router, even though such address is dynamically allocated by your internet service provider and therefore changes over time. diff --git a/source/_integrations/duotecno.markdown b/source/_integrations/duotecno.markdown index 8a3c7e8792e..292e40c6928 100644 --- a/source/_integrations/duotecno.markdown +++ b/source/_integrations/duotecno.markdown @@ -19,7 +19,6 @@ ha_platforms: - light - switch ha_integration_type: integration -ha_quality_scale: silver --- The **Duotecno** {% term integration %} can be used to control [Duotecno](https://www.duotecno.be/) nodes in Home Assistant. diff --git a/source/_integrations/dweet.markdown b/source/_integrations/dweet.markdown index 5f7b2bd7383..34149c3602c 100644 --- a/source/_integrations/dweet.markdown +++ b/source/_integrations/dweet.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `dweet` {% term integration %} makes it possible to transfer details collected with Home Assistant to [Dweet.io](https://dweet.io/) and visualize them with [freeboard.io](https://freeboard.io). Keep in mind that your information will be public! diff --git a/source/_integrations/easyenergy.markdown b/source/_integrations/easyenergy.markdown index ea7bfd8e1b6..30d09bac41a 100644 --- a/source/_integrations/easyenergy.markdown +++ b/source/_integrations/easyenergy.markdown @@ -13,7 +13,6 @@ ha_domain: easyenergy ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/ebox.markdown b/source/_integrations/ebox.markdown index ef48ce54940..311c880726e 100644 --- a/source/_integrations/ebox.markdown +++ b/source/_integrations/ebox.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integrate your [EBox](https://client.ebox.ca/) account information into Home Assistant. diff --git a/source/_integrations/ebusd.markdown b/source/_integrations/ebusd.markdown index 4b9441d9b37..8a88b9f7916 100644 --- a/source/_integrations/ebusd.markdown +++ b/source/_integrations/ebusd.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integration between the [ebusd](https://github.com/john30/ebusd/) daemon (used for communication with the eBUS heating systems), and Home Assistant. The ebusd integrations uses the sensor integration. diff --git a/source/_integrations/ecoal_boiler.markdown b/source/_integrations/ecoal_boiler.markdown index de4682478f3..3c8bbeb1ca3 100644 --- a/source/_integrations/ecoal_boiler.markdown +++ b/source/_integrations/ecoal_boiler.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ecoal_boiler` {% term integration %} is the base for pumps and sensors managed by [esterownik.pl eCoal boiler controller](https://esterownik.pl/nasze-produkty/ecoal). diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 32e5a1ebade..d7baa7c6a61 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -268,4 +268,3 @@ Set which sensors are active on a termostat for a specific climate program. | `entity_id` | no | ecobee thermostat on which to set the active sensors. | | `preset_mode` | yes | Name of the climate program to set the sensors active on (defaults to currently active program). | | `sensors` | no | Sensors to set as participating for climate. This is the device ID of the sensor/thermostat. These can be found in the available_sensors attribute. | - diff --git a/source/_integrations/eddystone_temperature.markdown b/source/_integrations/eddystone_temperature.markdown index debbb1d6028..f3f51484d37 100644 --- a/source/_integrations/eddystone_temperature.markdown +++ b/source/_integrations/eddystone_temperature.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `eddystone_temperature` sensor {% term integration %} reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). diff --git a/source/_integrations/edimax.markdown b/source/_integrations/edimax.markdown index c24ef5d03bc..818c7a2116b 100644 --- a/source/_integrations/edimax.markdown +++ b/source/_integrations/edimax.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This `edimax` switch {% term integration %} allows you to control the state of your [Edimax](https://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches. diff --git a/source/_integrations/egardia.markdown b/source/_integrations/egardia.markdown index dc1881a8b7d..f107363fadc 100644 --- a/source/_integrations/egardia.markdown +++ b/source/_integrations/egardia.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Egardia** {% term integration %} enables the ability to control an [Egardia](https://egardia.com/)/[Woonveilig](https://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically. diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown index f3bf6ab82d1..e03f86ab174 100644 --- a/source/_integrations/elgato.markdown +++ b/source/_integrations/elgato.markdown @@ -8,7 +8,6 @@ ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - '@frenck' -ha_quality_scale: platinum ha_domain: elgato ha_zeroconf: true ha_platforms: diff --git a/source/_integrations/eliqonline.markdown b/source/_integrations/eliqonline.markdown index cf42185de81..1a1110f4b98 100644 --- a/source/_integrations/eliqonline.markdown +++ b/source/_integrations/eliqonline.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integrate your [ELIQ Online](https://eliq.io/) smart meter information into Home Assistant. To get an [access token](https://my.eliq.io/user/settings/api) and the [Channel ID](https://my.eliq.io/user/settings/locations), log in to your account. diff --git a/source/_integrations/elv.markdown b/source/_integrations/elv.markdown index 5f57213f348..8d751091b56 100644 --- a/source/_integrations/elv.markdown +++ b/source/_integrations/elv.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `pca` switch {% term integration %} allows you to control the state of your [ELV PCA 301 smart switch](https://www.elv.de/funkschaltsteckdose-fuer-energiekostenmonitor-pca-301.html). You need an 868 MHz interface like the [JeeLink](https://www.digitalsmarties.net/products/jeelink) flashed with the [pca-hex firmware](https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/firmware/JeeLink_PCA301.hex). diff --git a/source/_integrations/emby.markdown b/source/_integrations/emby.markdown index 10421af4317..00af58a5812 100644 --- a/source/_integrations/emby.markdown +++ b/source/_integrations/emby.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Emby** {% term integration %} allows you to control a [Emby](https://emby.media/) multimedia system from Home Assistant. diff --git a/source/_integrations/emoncms_history.markdown b/source/_integrations/emoncms_history.markdown index c94094e6e21..1289aa42437 100644 --- a/source/_integrations/emoncms_history.markdown +++ b/source/_integrations/emoncms_history.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `emoncms_history` {% term integration %} makes it possible to transfer (write) details collected with Home Assistant to [Emoncms.org](https://emoncms.org/) or your local running Emoncms instance. It will send the data to a specific input node on Emoncms with the entity IDs as a key. Afterwards you can create feeds and dashboards in Emoncms with the collected data. diff --git a/source/_integrations/energyzero.markdown b/source/_integrations/energyzero.markdown index d9d3a12a116..5b98285323c 100644 --- a/source/_integrations/energyzero.markdown +++ b/source/_integrations/energyzero.markdown @@ -12,7 +12,6 @@ ha_domain: energyzero ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/entur_public_transport.markdown b/source/_integrations/entur_public_transport.markdown index 6af51bcf8fb..29d3b226048 100644 --- a/source/_integrations/entur_public_transport.markdown +++ b/source/_integrations/entur_public_transport.markdown @@ -11,6 +11,7 @@ ha_domain: entur_public_transport ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `entur_public_transport` {% term integration %} gives real-time departure information for the next departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway. diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index a61edf68fda..5cd3fa0e007 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Envisalink** {% term integration %} will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Eyez On, known as the Envisalink. The Envisalink evl3 and evl4 boards provide a TCP/IP interface to the alarm panel, where it emulates an alarm keypad. This board also exposes a raw TCP/IP based API, upon which this integration is built. Currently, the Envisalink version 4 is the latest model. This integration supports both the evl3 and the evl4. diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index 1fc0ecf3dfc..a7879d02686 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ephember` {% term integration %} lets you control [EPH Controls](https://emberapp.ephcontrols.com/) thermostats. The module only works if you have a Wi-Fi gateway to control your EPH system and an account on the EMBER app. diff --git a/source/_integrations/eq3btsmart.markdown b/source/_integrations/eq3btsmart.markdown index c9b709fadfd..fc094043bf3 100644 --- a/source/_integrations/eq3btsmart.markdown +++ b/source/_integrations/eq3btsmart.markdown @@ -11,7 +11,6 @@ ha_codeowners: - '@dbuezas' ha_domain: eq3btsmart ha_integration_type: device -ha_quality_scale: silver ha_platforms: - binary_sensor - climate diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index 7f03d5d0081..a4caee5af55 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -41,7 +41,6 @@ ha_platforms: - valve ha_integration_type: device ha_dhcp: true -ha_quality_scale: platinum works_with: - local --- diff --git a/source/_integrations/etherscan.markdown b/source/_integrations/etherscan.markdown index c2508c08830..f7a7f8b458a 100644 --- a/source/_integrations/etherscan.markdown +++ b/source/_integrations/etherscan.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `Etherscan` sensor platform displays Ether and ERC-20 token balances from [Etherscan.io](https://etherscan.io). diff --git a/source/_integrations/eufy.markdown b/source/_integrations/eufy.markdown index a669473fdf3..5f5008e817d 100644 --- a/source/_integrations/eufy.markdown +++ b/source/_integrations/eufy.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **EufyHome** {% term integration %} is the main integration to integrate [eufy](https://eufy.com/) devices sold under the EufyHome product line with Home Assistant. diff --git a/source/_integrations/everlights.markdown b/source/_integrations/everlights.markdown index 03593152169..3888dc592dc 100644 --- a/source/_integrations/everlights.markdown +++ b/source/_integrations/everlights.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [EverLights](https://myeverlights.com/) are permanent Christmas lights installed on a home's gutters or flashing. This integration can change all LEDs in a zone to a single color or activate a pattern that was previously saved to the control box. diff --git a/source/_integrations/evohome.markdown b/source/_integrations/evohome.markdown index b60952716d6..82a91316958 100644 --- a/source/_integrations/evohome.markdown +++ b/source/_integrations/evohome.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Evohome** {% term integration %} links Home Assistant with all _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW systems, such as: diff --git a/source/_integrations/facebook.markdown b/source/_integrations/facebook.markdown index a1411180d03..c95710f36b2 100644 --- a/source/_integrations/facebook.markdown +++ b/source/_integrations/facebook.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `facebook` notification {% term integration %} enables sending notifications via Facebook Messenger, powered by [Facebook](https://facebook.com). diff --git a/source/_integrations/fail2ban.markdown b/source/_integrations/fail2ban.markdown index 4247d387d0e..dcf2ceaf7b5 100644 --- a/source/_integrations/fail2ban.markdown +++ b/source/_integrations/fail2ban.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `fail2ban` {% term integration %} allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant frontend. diff --git a/source/_integrations/familyhub.markdown b/source/_integrations/familyhub.markdown index 6f9be8dc1d6..91d9c86a1c1 100644 --- a/source/_integrations/familyhub.markdown +++ b/source/_integrations/familyhub.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `familyhub` {% term integration %} allows you to get images of the inside of your [Samsung Family Hub refrigerator](https://www.samsung.com/us/explore/family-hub-refrigerator/connected-hub/) in Home Assistant. diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index 5af3793a629..eba9e112c08 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -15,7 +15,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration -ha_quality_scale: gold --- The `fastdotcom` integration uses the [Fast.com](https://fast.com/) web service to measure network bandwidth performance. diff --git a/source/_integrations/ffmpeg_motion.markdown b/source/_integrations/ffmpeg_motion.markdown index b730843e5c4..57dafc8470b 100644 --- a/source/_integrations/ffmpeg_motion.markdown +++ b/source/_integrations/ffmpeg_motion.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ffmpeg` {% term integration %} allows you to use any video feed with [FFmpeg](https://www.ffmpeg.org/) for motion sensors in Home Assistant. diff --git a/source/_integrations/ffmpeg_noise.markdown b/source/_integrations/ffmpeg_noise.markdown index 61e3937182f..9b1c34c248e 100644 --- a/source/_integrations/ffmpeg_noise.markdown +++ b/source/_integrations/ffmpeg_noise.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ffmpeg` {% term integration %} allows you to use any video or audio feed with [FFmpeg](https://www.ffmpeg.org/) for various sensors in Home Assistant. diff --git a/source/_integrations/fido.markdown b/source/_integrations/fido.markdown index c34ac37454d..f8737692ccd 100644 --- a/source/_integrations/fido.markdown +++ b/source/_integrations/fido.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integrate your [Fido](https://www.fido.ca/) account information into Home Assistant. diff --git a/source/_integrations/fints.markdown b/source/_integrations/fints.markdown index defd7b76f6b..61f7d9fe7a2 100644 --- a/source/_integrations/fints.markdown +++ b/source/_integrations/fints.markdown @@ -12,6 +12,7 @@ ha_integration_type: service related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- With the FinTS {% term integration %}, you can fetch your account information from your bank. This only works with banks that support the FinTS (aka. HBCI) standard. The FinTS standard used by many German banks. So if you do not have a German bank account, this will most likely not work for you. To find out if your bank supports FinTS, check the bank's website or call their hotline. diff --git a/source/_integrations/firmata.markdown b/source/_integrations/firmata.markdown index 2623c318ba1..897255376cc 100644 --- a/source/_integrations/firmata.markdown +++ b/source/_integrations/firmata.markdown @@ -18,6 +18,7 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_quality_scale: legacy --- [Firmata](https://github.com/firmata/protocol) can be used to add analog and digital inputs and outputs to Home Assistant. This allows for buttons, switches, motion detectors, relay control, sensors, potentiometers, dimmers, etc. The integration can currently connect to a Firmata board via serial or serial over USB. diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown index f22e524fd2a..ee248cd8ae1 100644 --- a/source/_integrations/fixer.markdown +++ b/source/_integrations/fixer.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `fixer` {% term integration %} will show you the current exchange rate from [Fixer.io](https://fixer.io/) which is using data from the [European Central Bank (ECB)](https://www.ecb.europa.eu). diff --git a/source/_integrations/fleetgo.markdown b/source/_integrations/fleetgo.markdown index f0b4927444b..ad405bf696b 100644 --- a/source/_integrations/fleetgo.markdown +++ b/source/_integrations/fleetgo.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `fleetgo` device tracker {% term integration %} allows you to integrate your vehicles equipped with [FleetGO](https://fleetgo.com) hardware into Home Assistant. It allows you to see certain details about your vehicle, but also shows your vehicle on the map. diff --git a/source/_integrations/flexit.markdown b/source/_integrations/flexit.markdown index b54a78ff613..e8eda43bc9c 100644 --- a/source/_integrations/flexit.markdown +++ b/source/_integrations/flexit.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integrates [Flexit](https://www.flexit.no/en/) Air Conditioning unit into Home Assistant. diff --git a/source/_integrations/flic.markdown b/source/_integrations/flic.markdown index 82ff8df1064..c879f70328c 100644 --- a/source/_integrations/flic.markdown +++ b/source/_integrations/flic.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `flic` {% term integration %} allows you to receive click events from [flic](https://flic.io) smart buttons. diff --git a/source/_integrations/flock.markdown b/source/_integrations/flock.markdown index 61f5eceec16..2f341077c92 100644 --- a/source/_integrations/flock.markdown +++ b/source/_integrations/flock.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `flock` integration uses [Flock.com](https://flock.com) to deliver notifications from Home Assistant. diff --git a/source/_integrations/folder.markdown b/source/_integrations/folder.markdown index f47e4a52f80..aab216184b6 100644 --- a/source/_integrations/folder.markdown +++ b/source/_integrations/folder.markdown @@ -10,6 +10,7 @@ ha_domain: folder ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- Sensor for monitoring the contents of a folder. Note that folder paths must be added to [allowlist_external_dirs](/integrations/homeassistant/#allowlist_external_dirs). Optionally a [wildcard filter](https://docs.python.org/3.6/library/fnmatch.html) can be applied to the files considered within the folder. The state of the sensor is the size in MB of files within the folder that meet the filter criteria. diff --git a/source/_integrations/foobot.markdown b/source/_integrations/foobot.markdown index 3e4b97074d2..0480bd92cfa 100644 --- a/source/_integrations/foobot.markdown +++ b/source/_integrations/foobot.markdown @@ -9,6 +9,7 @@ ha_domain: foobot ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `foobot` sensor platform will fetch air quality data from your or yours [Foobot device(s)](https://foobot.io/features/). diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown index 46760e298dc..f71147b63c6 100644 --- a/source/_integrations/forecast_solar.markdown +++ b/source/_integrations/forecast_solar.markdown @@ -13,7 +13,6 @@ ha_domain: forecast_solar ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: service --- diff --git a/source/_integrations/fortios.markdown b/source/_integrations/fortios.markdown index acfd719c029..80892caa96e 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The FortiOS presence detection enables Home Assistant to track devices with a MAC address connected to a FortiGate from [Fortinet](https://www.fortinet.com). diff --git a/source/_integrations/foursquare.markdown b/source/_integrations/foursquare.markdown index 44815abbb94..6d439df5f22 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `foursquare` {% term integration %} accepts pushes from the Foursquare [Real-Time API](https://developer.foursquare.com/overview/realtime) and an action to check users in on Swarm. diff --git a/source/_integrations/free_mobile.markdown b/source/_integrations/free_mobile.markdown index 06a91868b52..650be14218f 100644 --- a/source/_integrations/free_mobile.markdown +++ b/source/_integrations/free_mobile.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `free_mobile` {% term integration %} uses the French mobile operator [Free Mobile](http://mobile.free.fr/) to send SMS to your own cell phone. diff --git a/source/_integrations/freedns.markdown b/source/_integrations/freedns.markdown index f6f77adab2e..0d1cb7b5646 100644 --- a/source/_integrations/freedns.markdown +++ b/source/_integrations/freedns.markdown @@ -7,6 +7,7 @@ ha_iot_class: Cloud Push ha_release: 0.67 ha_domain: freedns ha_integration_type: integration +ha_quality_scale: legacy --- With the `freedns` {% term integration %} you can keep your [FreeDNS](https://freedns.afraid.org) record up to date. diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 89a13a01ca8..7aa337ba12b 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -26,7 +26,6 @@ ha_codeowners: - '@mib1185' - '@flabbamann' ha_integration_type: hub -ha_quality_scale: gold --- The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [AVM Smart Home](https://en.avm.de/products/smart-home/) (_former AVM FRITZ!DECT_) devices like plugs, thermostats or shutter drivers as also trigger so called smart home templates (_contains settings for Smart Home devices of the same type_). diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index 8993c07473c..26b3b1a740c 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -13,7 +13,6 @@ ha_iot_class: Local Polling ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_dhcp: true ha_integration_type: integration --- diff --git a/source/_integrations/fujitsu_fglair.markdown b/source/_integrations/fujitsu_fglair.markdown index b3a6628b751..cda9465c0a0 100644 --- a/source/_integrations/fujitsu_fglair.markdown +++ b/source/_integrations/fujitsu_fglair.markdown @@ -1,5 +1,5 @@ --- -title: Fujitsu FGLair +title: FGLair description: Control your Fujitsu heat pump or air conditioner that uses the FGLair app ha_category: - Climate @@ -11,7 +11,7 @@ ha_codeowners: ha_config_flow: true ha_platforms: - climate -ha_iot_class: "Cloud Polling" +ha_iot_class: Cloud Polling --- The {{ page.title }} {% term integration %} provides support for Fujitsu heat pumps and air conditioners that use the FGLair app. @@ -33,4 +33,3 @@ This integration supports the following functionalities (if the devices support - [`turn on/off`](/integrations/climate#action-climateturn_on) - [`fan mode`](/integrations/climate#action-climateset_fan_mode) - [`swing mode`](/integrations/climate#action-climateset_swing_mode) - diff --git a/source/_integrations/fully_kiosk.markdown b/source/_integrations/fully_kiosk.markdown index 306a8fbcaca..e20a06aa418 100644 --- a/source/_integrations/fully_kiosk.markdown +++ b/source/_integrations/fully_kiosk.markdown @@ -26,6 +26,7 @@ ha_platforms: - switch ha_integration_type: integration ha_dhcp: true +ha_quality_scale: bronze --- [Fully Kiosk Browser](https://www.fully-kiosk.com) is a powerful kiosk browser for Android devices. It provides a number of features for monitoring and controlling your Android device. This integration gives you access to control your device and view the status in Home Assistant. diff --git a/source/_integrations/futurenow.markdown b/source/_integrations/futurenow.markdown index e2b50ac041b..44b90123e74 100644 --- a/source/_integrations/futurenow.markdown +++ b/source/_integrations/futurenow.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `futurenow` light {% term integration %} allows you to use [P5](https://www.p5.hu/) FutureNow relay/dimmer units as lights. Currently supported units: diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown index daca58a61d9..b7e529836cf 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -13,7 +13,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: hub -ha_quality_scale: platinum --- The **FYTA** {% term integration %} uses the open API of [FYTA](https://www.fyta.de) to obtain the data from your plant sensors and integrate these into Home Assistant. diff --git a/source/_integrations/garadget.markdown b/source/_integrations/garadget.markdown index a8b8c86e954..7578cf44eda 100644 --- a/source/_integrations/garadget.markdown +++ b/source/_integrations/garadget.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `garadget` cover {% term integration %} lets you control [Garadget](https://www.garadget.com/) garage door futurizers through Home Assistant. diff --git a/source/_integrations/gc100.markdown b/source/_integrations/gc100.markdown index cb7107f8fd3..0edaa6b021b 100644 --- a/source/_integrations/gc100.markdown +++ b/source/_integrations/gc100.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The Global Caché GC-100 can be integrated into Home Assistant. GC-100 is a TCP-controllable diff --git a/source/_integrations/gdacs.markdown b/source/_integrations/gdacs.markdown index 1f10169fd0e..d2c35497ac8 100644 --- a/source/_integrations/gdacs.markdown +++ b/source/_integrations/gdacs.markdown @@ -6,7 +6,6 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.106 ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@exxamalte' ha_domain: gdacs diff --git a/source/_integrations/geo_rss_events.markdown b/source/_integrations/geo_rss_events.markdown index 568a53dc25c..2f7484fa9d0 100644 --- a/source/_integrations/geo_rss_events.markdown +++ b/source/_integrations/geo_rss_events.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `geo_rss_events` {% term integration %} retrieves events from a GeoRSS feed and shows information of those events filtered by distance to Home Assistant's location and grouped by category. diff --git a/source/_integrations/geonetnz_quakes.markdown b/source/_integrations/geonetnz_quakes.markdown index 5935be1b5b2..b74ceb23c9a 100644 --- a/source/_integrations/geonetnz_quakes.markdown +++ b/source/_integrations/geonetnz_quakes.markdown @@ -6,7 +6,6 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.98 ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@exxamalte' ha_domain: geonetnz_quakes diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown index 77da90c8aa5..789f8f9720a 100644 --- a/source/_integrations/gios.markdown +++ b/source/_integrations/gios.markdown @@ -9,7 +9,6 @@ ha_config_flow: true ha_codeowners: - '@bieniu' ha_domain: gios -ha_quality_scale: platinum ha_platforms: - diagnostics - sensor diff --git a/source/_integrations/gitlab_ci.markdown b/source/_integrations/gitlab_ci.markdown index 6aa38468993..57d4488f1fe 100644 --- a/source/_integrations/gitlab_ci.markdown +++ b/source/_integrations/gitlab_ci.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `gitlab_ci` sensor {% term integration %} integrates results reported by CI/CD Pipeline Jobs in [GitLab](https://gitlab.com/). diff --git a/source/_integrations/gitter.markdown b/source/_integrations/gitter.markdown index daddc2ffe97..e807712c673 100644 --- a/source/_integrations/gitter.markdown +++ b/source/_integrations/gitter.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This `gitter` {% term integration %} allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages. diff --git a/source/_integrations/go2rtc.markdown b/source/_integrations/go2rtc.markdown index 780d7970c58..6adfe996883 100644 --- a/source/_integrations/go2rtc.markdown +++ b/source/_integrations/go2rtc.markdown @@ -11,6 +11,7 @@ ha_domain: go2rtc ha_integration_type: system related: - docs: /installation/ +ha_quality_scale: legacy --- go2rtc is an open source project providing a camera streaming application that supports formats such as RTSP, WebRTC, HomeKit, FFmpeg, RTMP. The **go2rtc** {% term integration %} connects to a go2rtc instance and provides a WebRTC proxy for all your cameras. To learn more about go2rtc, refer to the [project's GitHub page](https://github.com/AlexxIT/go2rtc/). @@ -59,4 +60,3 @@ Use a self-hosted instance: go2rtc: url: http://my-go2rtc-instance:1984 ``` - diff --git a/source/_integrations/goalzero.markdown b/source/_integrations/goalzero.markdown index 468dad832bd..5098b538ee7 100644 --- a/source/_integrations/goalzero.markdown +++ b/source/_integrations/goalzero.markdown @@ -8,7 +8,6 @@ ha_release: 0.116 ha_config_flow: true ha_dhcp: true ha_domain: goalzero -ha_quality_scale: silver ha_platforms: - binary_sensor - sensor diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown index 3786f57c4cd..c3c2a7e1dda 100644 --- a/source/_integrations/google_assistant_sdk.markdown +++ b/source/_integrations/google_assistant_sdk.markdown @@ -14,7 +14,6 @@ ha_integration_type: service ha_platforms: - diagnostics - notify -ha_quality_scale: platinum google_dev_console_link: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview api: Google Assistant API api_link: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown index 1a16625436b..201d01f7dc9 100644 --- a/source/_integrations/google_generative_ai_conversation.markdown +++ b/source/_integrations/google_generative_ai_conversation.markdown @@ -10,7 +10,6 @@ ha_codeowners: - '@tronikos' ha_domain: google_generative_ai_conversation ha_integration_type: service -ha_quality_scale: platinum ha_platforms: - conversation - diagnostics diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index 64409aa023a..b6e29a7f761 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `google_maps` {% term integration %} allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). diff --git a/source/_integrations/google_photos.markdown b/source/_integrations/google_photos.markdown index c6342a2a6f8..517503fabc8 100644 --- a/source/_integrations/google_photos.markdown +++ b/source/_integrations/google_photos.markdown @@ -10,8 +10,6 @@ ha_domain: google_photos ha_codeowners: - '@allenporter' ha_integration_type: integration -ha_platforms: - - media_source related: - docs: /integrations/media_source title: Media source integration documentation diff --git a/source/_integrations/google_pubsub.markdown b/source/_integrations/google_pubsub.markdown index f0927a96002..12aa08a813e 100644 --- a/source/_integrations/google_pubsub.markdown +++ b/source/_integrations/google_pubsub.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `google_pubsub` {% term integration %} allows you to hook into the Home Assistant event bus and send events to [Google Cloud Pub/Sub](https://cloud.google.com/pubsub/docs/overview). The current [free tier](https://cloud.google.com/free/) of GCP should allow you to sync about 1 event every 2 seconds on average (2 million invocations per month). diff --git a/source/_integrations/google_wifi.markdown b/source/_integrations/google_wifi.markdown index 05c9dedbfff..0dd86cc5b69 100644 --- a/source/_integrations/google_wifi.markdown +++ b/source/_integrations/google_wifi.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `google_wifi` sensor {% term integration %} is displaying the exposed status of a Google Wifi (or OnHub) router. diff --git a/source/_integrations/graphite.markdown b/source/_integrations/graphite.markdown index 68df583d119..1f9d8deee35 100644 --- a/source/_integrations/graphite.markdown +++ b/source/_integrations/graphite.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `graphite` {% term integration %} records all events and state changes and feeds the data to a [graphite](http://graphiteapp.org/) instance. diff --git a/source/_integrations/greeneye_monitor.markdown b/source/_integrations/greeneye_monitor.markdown index 68af3aba56c..94471667030 100644 --- a/source/_integrations/greeneye_monitor.markdown +++ b/source/_integrations/greeneye_monitor.markdown @@ -16,6 +16,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The [GreenEye Monitor (GEM)](https://www.brultech.com/greeneye/) {% term integration %} for Home Assistant allows you to create sensors for the various data channels of the GEM. Each current transformer (CT) channel, pulse counter, and temperature sensor appears in Home Assistant as a sensor, and can be used in automations. diff --git a/source/_integrations/greenwave.markdown b/source/_integrations/greenwave.markdown index 8cc60322e96..02176e0faf3 100644 --- a/source/_integrations/greenwave.markdown +++ b/source/_integrations/greenwave.markdown @@ -9,6 +9,7 @@ ha_domain: greenwave ha_platforms: - light ha_integration_type: integration +ha_quality_scale: legacy --- This integration communicates with the Greenwave Reality (TCP Connected) Gateway to allow control of all lights and fixtures registered to the gateway. Bulbs and Fixtures can be created and modified inside the TCP Lighting App for Android and iOS. diff --git a/source/_integrations/gstreamer.markdown b/source/_integrations/gstreamer.markdown index a58632a6eb0..9f66b31fc5c 100644 --- a/source/_integrations/gstreamer.markdown +++ b/source/_integrations/gstreamer.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `gstreamer` {% term integration %} allows you to play audio via a [gstreamer](https://gstreamer.freedesktop.org/) pipeline. Practically, this means you can play audio directly on the computer running Home Assistant. It is particularly suited for playing TTS. Advanced users can specify a pipeline to transform the audio stream and/or redirect it elsewhere. diff --git a/source/_integrations/gtfs.markdown b/source/_integrations/gtfs.markdown index 3f736aaaae2..3b36c30d29f 100644 --- a/source/_integrations/gtfs.markdown +++ b/source/_integrations/gtfs.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `gtfs` {% term integration %} will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index ef05d587f8d..bb28141ca41 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -2,22 +2,21 @@ title: Habitica description: Instructions on enabling Habitica support for your Home Assistant ha_category: - - To-do list - - Sensor - Calendar + - Sensor + - To-do list ha_release: 0.78 ha_iot_class: Cloud Polling ha_domain: habitica ha_platforms: - binary_sensor - button + - calendar + - diagnostics - sensor - switch - todo - - calendar ha_codeowners: - - '@ASMfreaK' - - '@leikoilja' - '@tr4nt0r' ha_config_flow: true ha_integration_type: integration diff --git a/source/_integrations/harman_kardon_avr.markdown b/source/_integrations/harman_kardon_avr.markdown index eb899447eb6..6239d2f893d 100644 --- a/source/_integrations/harman_kardon_avr.markdown +++ b/source/_integrations/harman_kardon_avr.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `harman_kardon_avr` platform allows you to control Harman Kardon Network Receivers from Home Assistant. diff --git a/source/_integrations/haveibeenpwned.markdown b/source/_integrations/haveibeenpwned.markdown index 564e64cb842..4ef25bd397d 100644 --- a/source/_integrations/haveibeenpwned.markdown +++ b/source/_integrations/haveibeenpwned.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `haveibeenpwned` sensor {% term integration %} creates sensors that check for breached email accounts on [haveibeenpwned](https://haveibeenpwned.com). diff --git a/source/_integrations/hddtemp.markdown b/source/_integrations/hddtemp.markdown index 2468ae5f38b..7bef7fcd4ec 100644 --- a/source/_integrations/hddtemp.markdown +++ b/source/_integrations/hddtemp.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `hddtemp` sensor {% term integration %} is using the data provided by [HDDTemp](https://savannah.nongnu.org/projects/hddtemp). diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index b069195b830..8f646f4ef80 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -12,6 +12,7 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@inytar' +ha_quality_scale: legacy --- The `hdmi_cec` integration provides actions that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entities for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as sound-bars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use `cec-client` (part of the `libcec` package) to listen to traffic on the CEC bus and discover the correct numbers. diff --git a/source/_integrations/heatmiser.markdown b/source/_integrations/heatmiser.markdown index d4ca1763ac7..e5f964d3fe5 100644 --- a/source/_integrations/heatmiser.markdown +++ b/source/_integrations/heatmiser.markdown @@ -11,6 +11,7 @@ ha_domain: heatmiser ha_platforms: - climate ha_integration_type: integration +ha_quality_scale: legacy --- The `heatmiser` climate platform lets you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/room-thermostats/) thermostats from Heatmiser. The module itself is currently set up to work over a RS232 -> RS485 converter, therefore it connects over IP. diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown index 017bb3a2cc3..d7ca99a3f5c 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -11,6 +11,7 @@ ha_domain: hikvision ha_platforms: - binary_sensor ha_integration_type: integration +ha_quality_scale: legacy --- The Hikvision Binary Sensor is a platform that parses the event stream of a diff --git a/source/_integrations/hikvisioncam.markdown b/source/_integrations/hikvisioncam.markdown index dfd4e9552e1..b5118f17826 100644 --- a/source/_integrations/hikvisioncam.markdown +++ b/source/_integrations/hikvisioncam.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This `hikvisioncam` switch {% term integration %} allows you to control your motion detection setting on your [Hikvision](https://www.hikvision.com/) camera. diff --git a/source/_integrations/hitron_coda.markdown b/source/_integrations/hitron_coda.markdown index 168befeb826..62b2c885336 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -9,6 +9,7 @@ ha_iot_class: Local Polling ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- This integration offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3) diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index 0d4775f43c8..ba0848771c3 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -18,8 +18,10 @@ ha_codeowners: ha_config_flow: true ha_platforms: - binary_sensor + - diagnostics - light - number + - select - sensor - switch - time diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index dcbe79985e4..05b43edb06a 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -29,6 +29,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The [Homematic](https://www.eq-3.com/products/homematic.html) {% term integration %} provides bi-directional communication with your CCU/Homegear. It uses an XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 78312b5084a..0f6345c135e 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -15,7 +15,6 @@ ha_category: ha_iot_class: Cloud Push ha_release: 0.66 ha_config_flow: true -ha_quality_scale: silver ha_domain: homematicip_cloud ha_platforms: - alarm_control_panel diff --git a/source/_integrations/homewizard.markdown b/source/_integrations/homewizard.markdown index 36b8d14991f..8427f9e707d 100644 --- a/source/_integrations/homewizard.markdown +++ b/source/_integrations/homewizard.markdown @@ -20,6 +20,7 @@ ha_integration_type: integration ha_quality_scale: platinum works_with: - local +ha_dhcp: true --- Integration for the [HomeWizard Energy](https://www.homewizard.com) platform. It can collect data locally from the HomeWizard Energy products and create them as sensors in Home Assistant. Use this integration to monitor your energy, gas and water usage to optimize your energy consumption. The information collected by this integration can be used by the [Energy dashboard](/home-energy-management). diff --git a/source/_integrations/horizon.markdown b/source/_integrations/horizon.markdown index d6dbb0e74b4..3a4c371574c 100644 --- a/source/_integrations/horizon.markdown +++ b/source/_integrations/horizon.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `horizon` {% term integration %} allows you to control a [Unitymedia](https://www.unitymedia.de) Horizon HD Recorder from Home Assistant. diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown index 1dc830465ff..6c2587f9546 100644 --- a/source/_integrations/hp_ilo.markdown +++ b/source/_integrations/hp_ilo.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `hp_ilo` {% term integration %} allows you to do an API call to the HP ILO (Integrated Lights-Out) sensor of your server, and use this data in Home Assistant sensors. diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index 99460bb2c5a..0c6924f16b4 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -8,7 +8,6 @@ ha_iot_class: Local Push featured: true ha_release: '0.60' ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@balloob' - '@marcelveldt' diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index 98a6ff2689a..acf203addb5 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -8,7 +8,6 @@ ha_iot_class: Local Push ha_domain: hyperion ha_codeowners: - '@dermotduffy' -ha_quality_scale: platinum ha_config_flow: true ha_ssdp: true ha_platforms: diff --git a/source/_integrations/iammeter.markdown b/source/_integrations/iammeter.markdown index 8333c07841f..e3b9bb3a00c 100644 --- a/source/_integrations/iammeter.markdown +++ b/source/_integrations/iammeter.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [IAMMETER](https://www.iammeter.com/) provides both a bi-directional single-phase energy meter([WEM3080](https://www.iammeter.com/products/single-phase-meter)) and a bi-directional three-phase energy monitor ([WEM3080T](https://www.iammeter.com/products/three-phase-meter)). Both of them can be integrated into Home Assistant. diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown index 1df4b341e0f..95feafebe80 100644 --- a/source/_integrations/idasen_desk.markdown +++ b/source/_integrations/idasen_desk.markdown @@ -3,7 +3,6 @@ title: IKEA Idasen Desk description: Control and monitor your IKEA Idåsen standing desk. ha_iot_class: Local Push ha_config_flow: true -ha_quality_scale: silver ha_release: '2023.10' ha_category: - Cover diff --git a/source/_integrations/idteck_prox.markdown b/source/_integrations/idteck_prox.markdown index 61054068cb5..aee6e42a41e 100644 --- a/source/_integrations/idteck_prox.markdown +++ b/source/_integrations/idteck_prox.markdown @@ -7,6 +7,7 @@ ha_release: 0.85 ha_iot_class: Local Push ha_domain: idteck_prox ha_integration_type: integration +ha_quality_scale: legacy --- [IDTECK](https://www.idteck.com/) makes ID systems used to control access and identify users. This integration works with [Proximity Readers](https://www.idteck.com/en/products/rfid-reader-__-card-%26-tag-__idteck-credential-format-(idc)) (RFID card readers). The device is connected to Home Assistant through a serial to ethernet converter (NPort). diff --git a/source/_integrations/iglo.markdown b/source/_integrations/iglo.markdown index 3dafc39cfe1..d552f380f38 100644 --- a/source/_integrations/iglo.markdown +++ b/source/_integrations/iglo.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `iglo` {% term integration %} allows you to integrate your [iGlo Lights](https://www.youtube.com/watch?v=oHTS9ji_v-s) into Home Assistant. diff --git a/source/_integrations/ign_sismologia.markdown b/source/_integrations/ign_sismologia.markdown index 75bffc91fe5..2ac68c3ed38 100644 --- a/source/_integrations/ign_sismologia.markdown +++ b/source/_integrations/ign_sismologia.markdown @@ -14,6 +14,7 @@ ha_integration_type: service related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ign_sismologia` {% term integration %} lets you integrate a GeoRSS feed provided by the diff --git a/source/_integrations/ihc.markdown b/source/_integrations/ihc.markdown index af836d265b9..945be31af28 100644 --- a/source/_integrations/ihc.markdown +++ b/source/_integrations/ihc.markdown @@ -19,6 +19,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- IHC Controller {% term integration %} for Home Assistant allows you to connect the LK IHC controller to Home Assistant. The controller is sold under other names in different countries - "ELKO Living system" in Sweden and Norway. diff --git a/source/_integrations/imgw_pib.markdown b/source/_integrations/imgw_pib.markdown index 4f0d769b0f5..04ae3c4787c 100644 --- a/source/_integrations/imgw_pib.markdown +++ b/source/_integrations/imgw_pib.markdown @@ -14,7 +14,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration -ha_quality_scale: platinum --- IMGW-PIB integration uses hydrological data from [Institute of Meteorology and Water Management - National Research Institute](https://hydro.imgw.pl) to present information about rivers and water reservoirs in Poland. diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index 84ae7803c0a..e099e09c796 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `influxdb` {% term integration %} makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.7/introduction/installation/) for how to set up an InfluxDB database. diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown index 410dcf70667..7377c2d250c 100644 --- a/source/_integrations/intesishome.markdown +++ b/source/_integrations/intesishome.markdown @@ -11,6 +11,7 @@ ha_domain: intesishome ha_platforms: - climate ha_integration_type: integration +ha_quality_scale: legacy --- The `IntesisHome` climate platform lets you control [IntesisHome](https://www.intesishome.com), [Airconwithme](https://airconwithme.com) and [anywAIR](https://www.fujitsugeneral.com.au/anywair) devices. IntesisHome provides integrations with air conditioners, including Panasonic, Daikin, Fujitsu, Toshiba, LG and more. diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index 330adc4c408..9470c5747ae 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `iperf3` sensor {% term integration %} allows you to measure network bandwidth performance against a private or public [Iperf3](https://software.es.net/iperf/index.html) server. diff --git a/source/_integrations/irish_rail_transport.markdown b/source/_integrations/irish_rail_transport.markdown index b407f7dcf7b..c5c70822561 100644 --- a/source/_integrations/irish_rail_transport.markdown +++ b/source/_integrations/irish_rail_transport.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `irish_rail_transport` sensor will give you the time until the next two departures (within 90 minutes) from an Irish Rail station using the RTPI information. diff --git a/source/_integrations/iron_os.markdown b/source/_integrations/iron_os.markdown index 86d3c097335..4e8eb8d3b82 100644 --- a/source/_integrations/iron_os.markdown +++ b/source/_integrations/iron_os.markdown @@ -49,4 +49,4 @@ The **IronOS** {% term integration %} seamlessly connects Home Assistant with PI ## Update -- **Firmware:** The update entity indicates if the firmware is up-to-date or if there is a newer IronOS version available for your device. For more information on how to update your device, please refer to the [IronOS documentation](https://ralim.github.io/IronOS/). \ No newline at end of file +- **Firmware:** The update entity indicates if the firmware is up-to-date or if there is a newer IronOS version available for your device. For more information on how to update your device, please refer to the [IronOS documentation](https://ralim.github.io/IronOS/). diff --git a/source/_integrations/iskra.markdown b/source/_integrations/iskra.markdown index f6729704524..3e4285751c9 100644 --- a/source/_integrations/iskra.markdown +++ b/source/_integrations/iskra.markdown @@ -1,5 +1,5 @@ --- -title: Iskra +title: iskra description: Instructions on how to connect your Iskra energy meters to Home Assistant. ha_release: '2024.10' ha_category: diff --git a/source/_integrations/itach.markdown b/source/_integrations/itach.markdown index c4510d279a5..1a276720bb6 100644 --- a/source/_integrations/itach.markdown +++ b/source/_integrations/itach.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `itach` remote {% term integration %} allows you to control IR devices with a Global Caché iTach Device and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page. diff --git a/source/_integrations/itunes.markdown b/source/_integrations/itunes.markdown index ecd960f3641..692fe14f56c 100644 --- a/source/_integrations/itunes.markdown +++ b/source/_integrations/itunes.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `itunes` media player {% term integration %} allows you to control [iTunes](https://apple.com/itunes/) from Home Assistant. It uses a 3rd party server that you run on your Mac called [itunes-api](https://github.com/maddox/itunes-api). Play, pause or skip songs remotely on iTunes running on your Mac. diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown index c646127e053..4fcfd3116d9 100644 --- a/source/_integrations/jewish_calendar.markdown +++ b/source/_integrations/jewish_calendar.markdown @@ -13,7 +13,6 @@ ha_platforms: - sensor ha_integration_type: integration ha_config_flow: true -ha_quality_scale: silver --- The Jewish Calendar (`jewish_calendar`) {% term integration %} displays various information related to the Jewish Calendar as various sensors. diff --git a/source/_integrations/joaoapps_join.markdown b/source/_integrations/joaoapps_join.markdown index c78886e2dd7..e19fb9f72b8 100644 --- a/source/_integrations/joaoapps_join.markdown +++ b/source/_integrations/joaoapps_join.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `joaoapps_join` {% term integration %} exposes actions from diff --git a/source/_integrations/kaiterra.markdown b/source/_integrations/kaiterra.markdown index dd344225b7e..c64bf2746b8 100644 --- a/source/_integrations/kaiterra.markdown +++ b/source/_integrations/kaiterra.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `kaiterra` {% term integration %} allows you to view the readings from your Laser Egg or Sensedge device using the [Kaiterra REST API](https://dev.kaiterra.com/). diff --git a/source/_integrations/kankun.markdown b/source/_integrations/kankun.markdown index b022428eea8..b71a6d51384 100644 --- a/source/_integrations/kankun.markdown +++ b/source/_integrations/kankun.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `kankun` switch {% term integration %} allows you to toggle customized Kankun SP3 Wi-Fi switches. Switches are diff --git a/source/_integrations/keba.markdown b/source/_integrations/keba.markdown index 585804b53d9..91125e15580 100644 --- a/source/_integrations/keba.markdown +++ b/source/_integrations/keba.markdown @@ -20,6 +20,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `keba` integrates your Keba charging station/BMW Wallbox into your Home Assistant instance using the UDP Smart Home Interface ([manual](https://www.ifix-solar.shop/wp-content/uploads/shop/Dokumente/KEBA/KeContact_P20_P30_UDP_ProgrGuide_en.pdf)). The fetching interval to the charging station is set to 5 seconds, same as in the official mobile app. In order to use the integration, enable the UDP Smart Home Interface by adjusting the DIP switches within the charging station according to the [installation manual](https://www.keba.com/file/downloads/e-mobility/KeContact_KCP20_30_ih_en.pdf). diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown index f9d70a4ddf1..37383d36c94 100644 --- a/source/_integrations/kef.markdown +++ b/source/_integrations/kef.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `kef` {% term integration %} allows you to control the KEF LS50 Wireless and [KEF LSX](https://international.kef.com/products/lsx) speakers from Home Assistant. diff --git a/source/_integrations/keyboard.markdown b/source/_integrations/keyboard.markdown index 905c9a7e080..ebaaf8898d4 100644 --- a/source/_integrations/keyboard.markdown +++ b/source/_integrations/keyboard.markdown @@ -7,6 +7,7 @@ ha_release: pre 0.7 ha_domain: keyboard ha_iot_class: Local Push ha_integration_type: integration +ha_quality_scale: legacy --- The `keyboard` integration simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS): diff --git a/source/_integrations/keyboard_remote.markdown b/source/_integrations/keyboard_remote.markdown index ed02e3db7ba..fc66409da8b 100644 --- a/source/_integrations/keyboard_remote.markdown +++ b/source/_integrations/keyboard_remote.markdown @@ -13,6 +13,7 @@ ha_integration_type: hub related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Receive signals from a keyboard and use it as a remote control. diff --git a/source/_integrations/kira.markdown b/source/_integrations/kira.markdown index 321651c244e..bd81ec198a0 100644 --- a/source/_integrations/kira.markdown +++ b/source/_integrations/kira.markdown @@ -12,6 +12,7 @@ ha_platforms: - remote - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `kira` integration is the main integration to integrate Keene Electronics IR over IP [Kira](https://k2audio.co.uk/collections/ip-and-internet-control) modules with Home Assistant. diff --git a/source/_integrations/kiwi.markdown b/source/_integrations/kiwi.markdown index 1b05a02268d..7fd7eac56b7 100644 --- a/source/_integrations/kiwi.markdown +++ b/source/_integrations/kiwi.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `KIWI` {% term integration %} allows you to open your KIWI Smart Locks and Smart Entry Devices. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index c9c1c5fe687..101bf6d28c3 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -27,7 +27,6 @@ ha_codeowners: - '@farmio' - '@marvin-w' ha_domain: knx -ha_quality_scale: platinum ha_platforms: - binary_sensor - button diff --git a/source/_integrations/kwb.markdown b/source/_integrations/kwb.markdown index 2f086ee072a..f6d6df615b1 100644 --- a/source/_integrations/kwb.markdown +++ b/source/_integrations/kwb.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `kwb` {% term integration %} integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (https://www.kwb.net/produkte/) into Home Assistant. diff --git a/source/_integrations/lacrosse.markdown b/source/_integrations/lacrosse.markdown index 48976ef6c57..035e3e8abf8 100644 --- a/source/_integrations/lacrosse.markdown +++ b/source/_integrations/lacrosse.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `lacrosse` sensor {% term integration %} is using the data provided by a [Jeelink](https://www.digitalsmarties.net/products/jeelink) USB dongle or this [Arduino sketch](https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/36_LaCrosse-LaCrosseITPlusReader.zip). diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index cf052229617..4d08eafc75e 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -27,7 +27,6 @@ ha_integration_type: device ha_config_flow: true ha_ssdp: true ha_dhcp: true -ha_quality_scale: platinum --- [LaMetric TIME](https://lametric.com/) is a smart clock that can be used to access applications, listen to web radio and display notifications. diff --git a/source/_integrations/lannouncer.markdown b/source/_integrations/lannouncer.markdown index 5a4b3382477..ccaf3c53164 100644 --- a/source/_integrations/lannouncer.markdown +++ b/source/_integrations/lannouncer.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `lannouncer` notification {% term integration %} allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](https://play.google.com/store/apps/details?id=com.keybounce.lannouncer&hl=en_US). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. diff --git a/source/_integrations/lektrico.markdown b/source/_integrations/lektrico.markdown index cfd8359c8ec..b8b5f346c3a 100644 --- a/source/_integrations/lektrico.markdown +++ b/source/_integrations/lektrico.markdown @@ -11,6 +11,7 @@ ha_codeowners: ha_domain: lektrico ha_zeroconf: true ha_platforms: + - binary_sensor - button - number - select diff --git a/source/_integrations/lg_netcast.markdown b/source/_integrations/lg_netcast.markdown index 88d1e6a680e..8eaae6d8d2c 100644 --- a/source/_integrations/lg_netcast.markdown +++ b/source/_integrations/lg_netcast.markdown @@ -13,7 +13,6 @@ ha_codeowners: - '@Drafteed' - '@splinter98' ha_integration_type: device -ha_config_flow: true --- The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/integrations/webostv#media-player) platform. diff --git a/source/_integrations/lg_thinq.markdown b/source/_integrations/lg_thinq.markdown index 4e456645cac..118c6e89400 100644 --- a/source/_integrations/lg_thinq.markdown +++ b/source/_integrations/lg_thinq.markdown @@ -3,23 +3,25 @@ title: LG ThinQ description: Setup for LG ThinQ Integration. ha_category: - Hub -ha_release: "2024.11" +ha_release: '2024.11' ha_iot_class: Cloud Push ha_code_owners: - '@LG-ThinQ-Integration' ha_config_flow: true ha_domain: lg_thinq ha_platforms: - - switch - binary_sensor - climate - event - fan - number - - sensor - select + - sensor + - switch - vacuum ha_integration_type: integration +ha_codeowners: + - '@LG-ThinQ-Integration' --- The **LG ThinQ** integration allows you to connect LG ThinQ devices to Home Assistant. The features of this integration include: diff --git a/source/_integrations/lifx_cloud.markdown b/source/_integrations/lifx_cloud.markdown index cb587833428..ac58de11721 100644 --- a/source/_integrations/lifx_cloud.markdown +++ b/source/_integrations/lifx_cloud.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `lifx_cloud` scene {% term integration %} allows you to activate the scenes that LIFX smartphone apps store in the LIFX cloud. diff --git a/source/_integrations/lightwave.markdown b/source/_integrations/lightwave.markdown index 56ba9dddc10..bd12fd656a7 100644 --- a/source/_integrations/lightwave.markdown +++ b/source/_integrations/lightwave.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `lightwave` {% term integration %} links Home Assistant with your Lightwave WiFi link for controlling Lightwave lights, switches and TRVs. diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index 93f61d4633a..9ce266003d2 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- `limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight, or iLight. diff --git a/source/_integrations/linksys_smart.markdown b/source/_integrations/linksys_smart.markdown index 6a0495a2ed0..6f068ff1bbb 100644 --- a/source/_integrations/linksys_smart.markdown +++ b/source/_integrations/linksys_smart.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `linksys_smart` {% term integration %} offers presence detection by looking at connected devices to a Linksys Smart Wi-Fi based router. diff --git a/source/_integrations/linode.markdown b/source/_integrations/linode.markdown index d3e9d820b9c..ba8bb80effc 100644 --- a/source/_integrations/linode.markdown +++ b/source/_integrations/linode.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `linode` {% term integration %} allows you to access the information about your [Linode](https://linode.com) systems from Home Assistant. diff --git a/source/_integrations/linux_battery.markdown b/source/_integrations/linux_battery.markdown index bf86f5a5311..3f91dbe28cb 100644 --- a/source/_integrations/linux_battery.markdown +++ b/source/_integrations/linux_battery.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `linux_battery` sensor {% term integration %} is using the information stored in `/sys/class/power_supply/` on your local Linux system to display details about the current state of your battery. diff --git a/source/_integrations/lirc.markdown b/source/_integrations/lirc.markdown index 97ed4511e90..cf28ba30e99 100644 --- a/source/_integrations/lirc.markdown +++ b/source/_integrations/lirc.markdown @@ -7,6 +7,7 @@ ha_release: 0.21 ha_iot_class: Local Push ha_domain: lirc ha_integration_type: integration +ha_quality_scale: legacy --- [LIRC](https://www.lirc.org/) integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other [automation](/docs/automation/). diff --git a/source/_integrations/litejet.markdown b/source/_integrations/litejet.markdown index a878d875e67..01f038fec08 100644 --- a/source/_integrations/litejet.markdown +++ b/source/_integrations/litejet.markdown @@ -17,7 +17,6 @@ ha_platforms: ha_codeowners: - '@joncar' ha_integration_type: hub -ha_quality_scale: platinum --- LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. This integration also supports the Centralite Elegance and Centralite Jetstream. diff --git a/source/_integrations/llamalab_automate.markdown b/source/_integrations/llamalab_automate.markdown index 29f51d8c7c3..78dd9a3b506 100644 --- a/source/_integrations/llamalab_automate.markdown +++ b/source/_integrations/llamalab_automate.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `llamalab_automate` {% term integration %} uses Googles Cloud Messaging Services to push messages from Home Assistant to your Android device running the LlamaLab [Automate](https://llamalab.com/automate/) app. This can serve as an alternative to Tasker + AutoRemote. diff --git a/source/_integrations/local_file.markdown b/source/_integrations/local_file.markdown index 15592416fb9..95c0f32a2d9 100644 --- a/source/_integrations/local_file.markdown +++ b/source/_integrations/local_file.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_config_flow: true --- The **Local file** camera {% term integration %} allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system, the image displayed in Home Assistant will also be updated. The `local_file.update_file_path` action can be used to update the image using an automation. diff --git a/source/_integrations/logentries.markdown b/source/_integrations/logentries.markdown index 4eefbcb72a0..110fb73e7e0 100644 --- a/source/_integrations/logentries.markdown +++ b/source/_integrations/logentries.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `logentries` {% term integration %} makes it possible to log all state changes to [Logentries](https://logentries.com) using Logentries Webhook endpoint. diff --git a/source/_integrations/london_air.markdown b/source/_integrations/london_air.markdown index a002623bccf..a7c580b6761 100644 --- a/source/_integrations/london_air.markdown +++ b/source/_integrations/london_air.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `london_air` {% term integration %} [queries](https://api.erg.kcl.ac.uk/AirQuality/Hourly/MonitoringIndex/GroupName=London/Json) the London air quality [data feed](https://www.londonair.org.uk/LondonAir/API/) provided by Kings College London. A single sensor will be added for each `location` ([local authority district or borough](https://en.wikipedia.org/wiki/List_of_London_boroughs)) specified in the configuration file. The state of each sensor is the overall air quality in that borough. Note that only 28 of the 32 boroughs have data available. diff --git a/source/_integrations/london_underground.markdown b/source/_integrations/london_underground.markdown index 7b288994046..f91ff1123d2 100644 --- a/source/_integrations/london_underground.markdown +++ b/source/_integrations/london_underground.markdown @@ -14,6 +14,7 @@ ha_codeowners: related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `london_underground` {% term integration %} will display the status of London underground lines, as well as the Overground and DLR. diff --git a/source/_integrations/luci.markdown b/source/_integrations/luci.markdown index 302503e9879..650c0abd0c7 100644 --- a/source/_integrations/luci.markdown +++ b/source/_integrations/luci.markdown @@ -11,6 +11,7 @@ ha_domain: luci ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- This is a presence detection scanner for OpenWrt using [luci](https://openwrt.org/docs/techref/luci). diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index 162947d9f30..74f0a913793 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -7,7 +7,6 @@ ha_category: ha_release: 0.82 ha_iot_class: Cloud Polling ha_config_flow: true -ha_quality_scale: gold ha_codeowners: - '@fabaff' - '@frenck' diff --git a/source/_integrations/lw12wifi.markdown b/source/_integrations/lw12wifi.markdown index 7630c262e42..b360bb41b33 100644 --- a/source/_integrations/lw12wifi.markdown +++ b/source/_integrations/lw12wifi.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `lw12wifi` light {% term integration %} supports Lagute LW-12 Wifi LED controller. diff --git a/source/_integrations/lyric.markdown b/source/_integrations/lyric.markdown index d0d88d8d942..c3eeceb5de3 100644 --- a/source/_integrations/lyric.markdown +++ b/source/_integrations/lyric.markdown @@ -10,7 +10,6 @@ ha_config_flow: true ha_codeowners: - '@timmo001' ha_domain: lyric -ha_quality_scale: silver ha_platforms: - climate - sensor diff --git a/source/_integrations/manual_mqtt.markdown b/source/_integrations/manual_mqtt.markdown index f64d45304bc..1c9e884aeca 100644 --- a/source/_integrations/manual_mqtt.markdown +++ b/source/_integrations/manual_mqtt.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mqtt` {% term integration %} extends the [manual alarm](/integrations/manual) by adding support for MQTT control of the alarm by a remote device. It can be used to create external keypads which simply change the state of the manual alarm in Home Assistant. diff --git a/source/_integrations/marytts.markdown b/source/_integrations/marytts.markdown index 6b2034515ea..e475bc99cb6 100644 --- a/source/_integrations/marytts.markdown +++ b/source/_integrations/marytts.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `marytts` text-to-speech {% term integration %} uses [MaryTTS](https://marytts.github.io/) text-to-speech engine to read a text with natural sounding voices. diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown index c90b07e88c4..82e14a85595 100644 --- a/source/_integrations/matrix.markdown +++ b/source/_integrations/matrix.markdown @@ -15,6 +15,7 @@ ha_codeowners: related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This {% term integration %} allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index 75f4b7b4daf..7eacc835c30 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [eQ-3 MAX!](https://www.eq-3.com/products/homematic/detail/max-cube-lan-gateway.html) integration for Home Assistant allows you to connect eQ-3 MAX! components via the eQ-3 MAX! Cube. The components connects to the eQ-3 MAX! Cube via TCP and automatically makes all supported integrations available in Home Assistant. The name for each device is created by concatenating the MAX! room and device names. diff --git a/source/_integrations/mediaroom.markdown b/source/_integrations/mediaroom.markdown index e97a707895a..f4028df6034 100644 --- a/source/_integrations/mediaroom.markdown +++ b/source/_integrations/mediaroom.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mediaroom` {% term integration %} allows you to control a [Mediaroom](https://en.wikipedia.org/wiki/Ericsson_Mediaroom) Set-Top Box (STB) from Home Assistant. diff --git a/source/_integrations/melissa.markdown b/source/_integrations/melissa.markdown index e700e5fd810..ddd1bf43d45 100644 --- a/source/_integrations/melissa.markdown +++ b/source/_integrations/melissa.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `melissa` {% term integration %} is the main integration to connect to a [Melissa Climate](https://seemelissa.com/) A/C control. diff --git a/source/_integrations/meraki.markdown b/source/_integrations/meraki.markdown index 1617eb1aaf2..9aeca1e8b0a 100644 --- a/source/_integrations/meraki.markdown +++ b/source/_integrations/meraki.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network. diff --git a/source/_integrations/message_bird.markdown b/source/_integrations/message_bird.markdown index a55308738d4..77a7fddbdaa 100644 --- a/source/_integrations/message_bird.markdown +++ b/source/_integrations/message_bird.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `MessageBird` notification {% term integration %} sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index 547c1a0af31..141c9ed7190 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -11,6 +11,7 @@ ha_domain: meteoalarm ha_platforms: - binary_sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `MeteoAlarm` platform allows one to watch for weather alerts in Europe from [MeteoAlarm](https://www.meteoalarm.org) (EUMETNET). To use this binary sensor, you need the country and the province name from [MeteoAlarm](https://feeds.meteoalarm.org). Please note that it is crucial to write the country name exactly as it appears in the URL starting with https://feeds.meteoalarm.org/feeds/meteoalarm-legacy-atom-, including any hyphens used in the name. Failure to do so may result in errors or incorrect data. diff --git a/source/_integrations/mfi.markdown b/source/_integrations/mfi.markdown index c243201875f..681e66fec81 100644 --- a/source/_integrations/mfi.markdown +++ b/source/_integrations/mfi.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index 7fe4206ca97..97d0d433112 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `microsoft` text-to-speech {% term integration %} uses the [TTS engine of the Microsoft Speech Service](https://learn.microsoft.com/azure/cognitive-services/speech-service/text-to-speech) to read a text with natural sounding voices. This integration uses an API that is part of the Cognitive Services offering and is known as the Microsoft Speech API. For this integration to work, you need a free API key. You can use your [Azure subscription](https://azure.microsoft.com) to create an [Azure Speech resource](https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices). diff --git a/source/_integrations/microsoft_face.markdown b/source/_integrations/microsoft_face.markdown index 4cd04cf7263..d928c26a785 100644 --- a/source/_integrations/microsoft_face.markdown +++ b/source/_integrations/microsoft_face.markdown @@ -7,6 +7,7 @@ ha_iot_class: Cloud Push ha_release: 0.37 ha_domain: microsoft_face ha_integration_type: integration +ha_quality_scale: legacy --- The `microsoft_face` integration {% term integration %} is the main integration for Microsoft diff --git a/source/_integrations/microsoft_face_detect.markdown b/source/_integrations/microsoft_face_detect.markdown index c4c4963e5e8..0d01c6c428d 100644 --- a/source/_integrations/microsoft_face_detect.markdown +++ b/source/_integrations/microsoft_face_detect.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `microsoft_face_detect` image processing {% term integration %} allows you to use the diff --git a/source/_integrations/microsoft_face_identify.markdown b/source/_integrations/microsoft_face_identify.markdown index e344c07eab0..2df47729fb7 100644 --- a/source/_integrations/microsoft_face_identify.markdown +++ b/source/_integrations/microsoft_face_identify.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `microsoft_face_identify` image processing {% term integration %} lets you use diff --git a/source/_integrations/minecraft_server.markdown b/source/_integrations/minecraft_server.markdown index 51636ae5569..b8ef784a926 100644 --- a/source/_integrations/minecraft_server.markdown +++ b/source/_integrations/minecraft_server.markdown @@ -6,7 +6,6 @@ ha_category: - Binary sensor - Sensor ha_iot_class: Local Polling -ha_quality_scale: platinum ha_config_flow: true ha_codeowners: - '@elmurato' diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown index ecdc07c0920..aeb0f47dd20 100644 --- a/source/_integrations/minio.markdown +++ b/source/_integrations/minio.markdown @@ -9,6 +9,7 @@ ha_codeowners: - '@tkislan' ha_domain: minio ha_integration_type: integration +ha_quality_scale: legacy --- This integration adds interaction with [Minio](https://min.io). diff --git a/source/_integrations/mochad.markdown b/source/_integrations/mochad.markdown index 5fafc926e4e..44ec9d17b1e 100644 --- a/source/_integrations/mochad.markdown +++ b/source/_integrations/mochad.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mochad` {% term integration %} is the main integration to integrate all X10 platforms being controlled by [mochad](https://sourceforge.net/projects/mochad/). Besides this integration you will have to setup your X10 devices separately. diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index cc87c29be80..4506ebdcce1 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -14,7 +14,6 @@ ha_platforms: - light - sensor - switch -ha_quality_scale: silver ha_integration_type: integration related: - docs: /docs/configuration/ diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 38148009e8e..4a24a9a28ec 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -44,7 +44,6 @@ ha_platforms: - valve - water_heater ha_integration_type: integration -ha_quality_scale: platinum --- MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. diff --git a/source/_integrations/mqtt_eventstream.markdown b/source/_integrations/mqtt_eventstream.markdown index f950960043d..18bab0e7c13 100644 --- a/source/_integrations/mqtt_eventstream.markdown +++ b/source/_integrations/mqtt_eventstream.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mqtt_eventstream` {% term integration %} connects two Home Assistant instances via MQTT. diff --git a/source/_integrations/mqtt_json.markdown b/source/_integrations/mqtt_json.markdown index facd9bc3f1e..8e211bae914 100644 --- a/source/_integrations/mqtt_json.markdown +++ b/source/_integrations/mqtt_json.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mqtt_json` device tracker {% term integration %} allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. diff --git a/source/_integrations/mqtt_room.markdown b/source/_integrations/mqtt_room.markdown index cc1192d776b..d5353c3d212 100644 --- a/source/_integrations/mqtt_room.markdown +++ b/source/_integrations/mqtt_room.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mqtt_room` sensor {% term integration %} allows you to detect the indoor location of devices using MQTT clients. diff --git a/source/_integrations/mqtt_statestream.markdown b/source/_integrations/mqtt_statestream.markdown index deb62c44dd3..cf4a6fb5d5f 100644 --- a/source/_integrations/mqtt_statestream.markdown +++ b/source/_integrations/mqtt_statestream.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mqtt_statestream` {% term integration %} publishes state changes in Home Assistant to individual MQTT topics. [The MQTT integration](/integrations/mqtt/) is a prerequisite for MQTT Statestream to work. diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index 876e7d0e86d..32d78837099 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -11,6 +11,7 @@ ha_domain: msteams ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://www.microsoft.com/microsoft-teams/group-chat-software). diff --git a/source/_integrations/mvglive.markdown b/source/_integrations/mvglive.markdown index 238518005fb..60673f209c3 100644 --- a/source/_integrations/mvglive.markdown +++ b/source/_integrations/mvglive.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `mvglive` {% term integration %} will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes. diff --git a/source/_integrations/mycroft.markdown b/source/_integrations/mycroft.markdown index 14f819206cd..68f2b23a279 100644 --- a/source/_integrations/mycroft.markdown +++ b/source/_integrations/mycroft.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [Mycroft](https://mycroft.ai) is an open source voice assistant that allows you to send notifications and more to Mycroft from Home Assistant. diff --git a/source/_integrations/mythicbeastsdns.markdown b/source/_integrations/mythicbeastsdns.markdown index 2e8a8c8991e..b518e4ccca1 100644 --- a/source/_integrations/mythicbeastsdns.markdown +++ b/source/_integrations/mythicbeastsdns.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- With the `mythicbeastsdns` {% term integration %} you can automatically update your dynamic DNS entry at [Mythic Beasts](https://www.mythic-beasts.com/). diff --git a/source/_integrations/nad.markdown b/source/_integrations/nad.markdown index fc2de741441..4f9159d2134 100644 --- a/source/_integrations/nad.markdown +++ b/source/_integrations/nad.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `nad` {% term integration %} allows you to control an [NAD receiver](https://nadelectronics.com/) through RS232, TCP and Telnet from Home Assistant. diff --git a/source/_integrations/nam.markdown b/source/_integrations/nam.markdown index fcce7ede591..31ac3af9705 100644 --- a/source/_integrations/nam.markdown +++ b/source/_integrations/nam.markdown @@ -13,7 +13,6 @@ ha_platforms: - button - diagnostics - sensor -ha_quality_scale: platinum ha_zeroconf: true ha_integration_type: device --- diff --git a/source/_integrations/namecheapdns.markdown b/source/_integrations/namecheapdns.markdown index 19a8f3cb10d..1aff59df1cd 100644 --- a/source/_integrations/namecheapdns.markdown +++ b/source/_integrations/namecheapdns.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- With the `namecheapdns` {% term integration %} you can automatically update your dynamic DNS entry hosted by Namecheap's [FreeDNS](https://www.namecheap.com/store/domains/freedns/) service. diff --git a/source/_integrations/nasweb.markdown b/source/_integrations/nasweb.markdown index 190f5de9a6d..3aec35dffc7 100644 --- a/source/_integrations/nasweb.markdown +++ b/source/_integrations/nasweb.markdown @@ -14,7 +14,6 @@ ha_platforms: ha_integration_type: hub --- - The **NASweb** {% term integration %} brings the device's smart home features into **Home Assistant**, converting them into {% term entities %} that users can monitor, control, and incorporate into {% term scripts %} and {% term automations %}. NASweb combines the functions of a control panel and the ability to manage building automation. The device monitors the flow of information from sensors and programmable switches and stores settings, definitions, and configured actions. [More information.](https://www.chomtech.pl/produkt/naswebio-multisystemowy-sterownik-automatyki-budynkowej/) diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 67a425d239d..1a9790d5140 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -10,8 +10,6 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.33 ha_config_flow: true -ha_codeowners: - - '@Santobert' ha_domain: neato ha_platforms: - button diff --git a/source/_integrations/nederlandse_spoorwegen.markdown b/source/_integrations/nederlandse_spoorwegen.markdown index fa36062d9f0..398d8d98eb1 100644 --- a/source/_integrations/nederlandse_spoorwegen.markdown +++ b/source/_integrations/nederlandse_spoorwegen.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This {% term integration %} will provide you with time table information of the [Nederlandse Spoorwegen](https://www.ns.nl/) train service in the Netherlands. diff --git a/source/_integrations/ness_alarm.markdown b/source/_integrations/ness_alarm.markdown index bfbcbbc44c5..aba79b59b17 100644 --- a/source/_integrations/ness_alarm.markdown +++ b/source/_integrations/ness_alarm.markdown @@ -16,6 +16,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ness_alarm` {% term integration %} will allow Home Assistant users who own a Ness D8x/D16x alarm system to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a IP232 module that must be connected to the alarm. diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 9df10322418..43938fcad71 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -15,7 +15,6 @@ ha_config_flow: true ha_codeowners: - '@allenporter' ha_domain: nest -ha_quality_scale: platinum ha_dhcp: true ha_platforms: - camera diff --git a/source/_integrations/netdata.markdown b/source/_integrations/netdata.markdown index 28b329a1ff0..8ee9abfd352 100644 --- a/source/_integrations/netdata.markdown +++ b/source/_integrations/netdata.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `netdata` sensor {% term integration %} allows you to display information collected by [Netdata](https://www.netdata.cloud/). diff --git a/source/_integrations/netio.markdown b/source/_integrations/netio.markdown index ca5d58c164c..08ba156c85e 100644 --- a/source/_integrations/netio.markdown +++ b/source/_integrations/netio.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `netio` switch {% term integration %} allows you to control your [Netio](https://www.netio-products.com/en/overview/) Netio4, Netio4 All, and Netio 230B. These are smart outlets controllable through Ethernet and/or Wi-Fi that reports consumptions (Netio4all). This integration requires Telnet to be enabled on the Netio device. diff --git a/source/_integrations/neurio_energy.markdown b/source/_integrations/neurio_energy.markdown index 311f95668d7..7ad192938df 100644 --- a/source/_integrations/neurio_energy.markdown +++ b/source/_integrations/neurio_energy.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integrate your [Neurio](https://neur.io/) meter information into Home Assistant. To get an API key and secret, login to your [Neurio account](https://my.neur.io/#settings/applications/register) and register an application. Note the Homepage URL and Callback URL are optional. diff --git a/source/_integrations/nextdns.markdown b/source/_integrations/nextdns.markdown index 0f2e26d1e9a..cdecebee2db 100644 --- a/source/_integrations/nextdns.markdown +++ b/source/_integrations/nextdns.markdown @@ -16,7 +16,6 @@ ha_platforms: - sensor - switch ha_integration_type: service -ha_quality_scale: platinum --- NextDNS is a DNS service that protects from all kinds of security threats, blocks ADS and trackers on websites and in apps, and provides a safe and supervised Internet for kids — on all devices and on all networks. The NextDNS integration allows you to monitor NextDNS statistics and control its configuration. diff --git a/source/_integrations/nightscout.markdown b/source/_integrations/nightscout.markdown index d67e5233e18..b9fd6fcc00e 100644 --- a/source/_integrations/nightscout.markdown +++ b/source/_integrations/nightscout.markdown @@ -9,7 +9,6 @@ ha_config_flow: true ha_codeowners: - '@marciogranzotto' ha_domain: nightscout -ha_quality_scale: platinum ha_platforms: - sensor ha_integration_type: integration diff --git a/source/_integrations/niko_home_control.markdown b/source/_integrations/niko_home_control.markdown index 7d70318d816..e87525e900d 100644 --- a/source/_integrations/niko_home_control.markdown +++ b/source/_integrations/niko_home_control.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `niko_home_control` {% term integration %} allows you to integrate your [Niko Home Control](https://www.niko.eu/enus/products/niko-home-control) into Home Assistant. diff --git a/source/_integrations/nilu.markdown b/source/_integrations/nilu.markdown index c55ce4d4672..8ebc106b7ad 100644 --- a/source/_integrations/nilu.markdown +++ b/source/_integrations/nilu.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `nilu` air quality {% term integration %} shows measurements of current air quality from NILU (Norsk Institutt for luftforskning/Norwegian Institute for Air Research) sensor stations within Norway. Makes data from the open API at [luftkvalitet.info](https://www.luftkvalitet.info) and [nilu.no](https://nilu.no/) available in Home Assistant. diff --git a/source/_integrations/nissan_leaf.markdown b/source/_integrations/nissan_leaf.markdown index 9628acf1717..e238a077013 100644 --- a/source/_integrations/nissan_leaf.markdown +++ b/source/_integrations/nissan_leaf.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `nissan_leaf` {% term integration %} offers integration with the [NissanConnect EV](https://www.nissan.co.uk/dashboard.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. diff --git a/source/_integrations/nmbs.markdown b/source/_integrations/nmbs.markdown index 2e7f69a32e1..3ffa65e4feb 100644 --- a/source/_integrations/nmbs.markdown +++ b/source/_integrations/nmbs.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `nmbs` {% term integration %} will create sensors for monitoring travel time and information between 2 stations. diff --git a/source/_integrations/no_ip.markdown b/source/_integrations/no_ip.markdown index 7a04f498ebf..2de76820b8d 100644 --- a/source/_integrations/no_ip.markdown +++ b/source/_integrations/no_ip.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- With the `no_ip` {% term integration %} you can keep your current IP address in sync with your [NO-IP.com](https://www.noip.com) hostname or domain. diff --git a/source/_integrations/noaa_tides.markdown b/source/_integrations/noaa_tides.markdown index 2df28c52e01..713f3eda5de 100644 --- a/source/_integrations/noaa_tides.markdown +++ b/source/_integrations/noaa_tides.markdown @@ -11,6 +11,7 @@ ha_codeowners: ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `noaa_tides` sensor {% term integration %} uses details from [NOAA Tides and Currents](https://tidesandcurrents.noaa.gov/api/) to provide information about the prediction for the tides for any location in the United States. diff --git a/source/_integrations/nordpool.markdown b/source/_integrations/nordpool.markdown index 101096ab665..5a9ca8e3769 100644 --- a/source/_integrations/nordpool.markdown +++ b/source/_integrations/nordpool.markdown @@ -12,8 +12,9 @@ ha_codeowners: - '@gjohansson-ST' ha_domain: nordpool ha_platforms: + - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: hub --- The **Nord Pool** {% term integration %} integrates [Nord Pool Group](https://www.nordpoolgroup.com/) energy prices into Home Assistant. diff --git a/source/_integrations/norway_air.markdown b/source/_integrations/norway_air.markdown index 7c1ed2c040b..30c5e282bd9 100644 --- a/source/_integrations/norway_air.markdown +++ b/source/_integrations/norway_air.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `norway_air` {% term integration %} [queries](https://luftkvalitet.miljostatus.no/) the Norway air quality [data feed](https://api.met.no/weatherapi/airqualityforecast/0.1/documentation) provided by the Norwegian Meteorological Institute. diff --git a/source/_integrations/notify_events.markdown b/source/_integrations/notify_events.markdown index 478f017528b..77d8d9dc123 100644 --- a/source/_integrations/notify_events.markdown +++ b/source/_integrations/notify_events.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- ## Description diff --git a/source/_integrations/nsw_fuel_station.markdown b/source/_integrations/nsw_fuel_station.markdown index 6071c5ff867..e1f1adb173d 100644 --- a/source/_integrations/nsw_fuel_station.markdown +++ b/source/_integrations/nsw_fuel_station.markdown @@ -11,6 +11,7 @@ ha_domain: nsw_fuel_station ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `nsw_fuel_station` sensor platform uses the [NSW Fuel Check App](https://www.fuelcheck.nsw.gov.au/app) data as a source for current fuel price data. diff --git a/source/_integrations/nsw_rural_fire_service_feed.markdown b/source/_integrations/nsw_rural_fire_service_feed.markdown index fd77fae7699..c15d49fdcf9 100644 --- a/source/_integrations/nsw_rural_fire_service_feed.markdown +++ b/source/_integrations/nsw_rural_fire_service_feed.markdown @@ -14,6 +14,7 @@ ha_integration_type: service related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `nsw_rural_fire_service_feed` platform lets you integrate a GeoJSON feed provided by the [NSW Rural Fire Service](https://www.rfs.nsw.gov.au/fire-information/fires-near-me) with information about bush fires, grass fires, hazard reductions and more. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. diff --git a/source/_integrations/numato.markdown b/source/_integrations/numato.markdown index 768eb939b4c..577881831f5 100644 --- a/source/_integrations/numato.markdown +++ b/source/_integrations/numato.markdown @@ -16,6 +16,7 @@ ha_platforms: - sensor - switch ha_integration_type: hub +ha_quality_scale: legacy --- The `numato` integration is the base for all related GPIO platforms of the diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown index e2a23b861f7..4b69415896b 100644 --- a/source/_integrations/nws.markdown +++ b/source/_integrations/nws.markdown @@ -9,7 +9,6 @@ ha_codeowners: - '@MatthewFlamm' - '@kamiyo' ha_domain: nws -ha_quality_scale: platinum ha_config_flow: true ha_platforms: - diagnostics diff --git a/source/_integrations/nx584.markdown b/source/_integrations/nx584.markdown index 5727b406635..a15b82be381 100644 --- a/source/_integrations/nx584.markdown +++ b/source/_integrations/nx584.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `nx584` {% term integration %} provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](https://github.com/kk7ds/pynx584) which is required for this to work. diff --git a/source/_integrations/oasa_telematics.markdown b/source/_integrations/oasa_telematics.markdown index ed14ed07b56..f95f827da1f 100644 --- a/source/_integrations/oasa_telematics.markdown +++ b/source/_integrations/oasa_telematics.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `oasa_telematics` {% term integration %} will provide you with bus and trolley arrival times for Greek public transport for Athens, using real-time data from [OASA Telematics](http://telematics.oasa.gr/en/). diff --git a/source/_integrations/oem.markdown b/source/_integrations/oem.markdown index 7fdb80b31b2..ba56027cdf2 100644 --- a/source/_integrations/oem.markdown +++ b/source/_integrations/oem.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This {% term integration %} supports the ESP8266 based "WiFi MQTT Relay / Thermostat" sold by [OpenEnergyMonitor](https://web.archive.org/web/20220426080315/https://shop.openenergymonitor.com/wifi-mqtt-relay-thermostat/) (archived page, no longer for sale). The underlying [library](https://oemthermostat.readthedocs.io/) only supports this single relay variant of the [original device](https://harizanov.com/2014/12/wifi-iot-3-channel-relay-board-with-mqtt-and-http-api-using-esp8266/). diff --git a/source/_integrations/ohmconnect.markdown b/source/_integrations/ohmconnect.markdown index 7c19ee1a973..4dd7ed339f0 100644 --- a/source/_integrations/ohmconnect.markdown +++ b/source/_integrations/ohmconnect.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ohmconnect` {% term integration %} will show you the current [OhmConnect](https://www.ohmconnect.com/) status for the given OhmConnect ID. diff --git a/source/_integrations/ombi.markdown b/source/_integrations/ombi.markdown index 30f3c0dea9a..df3819b9594 100644 --- a/source/_integrations/ombi.markdown +++ b/source/_integrations/ombi.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The Ombi integration monitors data from your [Ombi](https://ombi.io) instance. diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index 59a94e19b87..2cdf11b62db 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -10,7 +10,6 @@ ha_codeowners: - '@garbled1' - '@epenet' ha_domain: onewire -ha_quality_scale: gold ha_platforms: - binary_sensor - diagnostics diff --git a/source/_integrations/openalpr_cloud.markdown b/source/_integrations/openalpr_cloud.markdown index c0ea55d94e0..95d9c47e746 100644 --- a/source/_integrations/openalpr_cloud.markdown +++ b/source/_integrations/openalpr_cloud.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The [OpenALPR](https://www.openalpr.com/) {% term integration %} for Home Assistant allows you diff --git a/source/_integrations/openerz.markdown b/source/_integrations/openerz.markdown index b573774b85d..369931302f2 100644 --- a/source/_integrations/openerz.markdown +++ b/source/_integrations/openerz.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This `openerz` sensor {% term integration %} uses [OpenERZ](http://openerz.metaodi.ch/) API to access data from Entsorgung und Recycling Zürich (ERZ). It reports the next pickup date for the specified zip and waste type. diff --git a/source/_integrations/openevse.markdown b/source/_integrations/openevse.markdown index 20283d33203..bf824fb2c4d 100644 --- a/source/_integrations/openevse.markdown +++ b/source/_integrations/openevse.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This `openevse` sensor {% term integration %} pulls data from an [OpenEVSE](https://www.openevse.com/) Charging station equipped with an ESP8266-based Wi-Fi connection. diff --git a/source/_integrations/openhardwaremonitor.markdown b/source/_integrations/openhardwaremonitor.markdown index a47fd7e4cdb..7be2b96a9c0 100644 --- a/source/_integrations/openhardwaremonitor.markdown +++ b/source/_integrations/openhardwaremonitor.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `openhardwaremonitor` {% term integration %} uses your [Open Hardware Monitor](https://openhardwaremonitor.org/) installation as a source for sensors that will display system information. diff --git a/source/_integrations/opensensemap.markdown b/source/_integrations/opensensemap.markdown index 21d1d5dddfa..1ec8f24e38f 100644 --- a/source/_integrations/opensensemap.markdown +++ b/source/_integrations/opensensemap.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `opensensemap` air quality {% term integration %} will query the open data API of [openSenseMap.org](https://opensensemap.org/) to monitor air quality sensor station. diff --git a/source/_integrations/opnsense.markdown b/source/_integrations/opnsense.markdown index 381548a3e38..2160ed84605 100644 --- a/source/_integrations/opnsense.markdown +++ b/source/_integrations/opnsense.markdown @@ -12,6 +12,7 @@ ha_iot_class: Local Polling ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- [OPNsense](https://opnsense.org/) is an open source FreeBSD based firewall diff --git a/source/_integrations/opple.markdown b/source/_integrations/opple.markdown index 66c82a47b84..ad28bd70cc6 100644 --- a/source/_integrations/opple.markdown +++ b/source/_integrations/opple.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `opple` light {% term integration %} allows you to control the state of your Opple smart light. diff --git a/source/_integrations/oru.markdown b/source/_integrations/oru.markdown index ed60f03fa58..43750e04d50 100644 --- a/source/_integrations/oru.markdown +++ b/source/_integrations/oru.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [Orange and Rockland Utility](https://oru.com) is an energy provider in NY and NJ, USA. diff --git a/source/_integrations/orvibo.markdown b/source/_integrations/orvibo.markdown index 4b8c1f691fc..f4ab0b4f18d 100644 --- a/source/_integrations/orvibo.markdown +++ b/source/_integrations/orvibo.markdown @@ -9,6 +9,7 @@ ha_domain: orvibo ha_platforms: - switch ha_integration_type: integration +ha_quality_scale: legacy --- {% caution %} diff --git a/source/_integrations/osramlightify.markdown b/source/_integrations/osramlightify.markdown index cc07e1ad148..6bd8357cf02 100644 --- a/source/_integrations/osramlightify.markdown +++ b/source/_integrations/osramlightify.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `osramlightify` {% term integration %} allows you to integrate your [Osram Lightify](https://www.osram.com/cb/lightify/index.jsp) into Home Assistant. diff --git a/source/_integrations/p1_monitor.markdown b/source/_integrations/p1_monitor.markdown index 0a919f355e4..bd69cb90a81 100644 --- a/source/_integrations/p1_monitor.markdown +++ b/source/_integrations/p1_monitor.markdown @@ -12,7 +12,6 @@ ha_domain: p1_monitor ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/palazzetti.markdown b/source/_integrations/palazzetti.markdown index e84b4cf6a0a..9f7a3d52813 100644 --- a/source/_integrations/palazzetti.markdown +++ b/source/_integrations/palazzetti.markdown @@ -11,6 +11,8 @@ ha_codeowners: ha_domain: palazzetti ha_platforms: - climate + - diagnostics + - sensor ha_integration_type: device ha_dhcp: true --- @@ -53,4 +55,4 @@ The Palazzetti integration offers the following sensors, for the products that p - Hydro temperature 1 (°C) - Hydro temperature 2 (°C) - Pellet quantity (kg) -- Pellet level (cm) \ No newline at end of file +- Pellet level (cm) diff --git a/source/_integrations/panasonic_bluray.markdown b/source/_integrations/panasonic_bluray.markdown index e6e870c8223..2624d33705d 100644 --- a/source/_integrations/panasonic_bluray.markdown +++ b/source/_integrations/panasonic_bluray.markdown @@ -9,6 +9,7 @@ ha_domain: panasonic_bluray ha_platforms: - media_player ha_integration_type: integration +ha_quality_scale: legacy --- The `panasonic_bluray` platform allows you to control a Panasonic Blu-Ray player. Note that the device must be on the same subnet as Home Assistant; connections from a different subnet will return an error. diff --git a/source/_integrations/pandora.markdown b/source/_integrations/pandora.markdown index 6c20dae36be..02165cd8637 100644 --- a/source/_integrations/pandora.markdown +++ b/source/_integrations/pandora.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- If you have a Pandora account, you can control it from Home Assistant with this media player. diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown index 94dc7967bfe..1fd51a47480 100644 --- a/source/_integrations/panel_custom.markdown +++ b/source/_integrations/panel_custom.markdown @@ -8,7 +8,7 @@ ha_quality_scale: internal ha_codeowners: - '@home-assistant/frontend' ha_domain: panel_custom -ha_integration_type: integration +ha_integration_type: system related: - docs: /docs/configuration/ title: Configuration file diff --git a/source/_integrations/pencom.markdown b/source/_integrations/pencom.markdown index ba1b0c3fcb5..d73cd9659ce 100644 --- a/source/_integrations/pencom.markdown +++ b/source/_integrations/pencom.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [Pencom Design](https://www.pencomdesign.com/) is a manufacturer of computer-controlled relay, I/O and custom boards for commercial and industrial applications. This interface to [Pencom's Relay Control Boards](https://www.pencomdesign.com/relay-boards) is designed to work over an ethernet to serial adapter (NPort). Each switch (relay) can be turned on/off, and the state of the relay can be read. diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown index 998fc48e769..5e628ea3d2c 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `picotts` text-to-speech {% term integration %} uses [Pico TTS library](https://github.com/naggety/picotts) to read out text with natural sounding voices. diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index 69937333391..3be951ddab0 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -18,6 +18,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [Pilight](https://www.pilight.org/) is a modular and open source solution to communicate with 433 MHz devices and runs on various small form factor computers. A lot of common [protocols](https://manual.pilight.org/protocols/) are already available. diff --git a/source/_integrations/pioneer.markdown b/source/_integrations/pioneer.markdown index 44f9ce2398a..441f7d81059 100644 --- a/source/_integrations/pioneer.markdown +++ b/source/_integrations/pioneer.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `pioneer` {% term integration %} allows you to control Pioneer Network Receivers. Please note, however, that the more recent Pioneer models work with [Onkyo](/integrations/onkyo) platform instead. diff --git a/source/_integrations/piper.markdown b/source/_integrations/piper.markdown index c5b5997631f..42d413a1ca4 100644 --- a/source/_integrations/piper.markdown +++ b/source/_integrations/piper.markdown @@ -14,6 +14,7 @@ ha_codeowners: ha_config_flow: true ha_platforms: - binary_sensor + - conversation - number - select - stt diff --git a/source/_integrations/pjlink.markdown b/source/_integrations/pjlink.markdown index 7f99441de15..3bddc1c0185 100644 --- a/source/_integrations/pjlink.markdown +++ b/source/_integrations/pjlink.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `pjlink` {% term integration %} allows you to control from Home Assistant, projectors with support for the [PJLink protocol](https://pjlink.jbmia.or.jp/english/index.html). diff --git a/source/_integrations/pocketcasts.markdown b/source/_integrations/pocketcasts.markdown index 769c8336915..72d9df336bd 100644 --- a/source/_integrations/pocketcasts.markdown +++ b/source/_integrations/pocketcasts.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `pocketcasts` sensor {% term integration %} lets you monitor how many unplayed episodes you have of your favorite podcasts at [Pocket Casts](https://play.pocketcasts.com/). This integration requires a [Pocket Casts + Plus](https://www.pocketcasts.com/plus/) subscription to work! diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown index 5e2a4d603e3..0a8d5745d0b 100644 --- a/source/_integrations/point.markdown +++ b/source/_integrations/point.markdown @@ -9,7 +9,6 @@ ha_category: ha_release: 0.83 ha_config_flow: true ha_iot_class: Cloud Polling -ha_quality_scale: silver ha_codeowners: - '@fredrike' ha_domain: point diff --git a/source/_integrations/proliphix.markdown b/source/_integrations/proliphix.markdown index ea652055267..85050320d2b 100644 --- a/source/_integrations/proliphix.markdown +++ b/source/_integrations/proliphix.markdown @@ -9,6 +9,7 @@ ha_domain: proliphix ha_platforms: - climate ha_integration_type: integration +ha_quality_scale: legacy --- The `proliphix` climate platform let you control Proliphix thermostats from Home Assistant. diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index 9558608a81a..cb160e81480 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `prometheus` {% term integration %} exposes metrics in a format which [Prometheus](https://prometheus.io/) can read. diff --git a/source/_integrations/prowl.markdown b/source/_integrations/prowl.markdown index 0bf3550ab76..fc535cf5605 100644 --- a/source/_integrations/prowl.markdown +++ b/source/_integrations/prowl.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `prowl` {% term integration %} uses [Prowl](https://www.prowlapp.com/) to deliver push notifications from Home Assistant to your iOS device. diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index e32646a7988..3128058d357 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [Proxmox VE](https://www.proxmox.com/en/) is an open-source server virtualization environment. This integration allows you to poll various data from your instance. diff --git a/source/_integrations/proxy.markdown b/source/_integrations/proxy.markdown index 72671279396..46fc2bed324 100644 --- a/source/_integrations/proxy.markdown +++ b/source/_integrations/proxy.markdown @@ -11,6 +11,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `proxy` camera {% term integration %} allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output. diff --git a/source/_integrations/pulseaudio_loopback.markdown b/source/_integrations/pulseaudio_loopback.markdown index e897cd07564..746597933c5 100644 --- a/source/_integrations/pulseaudio_loopback.markdown +++ b/source/_integrations/pulseaudio_loopback.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The goal behind this switch is to allow a very flexible whole home audio system based upon [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/). diff --git a/source/_integrations/pure_energie.markdown b/source/_integrations/pure_energie.markdown index 8b4460b632b..64c46e444ec 100644 --- a/source/_integrations/pure_energie.markdown +++ b/source/_integrations/pure_energie.markdown @@ -12,7 +12,6 @@ ha_domain: pure_energie ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_zeroconf: true ha_integration_type: integration --- diff --git a/source/_integrations/push.markdown b/source/_integrations/push.markdown index 3727115fef5..9c3650a20b9 100644 --- a/source/_integrations/push.markdown +++ b/source/_integrations/push.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `push` camera {% term integration %} allows you to integrate images sent over HTTP POST to Home Assistant as a camera. External applications/daemons/scripts are therefore able to "stream" images through Home Assistant. diff --git a/source/_integrations/pushsafer.markdown b/source/_integrations/pushsafer.markdown index e92328848de..a7cb450aa2d 100644 --- a/source/_integrations/pushsafer.markdown +++ b/source/_integrations/pushsafer.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The [Pushsafer service](https://www.pushsafer.com/) is a platform for the notify integration. This allows you to send messages to the user using Pushsafer. diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index b26b2b846d6..cb9bae32d13 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -12,7 +12,6 @@ ha_domain: pvoutput ha_platforms: - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: device --- diff --git a/source/_integrations/pvpc_hourly_pricing.markdown b/source/_integrations/pvpc_hourly_pricing.markdown index 5bbba6b8aca..e284f32d45d 100644 --- a/source/_integrations/pvpc_hourly_pricing.markdown +++ b/source/_integrations/pvpc_hourly_pricing.markdown @@ -5,7 +5,6 @@ ha_category: - Energy ha_release: '0.108' ha_iot_class: Cloud Polling -ha_quality_scale: platinum ha_config_flow: true ha_codeowners: - '@azogue' diff --git a/source/_integrations/pyload.markdown b/source/_integrations/pyload.markdown index 3940f1a6796..0d8532ddda5 100644 --- a/source/_integrations/pyload.markdown +++ b/source/_integrations/pyload.markdown @@ -14,7 +14,6 @@ ha_platforms: - sensor - switch ha_integration_type: service -ha_quality_scale: platinum ha_config_flow: true --- diff --git a/source/_integrations/qld_bushfire.markdown b/source/_integrations/qld_bushfire.markdown index d9e6675eebd..283ff0ee2af 100644 --- a/source/_integrations/qld_bushfire.markdown +++ b/source/_integrations/qld_bushfire.markdown @@ -14,6 +14,7 @@ ha_integration_type: service related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `qld_bushfire` platform lets you integrate a diff --git a/source/_integrations/qrcode.markdown b/source/_integrations/qrcode.markdown index 41f0377a6b0..629974158fa 100644 --- a/source/_integrations/qrcode.markdown +++ b/source/_integrations/qrcode.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `qrcode` image processing {% term integration %} enables QR code recognition from cameras. diff --git a/source/_integrations/quantum_gateway.markdown b/source/_integrations/quantum_gateway.markdown index 0ad06392196..20e45566cc2 100644 --- a/source/_integrations/quantum_gateway.markdown +++ b/source/_integrations/quantum_gateway.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `quantum_gateway` device tracker platform offers presence detection by looking at devices connected to a Verizon Fios gateway. diff --git a/source/_integrations/qvr_pro.markdown b/source/_integrations/qvr_pro.markdown index 5af0a812251..ba51e77c168 100644 --- a/source/_integrations/qvr_pro.markdown +++ b/source/_integrations/qvr_pro.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [QVR Pro](https://www.qnap.com/en/software/qvr-pro) allows you to create diff --git a/source/_integrations/qwikswitch.markdown b/source/_integrations/qwikswitch.markdown index 80bc692e920..45afef6946b 100644 --- a/source/_integrations/qwikswitch.markdown +++ b/source/_integrations/qwikswitch.markdown @@ -21,6 +21,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `qwikswitch` integration is the main integration to integrate various [QwikSwitch](https://www.qwikswitch.co.za/) devices with Home Assistant. The integration requires the QSUSB Modem device and connects to the QS Mobile application. diff --git a/source/_integrations/raincloud.markdown b/source/_integrations/raincloud.markdown index ee8231dda60..792afecba5e 100644 --- a/source/_integrations/raincloud.markdown +++ b/source/_integrations/raincloud.markdown @@ -19,6 +19,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `raincloud` {% term integration %} allows you to integrate your [Melnor RainCloud](https://wifiaquatimer.com) sprinkler system in Home Assistant. diff --git a/source/_integrations/raspyrfm.markdown b/source/_integrations/raspyrfm.markdown index 670564b865d..75734f934bf 100644 --- a/source/_integrations/raspyrfm.markdown +++ b/source/_integrations/raspyrfm.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `raspyrfm` {% term integration %} adds support for cheap RC 433 MHz outlets via one of the supported gateways. diff --git a/source/_integrations/rdw.markdown b/source/_integrations/rdw.markdown index 5669f9c7f17..943da5a464d 100644 --- a/source/_integrations/rdw.markdown +++ b/source/_integrations/rdw.markdown @@ -8,7 +8,6 @@ ha_category: ha_release: 2021.12 ha_iot_class: Cloud Polling ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@frenck' - '@joostlek' diff --git a/source/_integrations/recswitch.markdown b/source/_integrations/recswitch.markdown index 5a20e078701..dce615cc767 100644 --- a/source/_integrations/recswitch.markdown +++ b/source/_integrations/recswitch.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `recswitch` switch {% term integration %} allows you to control the Ankuoo REC Switch devices. diff --git a/source/_integrations/reddit.markdown b/source/_integrations/reddit.markdown index 051c52ee433..ac414eb151c 100644 --- a/source/_integrations/reddit.markdown +++ b/source/_integrations/reddit.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The Reddit sensor integrates data from [Reddit](https://reddit.com/) to monitor your favorite subreddits. diff --git a/source/_integrations/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown index 4495b2351ca..c2840a721c2 100644 --- a/source/_integrations/rejseplanen.markdown +++ b/source/_integrations/rejseplanen.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `rejseplanen` {% term integration %} will provide you with travel details for Danish public transport, using timetable data from [Rejseplanen](https://www.rejseplanen.dk/). diff --git a/source/_integrations/remember_the_milk.markdown b/source/_integrations/remember_the_milk.markdown index 87f83606a1a..2c2447e5a0e 100644 --- a/source/_integrations/remember_the_milk.markdown +++ b/source/_integrations/remember_the_milk.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `remember_the_milk` integration allows you to create tasks in [Remember The Milk (RTM)](https://www.rememberthemilk.com) from Home Assistant. You can use this if you want Home Assistant to send you a task that you should not forget, e.g., water the plants. The integration allows you to have several RTM accounts in parallel. diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index e10e735d52b..2a6113ad0e3 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `remote_rpi_gpio` {% term integration %} is the base for all related GPIO platforms in Home Assistant. For the platform configurations, please check their corresponding sections. diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown index ef88a243516..010fbf19077 100644 --- a/source/_integrations/renault.markdown +++ b/source/_integrations/renault.markdown @@ -13,7 +13,6 @@ ha_config_flow: true ha_codeowners: - '@epenet' ha_domain: renault -ha_quality_scale: platinum ha_platforms: - binary_sensor - button diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index a1769f86b37..0e9d0931556 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -2,8 +2,8 @@ title: Reolink IP NVR/camera description: Instructions on how to integrate Reolink devices (NVR/cameras) into Home Assistant. ha_category: - - Doorbell - Camera + - Doorbell - Media source - Update ha_iot_class: Local Push diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown index 2d4ca749e93..c4f01547697 100644 --- a/source/_integrations/repetier.markdown +++ b/source/_integrations/repetier.markdown @@ -12,6 +12,7 @@ ha_domain: repetier ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- [Repetier-Server](https://www.repetier-server.com/) is a 3D printer/CNC server, able to control multiple devices on the same server. diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index b643536161d..40cf86afd0c 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -2,9 +2,9 @@ title: RFLink description: Instructions on how to integrate RFLink gateway into Home Assistant. ha_category: - - Hub - - Cover - Binary sensor + - Cover + - Hub - Light - Sensor - Switch @@ -23,6 +23,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `rflink` {% term integration %} supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/21-rflink-). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). @@ -950,5 +951,3 @@ switch: conrad_00785c_0a: name: Motion sensor kitchen ``` - - diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index 8ac2b8c5545..d9d265dd9ab 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -15,7 +15,6 @@ ha_release: 0.42 ha_iot_class: Cloud Polling ha_config_flow: true ha_domain: ring -ha_quality_scale: silver ha_dhcp: true ha_platforms: - binary_sensor diff --git a/source/_integrations/ripple.markdown b/source/_integrations/ripple.markdown index 01ff6c2a169..b971589fffc 100644 --- a/source/_integrations/ripple.markdown +++ b/source/_integrations/ripple.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ripple` sensor {% term integration %} displays Ripple wallet balances from [Ripple.com](https://ripple.com). diff --git a/source/_integrations/risco.markdown b/source/_integrations/risco.markdown index f2992d5cdef..c23371676ac 100644 --- a/source/_integrations/risco.markdown +++ b/source/_integrations/risco.markdown @@ -11,7 +11,6 @@ ha_config_flow: true ha_codeowners: - '@OnFreund' ha_domain: risco -ha_quality_scale: platinum ha_platforms: - alarm_control_panel - binary_sensor diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown index d5ac16b5233..1ef839e78b3 100644 --- a/source/_integrations/rituals_perfume_genie.markdown +++ b/source/_integrations/rituals_perfume_genie.markdown @@ -21,7 +21,6 @@ ha_platforms: - select - sensor - switch -ha_quality_scale: silver ha_integration_type: integration --- diff --git a/source/_integrations/rmvtransport.markdown b/source/_integrations/rmvtransport.markdown index 3662ebea13b..41e9609b1ae 100644 --- a/source/_integrations/rmvtransport.markdown +++ b/source/_integrations/rmvtransport.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `rvmtransport` {% term integration %} will give you the departure time of the next bus, tram, subway or train at the next station or stop in the Rhein-Main area public transport network. Additional details such as the line number and destination are present in the attributes. diff --git a/source/_integrations/rocketchat.markdown b/source/_integrations/rocketchat.markdown index 169e8502dbf..e85833b821e 100644 --- a/source/_integrations/rocketchat.markdown +++ b/source/_integrations/rocketchat.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `rocketchat` notify {% term integration %} allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown index d39d26881e5..93aa319cf46 100644 --- a/source/_integrations/roku.markdown +++ b/source/_integrations/roku.markdown @@ -12,7 +12,6 @@ ha_iot_class: Local Polling ha_release: 0.86 ha_domain: roku ha_config_flow: true -ha_quality_scale: silver ha_codeowners: - '@ctalkington' ha_ssdp: true diff --git a/source/_integrations/route53.markdown b/source/_integrations/route53.markdown index 17516970a6a..a0db0779409 100644 --- a/source/_integrations/route53.markdown +++ b/source/_integrations/route53.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- With the `route53` {% term integration %} can you keep your AWS Route53 DNS records up to date. diff --git a/source/_integrations/rpi_camera.markdown b/source/_integrations/rpi_camera.markdown index 1b6e6c6ba67..23e065608d6 100644 --- a/source/_integrations/rpi_camera.markdown +++ b/source/_integrations/rpi_camera.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `rpi_camera` {% term integration %} allows you to integrate the Raspberry Pi camera into Home Assistant. This integration uses the application [`raspistill`](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md) to store the image from camera. diff --git a/source/_integrations/rtorrent.markdown b/source/_integrations/rtorrent.markdown index a7484d2718f..d38e78f32bb 100644 --- a/source/_integrations/rtorrent.markdown +++ b/source/_integrations/rtorrent.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `rtorrent` {% term integration %} allows you to monitor your downloads with [rTorrent](https://rakshasa.github.io/rtorrent/) from within Home Assistant and setup automations based on the information. diff --git a/source/_integrations/russound_rio.markdown b/source/_integrations/russound_rio.markdown index 3ce410b3bde..4b1b81636c9 100644 --- a/source/_integrations/russound_rio.markdown +++ b/source/_integrations/russound_rio.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: 0.49 ha_iot_class: Local Push ha_domain: russound_rio -ha_quality_scale: silver ha_platforms: - media_player ha_codeowners: diff --git a/source/_integrations/russound_rnet.markdown b/source/_integrations/russound_rnet.markdown index 889d93360f9..4693881c948 100644 --- a/source/_integrations/russound_rnet.markdown +++ b/source/_integrations/russound_rnet.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `russound_rnet` {% term integration %} allows you to control Russound devices that make use of the RNET protocol. diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown index 69e1e195518..d4a8abd5fbc 100644 --- a/source/_integrations/sabnzbd.markdown +++ b/source/_integrations/sabnzbd.markdown @@ -12,10 +12,10 @@ ha_codeowners: - '@jpbede' ha_domain: sabnzbd ha_platforms: - - sensor - binary_sensor - button - number + - sensor ha_integration_type: integration --- diff --git a/source/_integrations/saj.markdown b/source/_integrations/saj.markdown index d6270dd93f0..00505541dc9 100644 --- a/source/_integrations/saj.markdown +++ b/source/_integrations/saj.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `saj` {% term integration %} will poll a [SAJ](https://www.saj-electric.com/) solar inverter and present the values as sensors in Home Assistant. diff --git a/source/_integrations/satel_integra.markdown b/source/_integrations/satel_integra.markdown index 495e7e5fc2b..6b2267581d4 100644 --- a/source/_integrations/satel_integra.markdown +++ b/source/_integrations/satel_integra.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `satel_integra` {% term integration %} will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. Compatible with ETHM-1 Plus module with firmware version > 2.00 (version 2.04 confirmed). diff --git a/source/_integrations/schluter.markdown b/source/_integrations/schluter.markdown index c97f59da451..67e9212cceb 100644 --- a/source/_integrations/schluter.markdown +++ b/source/_integrations/schluter.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `schluter` {% term integration %} allows you to integrate your [Schluter-DITRA-HEAT-E-WiFi](https://www.schluter.com/schluter-us/en_US/ditra-heat-wifi) electric floor heating thermostat in Home Assistant. diff --git a/source/_integrations/scsgate.markdown b/source/_integrations/scsgate.markdown index 733c29caef4..07c0954a9ce 100644 --- a/source/_integrations/scsgate.markdown +++ b/source/_integrations/scsgate.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The SCSGate {% term integration %} support the [SCSGate](https://translate.google.com/translate?hl=en&sl=it&tl=en&u=http%3A%2F%2Fguidopic.altervista.org%2Feibscsgt%2Finterface.html) device. This a home-brew device allows to interact with the MyHome system from BTicino/Legrande. diff --git a/source/_integrations/sendgrid.markdown b/source/_integrations/sendgrid.markdown index 401d8eff45c..7b117f24445 100644 --- a/source/_integrations/sendgrid.markdown +++ b/source/_integrations/sendgrid.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `sendgrid` notification {% term integration %} sends email notifications via [SendGrid](https://sendgrid.com/), a proven cloud-based email platform. diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 9a32257153e..aaf80ebdbf0 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -31,7 +31,6 @@ ha_platforms: ha_homekit: true ha_dhcp: true ha_integration_type: integration -ha_quality_scale: platinum --- Integrates [Sensibo](https://sensibo.com) devices into Home Assistant. diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown index bc11162a1f8..c92645dbfd8 100644 --- a/source/_integrations/serial_pm.markdown +++ b/source/_integrations/serial_pm.markdown @@ -9,6 +9,7 @@ ha_domain: serial_pm ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- Particulate matter sensors measure the amount of very small particles in the air. diff --git a/source/_integrations/sesame.markdown b/source/_integrations/sesame.markdown index 6f001460dad..761b35bf2cd 100644 --- a/source/_integrations/sesame.markdown +++ b/source/_integrations/sesame.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `sesame` {% term integration %} allows you to control your [Sesame](https://candyhouse.co/) smart locks made by CANDY HOUSE, Inc. diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown index e50f76bc5a8..941c01c6d96 100644 --- a/source/_integrations/seven_segments.markdown +++ b/source/_integrations/seven_segments.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `seven_segments` image processing {% term integration %} allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/integrations/camera/). diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 7edc5df9009..6ada2d20a97 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -43,7 +43,6 @@ ha_platforms: - update - valve ha_integration_type: device -ha_quality_scale: platinum --- Integrate [Shelly devices](https://shelly.com) into Home Assistant. diff --git a/source/_integrations/shodan.markdown b/source/_integrations/shodan.markdown index ddc35f12ef0..ae35327721f 100644 --- a/source/_integrations/shodan.markdown +++ b/source/_integrations/shodan.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `shodan` sensor {% term integration %} is displaying the total of result of a diff --git a/source/_integrations/sigfox.markdown b/source/_integrations/sigfox.markdown index 64363c90f4c..ebc9e3d4c6b 100644 --- a/source/_integrations/sigfox.markdown +++ b/source/_integrations/sigfox.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [SigFox](https://www.sigfox.com/) {% term integration %} adding a sensor for each Sigfox device registered with your account. The default name of sensors is `sigfox_{DEVICE_ID}` where `DEVICE_ID` is the devices Sigfox ID. The state of an added Sigfox sensor is the payload of the last message published by that device. Additionally, there are attributes for the latitude and longitude coordinates of the device, as well as the signal-to-noise ratio ([snr](https://en.wikipedia.org/wiki/Signal-to-noise_ratio)). diff --git a/source/_integrations/sighthound.markdown b/source/_integrations/sighthound.markdown index 2b907d54c34..be6d51d95fe 100644 --- a/source/_integrations/sighthound.markdown +++ b/source/_integrations/sighthound.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Detect people in camera images using [Sighthound Cloud](https://www.sighthound.com/products/cloud). The Sighthound Developer tier (free for non-commercial use) allows 5000 images to be processed per month. If you need more processing per month you will need to sign up for a production account (i.e., a Basic or Pro account). diff --git a/source/_integrations/signal_messenger.markdown b/source/_integrations/signal_messenger.markdown index 98980e3bfbb..18e099b955f 100644 --- a/source/_integrations/signal_messenger.markdown +++ b/source/_integrations/signal_messenger.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `signal_messenger` {% term integration %} uses the [Signal Messenger REST API](https://github.com/bbernhard/signal-cli-rest-api) to deliver notifications from Home Assistant to your Android or iOS device. diff --git a/source/_integrations/sinch.markdown b/source/_integrations/sinch.markdown index 3f7fdb34027..5843bb49917 100644 --- a/source/_integrations/sinch.markdown +++ b/source/_integrations/sinch.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `sinch` {% term integration %} uses [Sinch](https://www.sinch.com/products/apis/messaging/sms/) to deliver notifications from Home Assistant. diff --git a/source/_integrations/sisyphus.markdown b/source/_integrations/sisyphus.markdown index 68e3a2c2b81..82d188e241e 100644 --- a/source/_integrations/sisyphus.markdown +++ b/source/_integrations/sisyphus.markdown @@ -14,6 +14,7 @@ ha_platforms: - light - media_player ha_integration_type: integration +ha_quality_scale: legacy --- The [Sisyphus](https://sisyphus-industries.com/) integration for Home Assistant allows you to observe and control your Sisyphus Kinetic Art Table. diff --git a/source/_integrations/sky_hub.markdown b/source/_integrations/sky_hub.markdown index b58858f785a..e5d4be1f893 100644 --- a/source/_integrations/sky_hub.markdown +++ b/source/_integrations/sky_hub.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `sky_hub` {% term integration %} offers presence detection by looking at connected devices to a [Sky Hub router](https://www.sky.com/shop/broadband-talk/sky-hub/) based router. diff --git a/source/_integrations/sky_remote.markdown b/source/_integrations/sky_remote.markdown index 4012afa8267..322e9a7ec90 100644 --- a/source/_integrations/sky_remote.markdown +++ b/source/_integrations/sky_remote.markdown @@ -1,5 +1,5 @@ --- -title: Sky Remote +title: Sky Remote Control description: The Sky Remote integration allows you to control a Sky box with Home Assistant. ha_category: - Remote @@ -7,8 +7,8 @@ ha_release: 2024.12 ha_domain: sky_remote ha_config_flow: true ha_codeowners: - - "@dunnmj" - - "@saty9" + - '@dunnmj' + - '@saty9' ha_iot_class: Assumed State ha_platforms: - remote @@ -104,6 +104,3 @@ The following commands are supported: - `dismiss` - Dismiss interactive content - `search` - Opens SkyQ search interface - `home` - Launches SkyQ homepage - - - diff --git a/source/_integrations/skybeacon.markdown b/source/_integrations/skybeacon.markdown index 488d085c56c..fb8c4d29819 100644 --- a/source/_integrations/skybeacon.markdown +++ b/source/_integrations/skybeacon.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `skybeacon` sensor {% term integration %} supports [CR2477](https://cnsky9.en.alibaba.com/)-powered [iBeacon](https://en.wikipedia.org/wiki/IBeacon)/eddystone sensors that come with temperature/sensor module. diff --git a/source/_integrations/slide.markdown b/source/_integrations/slide.markdown index e9c4d0a0ff2..46f748a8839 100644 --- a/source/_integrations/slide.markdown +++ b/source/_integrations/slide.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `slide` {% term integration %} allows you to integrate your [slide.store](https://slide.store/) devices in Home Assistant using the [official API](https://documenter.getpostman.com/view/6223391/S1Lu2pSf?version=latest). diff --git a/source/_integrations/smarttub.markdown b/source/_integrations/smarttub.markdown index 2ac8168aade..4a152efcc70 100644 --- a/source/_integrations/smarttub.markdown +++ b/source/_integrations/smarttub.markdown @@ -10,7 +10,6 @@ ha_category: ha_release: 2021.3 ha_iot_class: Cloud Polling ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@mdz' ha_domain: smarttub diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown index c49f8af2827..997bf42f488 100644 --- a/source/_integrations/smtp.markdown +++ b/source/_integrations/smtp.markdown @@ -9,6 +9,7 @@ ha_domain: smtp ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The SMTP platform allows you to deliver notifications from Home Assistant to an email recipient. diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown index 507a07860a0..e2df623689a 100644 --- a/source/_integrations/snips.markdown +++ b/source/_integrations/snips.markdown @@ -7,6 +7,7 @@ ha_release: 0.48 ha_domain: snips ha_iot_class: Local Push ha_integration_type: integration +ha_quality_scale: legacy --- {% warning %} diff --git a/source/_integrations/snmp.markdown b/source/_integrations/snmp.markdown index f3c91e57bc5..5a2c31b760f 100644 --- a/source/_integrations/snmp.markdown +++ b/source/_integrations/snmp.markdown @@ -16,6 +16,7 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@nmaggioni' +ha_quality_scale: legacy --- A lot of Wi-Fi access points and Wi-Fi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/managing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks and Wi-Fi registrations. diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index 31ce73e4f7a..ec9b27cec88 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -16,6 +16,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `solaredge_local` {% term integration %} uses the local API available on some SolarEdge Inverters to allow you to get details from your SolarEdge solar power setup and integrate these into your Home Assistant installation. diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index 075813c32aa..7f0cc858c89 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -15,6 +15,7 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration +ha_quality_scale: platinum --- The **Solarlog** {% term integration %} uses the open JSON interface on [Solar-Log PV monitoring systems](https://www.solar-log.com/) to get details from your Solar-Log device and integrate these into your Home Assistant installation. With the integration you may monitor the solar power production and power consumption as tracked with your Solar-Log device. diff --git a/source/_integrations/sonarr.markdown b/source/_integrations/sonarr.markdown index b10542a3d84..b269ebc74e0 100644 --- a/source/_integrations/sonarr.markdown +++ b/source/_integrations/sonarr.markdown @@ -9,7 +9,6 @@ ha_domain: sonarr ha_config_flow: true ha_codeowners: - '@ctalkington' -ha_quality_scale: silver ha_platforms: - sensor ha_integration_type: integration diff --git a/source/_integrations/songpal.markdown b/source/_integrations/songpal.markdown index 7347c594930..bcb1f72ea06 100644 --- a/source/_integrations/songpal.markdown +++ b/source/_integrations/songpal.markdown @@ -6,7 +6,6 @@ ha_category: ha_iot_class: Local Push ha_release: 0.65 ha_config_flow: true -ha_quality_scale: gold ha_codeowners: - '@rytilahti' - '@shenxn' diff --git a/source/_integrations/sony_projector.markdown b/source/_integrations/sony_projector.markdown index 1080e3cc90c..40a83fd4fc9 100644 --- a/source/_integrations/sony_projector.markdown +++ b/source/_integrations/sony_projector.markdown @@ -9,6 +9,7 @@ ha_domain: sony_projector ha_platforms: - switch ha_integration_type: integration +ha_quality_scale: legacy --- The `sony_projector` switch platform allows you to control the state of SDCP compatible network-connected projectors from [Sony](https://www.sony.com/). diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 6cee5f660f9..d694feae988 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `spaceapi` {% term integration %} allow Hackerspaces to expose information to web apps or any other application with the [SpaceAPI](https://spaceapi.io/). diff --git a/source/_integrations/spc.markdown b/source/_integrations/spc.markdown index fe376503614..b6f062abee1 100644 --- a/source/_integrations/spc.markdown +++ b/source/_integrations/spc.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Home Assistant has support to integrate your [Vanderbilt SPC](https://www.spcsupportinfo.com/SPCConnectPro/) alarm panel and any connected motion, door, smoke and technical sensors. diff --git a/source/_integrations/splunk.markdown b/source/_integrations/splunk.markdown index ba2a75110b9..f7a65ef70ab 100644 --- a/source/_integrations/splunk.markdown +++ b/source/_integrations/splunk.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `splunk` integration makes it possible to log all state changes to an external [Splunk](https://splunk.com/) database using Splunk's HTTP Event Collector (HEC) feature. You can either use this alone, or with the Home Assistant for Splunk [app](https://github.com/miniconfig/splunk-homeassistant). Since the HEC feature is new to Splunk, you will need to use at least version 6.3. diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index af686b8ea09..aceba7e21ee 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: 0.43 ha_iot_class: Cloud Polling ha_config_flow: true -ha_quality_scale: silver ha_codeowners: - '@frenck' - '@joostlek' @@ -169,4 +168,4 @@ Spotify provides sensors that display information about the song that is current - **Song speechiness**: In percent. Describes the presence of spoken words in a song. The more exclusively speech-like the recording (for example, talk show, audio book, poetry), the higher the value. - **Song tempo**: The speed of the piece of music that is currently playing, in beats per minute (bpm). - **Song time signature**: The time signature (meter) is a notational convention to specify how many beats are in each bar (or measure). For example: 4/4, 6/8. -- **Song valence**. In percent. Tracks with high valence sound more positive (happy, cheerful, euphoric), while tracks with low valence sound more negative (sad, depressed, angry). \ No newline at end of file +- **Song valence**. In percent. Tracks with high valence sound more positive (happy, cheerful, euphoric), while tracks with low valence sound more negative (sad, depressed, angry). diff --git a/source/_integrations/starlingbank.markdown b/source/_integrations/starlingbank.markdown index f068d52e58e..221da11a477 100644 --- a/source/_integrations/starlingbank.markdown +++ b/source/_integrations/starlingbank.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The Starling Bank sensor {% term integration %} allows you to monitor your account balance data as sensors in Home Assistant. diff --git a/source/_integrations/starlink.markdown b/source/_integrations/starlink.markdown index a6a1319420b..12bf682fa45 100644 --- a/source/_integrations/starlink.markdown +++ b/source/_integrations/starlink.markdown @@ -24,7 +24,6 @@ ha_platforms: - switch - time ha_integration_type: integration -ha_quality_scale: silver --- The Starlink integration allows you to integrate your [Starlink](https://www.starlink.com/) into Home Assistant. diff --git a/source/_integrations/startca.markdown b/source/_integrations/startca.markdown index 0c911cecaf0..97790062df6 100644 --- a/source/_integrations/startca.markdown +++ b/source/_integrations/startca.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Integrate your [Start.ca](https://www.start.ca/) account information into Home Assistant. diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index b625227a149..421b506172c 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -15,7 +15,6 @@ ha_config_flow: true ha_platforms: - sensor ha_integration_type: helper -ha_config_flow: true --- The `statistics` integration observes the state of a source sensor and provides aggregated statistical characteristics about its recent past. This integration can be useful in automation, for example, to trigger an action when the air humidity in the bathroom settles after a hot shower or when the number of brewed coffees over a day gets too high. diff --git a/source/_integrations/statsd.markdown b/source/_integrations/statsd.markdown index 007305b3445..79a2e46b691 100644 --- a/source/_integrations/statsd.markdown +++ b/source/_integrations/statsd.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `statsd` {% term integration %} makes it possible to transfer all state changes to an external [StatsD](https://github.com/etsy/statsd) instance. diff --git a/source/_integrations/stiebel_eltron.markdown b/source/_integrations/stiebel_eltron.markdown index e58d2a1af09..95b6078c2e6 100644 --- a/source/_integrations/stiebel_eltron.markdown +++ b/source/_integrations/stiebel_eltron.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `stiebel_eltron` {% term integration %} lets you control integral ventilation or heat pump units of [STIEBEL ELTRON](https://www.stiebel-eltron.com). diff --git a/source/_integrations/supervisord.markdown b/source/_integrations/supervisord.markdown index 9c13337418f..a3ed429fe14 100644 --- a/source/_integrations/supervisord.markdown +++ b/source/_integrations/supervisord.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `supervisord` {% term integration %} allows you to track the states of [Supervisord](http://supervisord.org/). diff --git a/source/_integrations/supla.markdown b/source/_integrations/supla.markdown index e80c5bc3a13..9fe9e22f1bf 100644 --- a/source/_integrations/supla.markdown +++ b/source/_integrations/supla.markdown @@ -13,6 +13,7 @@ ha_platforms: - cover - switch ha_integration_type: integration +ha_quality_scale: legacy --- The SUPLA integration allows you to use [SUPLA](https://supla.org/) devices in Home Assistant. diff --git a/source/_integrations/swiss_hydrological_data.markdown b/source/_integrations/swiss_hydrological_data.markdown index 9b5ab53ec15..82c950b5848 100644 --- a/source/_integrations/swiss_hydrological_data.markdown +++ b/source/_integrations/swiss_hydrological_data.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `swiss_hydrological_data` {% term integration %} will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland. diff --git a/source/_integrations/swisscom.markdown b/source/_integrations/swisscom.markdown index 7e6ac5557fb..3e898680e8e 100644 --- a/source/_integrations/swisscom.markdown +++ b/source/_integrations/swisscom.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `swisscom` {% term integration %} offers presence detection by looking at connected devices to an [Internet-Box](https://www.swisscom.ch/en/residential/help/device/internet-router.html) router from [Swisscom](https://www.swisscom.ch) which is an Internet provider in Switzerland. diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown index a6fbfc81e30..6ed774ad077 100644 --- a/source/_integrations/switchbot_cloud.markdown +++ b/source/_integrations/switchbot_cloud.markdown @@ -3,10 +3,10 @@ title: SwitchBot Cloud description: Instructions on how to set up SwitchBot Devices. ha_category: - Hub + - Lock - Plug - Remote - Sensor - - Lock - Switch - Vacuum ha_release: '2023.10' diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 1b06004c33f..98859cf0a12 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -21,7 +21,6 @@ ha_platforms: - sensor - switch ha_config_flow: true -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/switchmate.markdown b/source/_integrations/switchmate.markdown index 3ac095cabfc..67eecbce6de 100644 --- a/source/_integrations/switchmate.markdown +++ b/source/_integrations/switchmate.markdown @@ -12,6 +12,7 @@ ha_domain: switchmate ha_platforms: - switch ha_integration_type: integration +ha_quality_scale: legacy --- This `Switchmate` switch platform allows you to control Switchmate [devices]( https://www.mysimplysmarthome.com/products/switchmate-switches/). diff --git a/source/_integrations/syncthing.markdown b/source/_integrations/syncthing.markdown index 295560a1aa5..e06ed4aabc9 100644 --- a/source/_integrations/syncthing.markdown +++ b/source/_integrations/syncthing.markdown @@ -6,7 +6,6 @@ ha_category: - Sensor ha_release: 2021.6 ha_iot_class: Local Polling -ha_quality_scale: silver ha_config_flow: true ha_codeowners: - '@zhulik' diff --git a/source/_integrations/synology_chat.markdown b/source/_integrations/synology_chat.markdown index bb0a16bddcb..fda6d0dbb5d 100644 --- a/source/_integrations/synology_chat.markdown +++ b/source/_integrations/synology_chat.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `synology_chat` notification {% term integration %} allows you to deliver notifications to your [Synology Chat](https://www.synology.com/en-us/dsm/feature/chat) install as a Synology Chat bot. diff --git a/source/_integrations/synology_srm.markdown b/source/_integrations/synology_srm.markdown index 86812afc83f..4573a28ac4b 100644 --- a/source/_integrations/synology_srm.markdown +++ b/source/_integrations/synology_srm.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This {% term integration %} allows you to detect presence by looking at connected devices to a [Synology SRM](https://www.synology.com/srm) router. diff --git a/source/_integrations/syslog.markdown b/source/_integrations/syslog.markdown index 253c2564a4e..b453edfc478 100644 --- a/source/_integrations/syslog.markdown +++ b/source/_integrations/syslog.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `syslog` {% term integration %} allows you to deliver notifications from Home Assistant to the local syslog. diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown index 1b4e131a427..9b5ccaf49c2 100644 --- a/source/_integrations/system_bridge.markdown +++ b/source/_integrations/system_bridge.markdown @@ -11,7 +11,6 @@ ha_config_flow: true ha_codeowners: - '@timmo001' ha_domain: system_bridge -ha_quality_scale: silver ha_platforms: - binary_sensor - media_player diff --git a/source/_integrations/tailscale.markdown b/source/_integrations/tailscale.markdown index 870078a3ba7..ce1babde93d 100644 --- a/source/_integrations/tailscale.markdown +++ b/source/_integrations/tailscale.markdown @@ -15,7 +15,6 @@ ha_platforms: - binary_sensor - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: hub --- diff --git a/source/_integrations/tailwind.markdown b/source/_integrations/tailwind.markdown index cfba164ecfc..d9f297e6ad2 100644 --- a/source/_integrations/tailwind.markdown +++ b/source/_integrations/tailwind.markdown @@ -17,7 +17,6 @@ ha_platforms: - diagnostics - number ha_integration_type: device -ha_quality_scale: platinum ha_dhcp: true --- diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index 47925d4186f..57d5f4e1d0c 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- Add [Tank Utility](https://www.tankutility.com/) propane tank monitors to Home Assistant. diff --git a/source/_integrations/tankerkoenig.markdown b/source/_integrations/tankerkoenig.markdown index a13e991a25f..8c3a7c2709e 100755 --- a/source/_integrations/tankerkoenig.markdown +++ b/source/_integrations/tankerkoenig.markdown @@ -17,7 +17,6 @@ ha_platforms: - sensor ha_config_flow: true ha_integration_type: integration -ha_quality_scale: platinum --- The `tankerkoenig` platform allows you to monitor the fuel prices with [tankerkoenig.de](https://www.tankerkoenig.de/) from within Home Assistant and setup automations based on the information. diff --git a/source/_integrations/tapsaff.markdown b/source/_integrations/tapsaff.markdown index 0b7ece0c31b..9379c401a3c 100644 --- a/source/_integrations/tapsaff.markdown +++ b/source/_integrations/tapsaff.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `tapsaff` binary sensor {% term integration %} provides the 'Taps Aff' status for a given location within the UK using [Taps Aff](https://www.taps-aff.co.uk/). diff --git a/source/_integrations/tcp.markdown b/source/_integrations/tcp.markdown index 750b573618d..9e05b366df8 100644 --- a/source/_integrations/tcp.markdown +++ b/source/_integrations/tcp.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The TCP {% term integration %} allows the integration of some services for which a specific Home Assistant integration does not exist. If the service communicates over a TCP socket with a simple request/reply mechanism then the chances are that this integration will allow integration with it. diff --git a/source/_integrations/technove.markdown b/source/_integrations/technove.markdown index f524bae9633..ff82a975bec 100644 --- a/source/_integrations/technove.markdown +++ b/source/_integrations/technove.markdown @@ -17,7 +17,6 @@ ha_platforms: - sensor - switch ha_integration_type: device -ha_quality_scale: platinum --- The TechnoVE integration provides connectivity with TechnoVE Smart Charging Station through the station local API. diff --git a/source/_integrations/ted5000.markdown b/source/_integrations/ted5000.markdown index 8a2a8a4e0bf..8c6e290e518 100644 --- a/source/_integrations/ted5000.markdown +++ b/source/_integrations/ted5000.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `ted 5000` monitors electricity consumption/production by connecting to the [TED](https://www.theenergydetective.com/) gateway, itself connected to one or several Measuring Transmitting Units (MTU). The platform creates up to two sensors per MTU, one for Wattage the other for Voltage. diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index 53030077bcd..715d39c560b 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `telegram` {% term integration %} uses [Telegram](https://www.telegram.org) to deliver notifications from Home Assistant to your Telegram application(s). diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown index 329ee348122..3c66303649f 100644 --- a/source/_integrations/telegram_bot.markdown +++ b/source/_integrations/telegram_bot.markdown @@ -7,6 +7,7 @@ ha_release: 0.42 ha_iot_class: Cloud Push ha_domain: telegram_bot ha_integration_type: integration +ha_quality_scale: legacy --- Use Telegram on your mobile or desktop device to send and receive messages or commands to/from your Home Assistant. diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown index d25ec1648c6..648223416c6 100644 --- a/source/_integrations/tellduslive.markdown +++ b/source/_integrations/tellduslive.markdown @@ -11,7 +11,6 @@ ha_category: ha_release: 0.11 ha_config_flow: true ha_iot_class: Cloud Polling -ha_quality_scale: silver ha_codeowners: - '@fredrike' ha_domain: tellduslive diff --git a/source/_integrations/tellstick.markdown b/source/_integrations/tellstick.markdown index 7b2303e9fbd..b2378a1484b 100644 --- a/source/_integrations/tellstick.markdown +++ b/source/_integrations/tellstick.markdown @@ -19,6 +19,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `tellstick` {% term integration %} integrates [TellStick][tellstick-gateway] devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 MHz. There are a number of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) who are selling products that work with TellStick. For more details, please check the TellStick [protocol list](http://developer.telldus.com/wiki/TellStick_conf). diff --git a/source/_integrations/telnet.markdown b/source/_integrations/telnet.markdown index ddbd13a1a5f..2440d7b88ab 100644 --- a/source/_integrations/telnet.markdown +++ b/source/_integrations/telnet.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `telnet` switch {% term integration %} allows you to control devices with telnet commands. diff --git a/source/_integrations/temper.markdown b/source/_integrations/temper.markdown index 4efd31c9263..fdb12ddf43a 100644 --- a/source/_integrations/temper.markdown +++ b/source/_integrations/temper.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This `temper` sensor {% term integration %} allows you to get the current temperature from a TEMPer device. diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 4d11c34ddcb..7cab660b668 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -14,7 +14,6 @@ ha_iot_class: Local Push ha_quality_scale: internal ha_codeowners: - '@PhracturedBlue' - - '@tetienne' - '@home-assistant/core' ha_domain: template ha_platforms: diff --git a/source/_integrations/tensorflow.markdown b/source/_integrations/tensorflow.markdown index 53294479cd7..ee4969ef617 100644 --- a/source/_integrations/tensorflow.markdown +++ b/source/_integrations/tensorflow.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The TensorFlow image processing {% term integration %} allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. diff --git a/source/_integrations/tesla_fleet.markdown b/source/_integrations/tesla_fleet.markdown index 3c5a1c507c6..108f39867b4 100644 --- a/source/_integrations/tesla_fleet.markdown +++ b/source/_integrations/tesla_fleet.markdown @@ -33,7 +33,6 @@ ha_platforms: - select - sensor - switch -ha_quality_scale: gold ha_integration_type: integration --- diff --git a/source/_integrations/teslemetry.markdown b/source/_integrations/teslemetry.markdown index 364d5070d77..49e74f1b850 100644 --- a/source/_integrations/teslemetry.markdown +++ b/source/_integrations/teslemetry.markdown @@ -21,7 +21,6 @@ ha_config_flow: true ha_codeowners: - '@Bre77' ha_domain: teslemetry -ha_quality_scale: platinum ha_platforms: - binary_sensor - button diff --git a/source/_integrations/tessie.markdown b/source/_integrations/tessie.markdown index 913ca0c17f8..2400b087c46 100644 --- a/source/_integrations/tessie.markdown +++ b/source/_integrations/tessie.markdown @@ -34,7 +34,6 @@ ha_platforms: - switch - update ha_integration_type: integration -ha_quality_scale: platinum --- The Tessie integration exposes various commands and sensors from the Tesla vehicles and energy products connected to your [Tessie](https://tessie.com/) subscription. diff --git a/source/_integrations/tfiac.markdown b/source/_integrations/tfiac.markdown index 60e8b51135a..1cbdb909758 100644 --- a/source/_integrations/tfiac.markdown +++ b/source/_integrations/tfiac.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `tfiac` {% term integration %} integrates several vendors air conditioning systems, that uses the Tfiac mobile app, into Home Assistant. App currently available at [Play Store](https://play.google.com/store/apps/details?id=com.tcl.export) and [App Store](https://itunes.apple.com/app/tfiac/id1059938398). diff --git a/source/_integrations/thermoworks_smoke.markdown b/source/_integrations/thermoworks_smoke.markdown index 1b5488a96b4..05c72b52188 100644 --- a/source/_integrations/thermoworks_smoke.markdown +++ b/source/_integrations/thermoworks_smoke.markdown @@ -9,6 +9,7 @@ ha_domain: thermoworks_smoke ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `thermoworks_smoke` sensor platform pulls data for your [ThermoWorks Smoke Thermometer](https://www.thermoworks.com/Smoke). diff --git a/source/_integrations/thingspeak.markdown b/source/_integrations/thingspeak.markdown index e8171cbf885..875578b5a7f 100644 --- a/source/_integrations/thingspeak.markdown +++ b/source/_integrations/thingspeak.markdown @@ -7,6 +7,7 @@ ha_iot_class: Cloud Push ha_release: 0.32 ha_domain: thingspeak ha_integration_type: integration +ha_quality_scale: legacy --- The `thingspeak` integrations makes Home Assistant communicate with the [ThingSpeak API](https://thingspeak.com/). diff --git a/source/_integrations/thinkingcleaner.markdown b/source/_integrations/thinkingcleaner.markdown index e008060e9d3..385583b42d4 100644 --- a/source/_integrations/thinkingcleaner.markdown +++ b/source/_integrations/thinkingcleaner.markdown @@ -11,6 +11,7 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_quality_scale: legacy --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/thomson.markdown b/source/_integrations/thomson.markdown index d7009388d8f..5b08f356cc6 100644 --- a/source/_integrations/thomson.markdown +++ b/source/_integrations/thomson.markdown @@ -9,6 +9,7 @@ ha_iot_class: Local Polling ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor. diff --git a/source/_integrations/tibber.markdown b/source/_integrations/tibber.markdown index fa01b4d7fdf..91b245cb05a 100644 --- a/source/_integrations/tibber.markdown +++ b/source/_integrations/tibber.markdown @@ -7,7 +7,6 @@ ha_category: - Sensor ha_release: 0.8 ha_iot_class: Cloud Polling -ha_quality_scale: silver ha_codeowners: - '@danielhiversen' ha_domain: tibber diff --git a/source/_integrations/tikteck.markdown b/source/_integrations/tikteck.markdown index 1234327ea0b..1775063f54c 100644 --- a/source/_integrations/tikteck.markdown +++ b/source/_integrations/tikteck.markdown @@ -9,6 +9,7 @@ ha_domain: tikteck ha_platforms: - light ha_integration_type: integration +ha_quality_scale: legacy --- Support for the Bluetooth smart bulb from [Tikteck](https://www.tikteck.com/). To enable these lights, add the following lines to your {% term "`configuration.yaml`" %} file: diff --git a/source/_integrations/tmb.markdown b/source/_integrations/tmb.markdown index 1b70653784d..f1cce9dbfe7 100644 --- a/source/_integrations/tmb.markdown +++ b/source/_integrations/tmb.markdown @@ -11,6 +11,7 @@ ha_domain: tmb ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- This sensor will provide you the remaining time, in minutes, for the next bus in a specific stop by using the [iBus service](https://www.tmb.cat/en/barcelona/tmb-ibus). diff --git a/source/_integrations/tomato.markdown b/source/_integrations/tomato.markdown index 300986e4005..693798a28cd 100644 --- a/source/_integrations/tomato.markdown +++ b/source/_integrations/tomato.markdown @@ -9,6 +9,7 @@ ha_iot_class: Local Polling ha_platforms: - device_tracker ha_integration_type: integration +ha_quality_scale: legacy --- The `tomato` device tracker integration allows one to tracker devices which are diff --git a/source/_integrations/torque.markdown b/source/_integrations/torque.markdown index f446f1db1b6..5b0458cd855 100644 --- a/source/_integrations/torque.markdown +++ b/source/_integrations/torque.markdown @@ -9,6 +9,7 @@ ha_domain: torque ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `torque` platform will allow you to monitor [Torque](https://torque-bhp.com/) data relayed from a Bluetooth OBD2 stick via the Torque mobile application. diff --git a/source/_integrations/touchline.markdown b/source/_integrations/touchline.markdown index 0f2dc45df46..3155f5b3b5f 100644 --- a/source/_integrations/touchline.markdown +++ b/source/_integrations/touchline.markdown @@ -9,6 +9,7 @@ ha_domain: touchline ha_platforms: - climate ha_integration_type: integration +ha_quality_scale: legacy --- The `touchline` climate platform let you control [ROTH Touchline](https://www.roth-uk.com/en/roth-touchline.htm) floor heating thermostats from Roth. diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 3fd0f30ba83..41d800b1e7b 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -34,7 +34,6 @@ ha_platforms: - siren - switch ha_dhcp: true -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/tplink_lte.markdown b/source/_integrations/tplink_lte.markdown index 89e99f6d3c9..727b70e9081 100644 --- a/source/_integrations/tplink_lte.markdown +++ b/source/_integrations/tplink_lte.markdown @@ -10,6 +10,7 @@ ha_domain: tplink_lte ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The TP-Link LTE integration for Home Assistant makes it possible to send SMS's from the TP-Link LTE router. Phone numbers have to be pre-defined as part of the YAML configuration, and each phone number will turn up as additional notify action in Home Assistant. The integration adds a new notify action for each adds a notification action to Home Assistant that can be used to send SMSs provides a notification action that will send an SMS. Tested only with TL-MR6400 v4. diff --git a/source/_integrations/transport_nsw.markdown b/source/_integrations/transport_nsw.markdown index 399165b7f57..035ce938c29 100644 --- a/source/_integrations/transport_nsw.markdown +++ b/source/_integrations/transport_nsw.markdown @@ -9,6 +9,7 @@ ha_domain: transport_nsw ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop for bus, train, light rail or ferry. diff --git a/source/_integrations/travisci.markdown b/source/_integrations/travisci.markdown index 7886cb21906..3ca2c80d6f0 100644 --- a/source/_integrations/travisci.markdown +++ b/source/_integrations/travisci.markdown @@ -9,6 +9,7 @@ ha_domain: travisci ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- With this sensor platform, you will be able to integrate the test build results reported by [Travis-CI](https://travis-ci.org/) working within Home Assistant. diff --git a/source/_integrations/twentemilieu.markdown b/source/_integrations/twentemilieu.markdown index b233d5351ff..434e2d8e2b9 100644 --- a/source/_integrations/twentemilieu.markdown +++ b/source/_integrations/twentemilieu.markdown @@ -15,7 +15,6 @@ ha_platforms: - calendar - diagnostics - sensor -ha_quality_scale: platinum ha_integration_type: service --- diff --git a/source/_integrations/twilio_call.markdown b/source/_integrations/twilio_call.markdown index d39677cfacd..301cf597e37 100644 --- a/source/_integrations/twilio_call.markdown +++ b/source/_integrations/twilio_call.markdown @@ -9,6 +9,7 @@ ha_iot_class: Cloud Push ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index 5850f113425..90d511e6fb4 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -9,6 +9,7 @@ ha_iot_class: Cloud Push ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The `twilio_sms` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/twitter.markdown b/source/_integrations/twitter.markdown index 485759ba514..dfb1a4a8e21 100644 --- a/source/_integrations/twitter.markdown +++ b/source/_integrations/twitter.markdown @@ -9,6 +9,7 @@ ha_iot_class: Cloud Push ha_platforms: - notify ha_integration_type: integration +ha_quality_scale: legacy --- The `twitter` notification platform uses [X](https://twitter.com) to deliver notifications from Home Assistant. diff --git a/source/_integrations/ubus.markdown b/source/_integrations/ubus.markdown index 523308d0c41..c6f4a6c4dc8 100644 --- a/source/_integrations/ubus.markdown +++ b/source/_integrations/ubus.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This is a presence detection scanner for [OpenWrt](https://openwrt.org/) using [ubus](https://wiki.openwrt.org/doc/techref/ubus). It scans for changes in `hostapd.*`, which will detect and report changes in devices connected to the access point on the router. diff --git a/source/_integrations/uk_transport.markdown b/source/_integrations/uk_transport.markdown index d9470de17c2..b8cea3a02bf 100644 --- a/source/_integrations/uk_transport.markdown +++ b/source/_integrations/uk_transport.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `uk_transport` {% term integration %} will display the time in minutes until the next departure in a specified direction from of a configured train station or bus stop. The sensor uses [transportAPI](https://www.transportapi.com/) to query live departure data and requires a developer application ID and key which can be obtained [here](https://developer.transportapi.com/). The [free tier](https://www.transportapi.com/blog/2022/08/introducing-the-home-use-plan-for-transportapi/) allows 30 requests a day, which is sufficient for a single sensor refreshing every 48 minutes. diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 35899099119..49c417ca237 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -11,7 +11,6 @@ ha_category: ha_release: 0.81 ha_iot_class: Local Push ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@Kane610' ha_domain: unifi diff --git a/source/_integrations/unifi_direct.markdown b/source/_integrations/unifi_direct.markdown index 2decfc3e17c..018d62e1d4e 100644 --- a/source/_integrations/unifi_direct.markdown +++ b/source/_integrations/unifi_direct.markdown @@ -14,6 +14,7 @@ ha_codeowners: related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- This {% term integration %} 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/unifiled.markdown b/source/_integrations/unifiled.markdown index 9141fede2f0..402a7646ba0 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- [UniFi LED](https://unifi-led.ui.com/) by [Ubiquiti Networks, inc.](https://www.ui.com/) is a system of controller managed LED light panels and dimmers. diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index eb581ff9f8e..6cb8b4e6729 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -37,6 +37,8 @@ ha_platforms: - switch - text ha_integration_type: hub +ha_codeowners: + - '@RaHehl' --- The **UniFi Protect** {% term integration %} adds support for retrieving camera feeds and sensor data from a [UniFi Protect application](https://ui.com/camera-security) by [Ubiquiti Networks, inc.](https://www.ui.com/) that is running on a UniFi OS Console. diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown index 3138140f85c..bf6d15e4883 100644 --- a/source/_integrations/upc_connect.markdown +++ b/source/_integrations/upc_connect.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `upc_connect` {% term integration %} offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/en/internet/learn-about-internet/) from [Liberty Global](https://www.libertyglobal.com) (also known as UPC Cablecom in Switzerland) which is an Internet provider in Switzerland, Austria, the Netherlands (under Ziggo) and Hungary (under Vodafone). diff --git a/source/_integrations/uptimerobot.markdown b/source/_integrations/uptimerobot.markdown index e69de52cd11..d7f4ede7d4f 100644 --- a/source/_integrations/uptimerobot.markdown +++ b/source/_integrations/uptimerobot.markdown @@ -14,7 +14,6 @@ ha_platforms: - diagnostics - sensor - switch -ha_quality_scale: platinum ha_config_flow: true ha_integration_type: integration --- diff --git a/source/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown index 2c09b6fd270..227c084a2b7 100644 --- a/source/_integrations/usgs_earthquakes_feed.markdown +++ b/source/_integrations/usgs_earthquakes_feed.markdown @@ -14,6 +14,7 @@ ha_integration_type: service related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `usgs_earthquakes_feed` platform lets you integrate a GeoJSON feed provided by the [U.S. Geological Survey](https://earthquake.usgs.gov/) with information about seismic events like earthquakes. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. diff --git a/source/_integrations/uvc.markdown b/source/_integrations/uvc.markdown index 997db67b53e..a427d88592a 100644 --- a/source/_integrations/uvc.markdown +++ b/source/_integrations/uvc.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `uvc` camera {% term integration %} allows you to integrate [UniFi Video Camera (UVC)](https://www.ui.com/products/#unifivideo) into Home Assistant. diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index d3bd0da0d9a..f48dfb3d6c6 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -99,4 +99,4 @@ Set the profile, and optionally a duration for the profile to be active. | Data attribute | Optional | Description | |----------------|---------:|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `profile` | no | Profile to set, one of `home`, `away`, `boost`, `fireplace`, or `extra`. | -| `duration` | yes | Duration to activate the profile for; in minutes. `Integer` between 1 and 65535. Only applies to `boost`, `fireplace` or `extra` profiles. 65535 sets the profile without a timeout. | \ No newline at end of file +| `duration` | yes | Duration to activate the profile for; in minutes. `Integer` between 1 and 65535. Only applies to `boost`, `fireplace` or `extra` profiles. 65535 sets the profile without a timeout. | diff --git a/source/_integrations/vasttrafik.markdown b/source/_integrations/vasttrafik.markdown index e95f839e5d2..70c26556e71 100644 --- a/source/_integrations/vasttrafik.markdown +++ b/source/_integrations/vasttrafik.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `vasttrafik` {% term integration %} will provide you traveling details for the larger Göteborg area in Sweden from the [Västtrafik](https://vasttrafik.se/) public transportation service. diff --git a/source/_integrations/versasense.markdown b/source/_integrations/versasense.markdown index b9de6bcbfa6..e14615d9e18 100644 --- a/source/_integrations/versasense.markdown +++ b/source/_integrations/versasense.markdown @@ -18,6 +18,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **VersaSense** {% term integration %} supports the VersaSense Edge Gateway. The gateway is able to control hubs and their peripherals (sensors and actuators) in the mesh network. diff --git a/source/_integrations/viaggiatreno.markdown b/source/_integrations/viaggiatreno.markdown index e96cacca720..f45960ac5bc 100644 --- a/source/_integrations/viaggiatreno.markdown +++ b/source/_integrations/viaggiatreno.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Trenitalia ViaggiaTreno** {% term integration %} will give you information about configured train ids and stations using the public [ViaggiaTreno](http://viaggiatreno.it) API. diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index 95ff695e816..90c36f0c2fe 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **VIVOTEK** camera {% term integration %} allows you to integrate a VIVOTEK IP camera into Home Assistant. diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index a2a24363cc1..642d0c3b312 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: 0.49 ha_iot_class: Local Polling ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@raman325' ha_domain: vizio diff --git a/source/_integrations/vlc.markdown b/source/_integrations/vlc.markdown index ac1462f1452..c167bb2dc53 100644 --- a/source/_integrations/vlc.markdown +++ b/source/_integrations/vlc.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `vlc` platform allows you to control [VLC media player](https://www.videolan.org/vlc/index.html). diff --git a/source/_integrations/vodafone_station.markdown b/source/_integrations/vodafone_station.markdown index 3d01b3f5fe8..58f91b42846 100644 --- a/source/_integrations/vodafone_station.markdown +++ b/source/_integrations/vodafone_station.markdown @@ -18,7 +18,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: hub -ha_quality_scale: silver --- The **Vodafone Station** {% term integration %} allows you to control your [Vodafone Station](https://www.vodafone.it/privati/area-supporto/assistenza-dispositivi/vodafone-station.html) based router. diff --git a/source/_integrations/voicerss.markdown b/source/_integrations/voicerss.markdown index e445dad8bb3..15eefff7dbe 100644 --- a/source/_integrations/voicerss.markdown +++ b/source/_integrations/voicerss.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **VoiceRSS** text-to-speech {% term integration %} uses [VoiceRSS](http://www.voicerss.org/) text-to-speech engine to read a text with natural sounding voices. diff --git a/source/_integrations/volkszaehler.markdown b/source/_integrations/volkszaehler.markdown index 34b68270da1..ab04c4bd946 100644 --- a/source/_integrations/volkszaehler.markdown +++ b/source/_integrations/volkszaehler.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Volkszaehler** {% term integration %} is consuming the system information provided by the [Volkszaehler](https://wiki.volkszaehler.org/) API. diff --git a/source/_integrations/vulcan.markdown b/source/_integrations/vulcan.markdown index 3d4a4183747..dfe9ac50c47 100644 --- a/source/_integrations/vulcan.markdown +++ b/source/_integrations/vulcan.markdown @@ -9,7 +9,6 @@ ha_domain: vulcan ha_codeowners: - '@Antoni-Czaplicki' ha_config_flow: true -ha_quality_scale: silver ha_platforms: - calendar ha_integration_type: integration diff --git a/source/_integrations/vultr.markdown b/source/_integrations/vultr.markdown index 62f370a35b9..4c33f321c2a 100644 --- a/source/_integrations/vultr.markdown +++ b/source/_integrations/vultr.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Vultr** {% term integration %} allows you to access information about and interact with your [Vultr](https://www.vultr.com) subscriptions (Virtual Private Servers) from Home Assistant. diff --git a/source/_integrations/w800rf32.markdown b/source/_integrations/w800rf32.markdown index 6a339d39ff2..9fd78dc50d1 100644 --- a/source/_integrations/w800rf32.markdown +++ b/source/_integrations/w800rf32.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **WGL Designs W800RF32** {% term integration %} supports W800RF32 devices by WGL Designs which diff --git a/source/_integrations/waterfurnace.markdown b/source/_integrations/waterfurnace.markdown index 36c5cba0f18..18cd624d811 100644 --- a/source/_integrations/waterfurnace.markdown +++ b/source/_integrations/waterfurnace.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **WaterFurnace** {% term integration %} communicates with the WaterFurnace Symphony website's WebSocket to show you many of the sensors in your system. While not an official API, this is the same backend the Symphony website is based on, and should be reasonably stable. diff --git a/source/_integrations/watson_iot.markdown b/source/_integrations/watson_iot.markdown index 580ec5b118e..a6c5ae0b801 100644 --- a/source/_integrations/watson_iot.markdown +++ b/source/_integrations/watson_iot.markdown @@ -10,6 +10,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **IBM Watson IoT Platform** {% term integration %} enables you to link the devices in Home Assistant diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index 8cb595dd3e6..b43607851bd 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `watson_tts` text-to-speech {% term integration %} that works with [IBM Watson Cloud](https://www.ibm.com/watson/services/text-to-speech/) to create the spoken output. diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index 25eca94ebe1..e901115ca20 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -15,7 +15,6 @@ ha_platforms: - diagnostics - media_player - notify -ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/whisper.markdown b/source/_integrations/whisper.markdown index d60b91aa302..e6b004997b2 100644 --- a/source/_integrations/whisper.markdown +++ b/source/_integrations/whisper.markdown @@ -14,6 +14,7 @@ ha_codeowners: ha_config_flow: true ha_platforms: - binary_sensor + - conversation - number - select - stt diff --git a/source/_integrations/wilight.markdown b/source/_integrations/wilight.markdown index 4271a0abf16..a2de00c6010 100644 --- a/source/_integrations/wilight.markdown +++ b/source/_integrations/wilight.markdown @@ -13,7 +13,6 @@ ha_iot_class: Local Polling ha_codeowners: - '@leofig-rj' ha_domain: wilight -ha_quality_scale: silver ha_ssdp: true ha_platforms: - cover diff --git a/source/_integrations/wirelesstag.markdown b/source/_integrations/wirelesstag.markdown index 2a11074631f..aea57cb51b2 100644 --- a/source/_integrations/wirelesstag.markdown +++ b/source/_integrations/wirelesstag.markdown @@ -19,6 +19,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Wireless Sensor Tags** {% term integration %} allows you to integrate your [wirelesstag.net](https://wirelesstag.net/) sensors tags in Home Assistant. diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index c1f7a9d37a3..dbd46406c6e 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -16,7 +16,6 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration -ha_quality_scale: platinum --- The **Withings** {% term integration %} consumes data from various health products produced by [Withings](https://www.withings.com). diff --git a/source/_integrations/wiz.markdown b/source/_integrations/wiz.markdown index dcf913eb4b7..be2eece66f3 100644 --- a/source/_integrations/wiz.markdown +++ b/source/_integrations/wiz.markdown @@ -11,7 +11,6 @@ ha_iot_class: Local Push ha_release: '2022.3' ha_dhcp: true ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@sbidy' ha_domain: wiz diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 79636853b65..4c8c1a6bf71 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -9,7 +9,6 @@ ha_category: ha_release: 0.102 ha_iot_class: Local Push ha_config_flow: true -ha_quality_scale: platinum ha_codeowners: - '@frenck' ha_domain: wled diff --git a/source/_integrations/worldtidesinfo.markdown b/source/_integrations/worldtidesinfo.markdown index 7b53e3a553c..94406414690 100644 --- a/source/_integrations/worldtidesinfo.markdown +++ b/source/_integrations/worldtidesinfo.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `worldtidesinfo` {% term integration %} uses details from [World Tides](https://www.worldtides.info/) to provide information about the prediction for the tides for any location in the world. diff --git a/source/_integrations/worxlandroid.markdown b/source/_integrations/worxlandroid.markdown index 21c6b5a7a77..c783bbcc32e 100644 --- a/source/_integrations/worxlandroid.markdown +++ b/source/_integrations/worxlandroid.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `worxlandroid` {% term integration %} allows you to get the current state, battery level and error status Worx Landroid WG796E.1 or WG797E. diff --git a/source/_integrations/ws66i.markdown b/source/_integrations/ws66i.markdown index 5ad20a83d8c..91fb8def2e1 100644 --- a/source/_integrations/ws66i.markdown +++ b/source/_integrations/ws66i.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: 2022.6 ha_config_flow: true ha_iot_class: Local Polling -ha_quality_scale: silver ha_codeowners: - '@ssaenger' ha_domain: ws66i diff --git a/source/_integrations/wsdot.markdown b/source/_integrations/wsdot.markdown index 52871938780..26e0097916b 100644 --- a/source/_integrations/wsdot.markdown +++ b/source/_integrations/wsdot.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Washington State Department of Transportation (WSDOT)** {% term integration %} will give you travel time information from the [Washington State Department of Transportation (WSDOT)](https://wsdot.com/). diff --git a/source/_integrations/x10.markdown b/source/_integrations/x10.markdown index f80404c9e1e..2c5386684f9 100644 --- a/source/_integrations/x10.markdown +++ b/source/_integrations/x10.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `x10` light {% term integration %} allows you to control your X10 based lights with Home Assistant. diff --git a/source/_integrations/xeoma.markdown b/source/_integrations/xeoma.markdown index d29410551ca..82390738575 100644 --- a/source/_integrations/xeoma.markdown +++ b/source/_integrations/xeoma.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `Xeoma` camera {% term integration %} allows you to view the video feeds from a [Xeoma](https://felenasoft.com/xeoma) video surveillance server. diff --git a/source/_integrations/xiaomi.markdown b/source/_integrations/xiaomi.markdown index a015dfffa38..8cd0372c240 100644 --- a/source/_integrations/xiaomi.markdown +++ b/source/_integrations/xiaomi.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: configuration.yaml file +ha_quality_scale: legacy --- This section shows you how to integrate a [Xiaomi router](http://miwifi.com) or a Xiaomi camera into Home Assistant. diff --git a/source/_integrations/xiaomi_tv.markdown b/source/_integrations/xiaomi_tv.markdown index cdcb1a5f619..84e46756c64 100644 --- a/source/_integrations/xiaomi_tv.markdown +++ b/source/_integrations/xiaomi_tv.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `xiaomi_tv` {% term integration %} allows you to control a [Xiaomi TV](https://www.mi.com/global/mitv3s/65flat/). diff --git a/source/_integrations/xmpp.markdown b/source/_integrations/xmpp.markdown index a894bbbdd9b..355db8c5d79 100644 --- a/source/_integrations/xmpp.markdown +++ b/source/_integrations/xmpp.markdown @@ -15,6 +15,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `xmpp` notification {% term integration %} allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](https://xmpp.org/) account. diff --git a/source/_integrations/xs1.markdown b/source/_integrations/xs1.markdown index acac7ed0caa..0322ca93231 100644 --- a/source/_integrations/xs1.markdown +++ b/source/_integrations/xs1.markdown @@ -17,6 +17,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The [EZcontrol XS1](http://www.ezcontrol.de/content/view/36/28/) {% term integration %} for Home Assistant allows you to observe and control devices configured on the XS1 Gateway. Please have a look at the official documentation for using this gateway [Bedienungsanleitung v3.0.0.0](http://www.ezcontrol.de/support/downloads/XS1/xs1manual/Bedienungsanleitung_EZcontrol_XS1_3.0.0.0-2.pdf). diff --git a/source/_integrations/yamaha.markdown b/source/_integrations/yamaha.markdown index 7f257108725..8e119715959 100644 --- a/source/_integrations/yamaha.markdown +++ b/source/_integrations/yamaha.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `yamaha` {% term integration %} allows you to control [Yamaha Network Receivers](https://usa.yamaha.com/products/audio-visual/av-receivers-amps/rx) from Home Assistant. diff --git a/source/_integrations/yandex_transport.markdown b/source/_integrations/yandex_transport.markdown index 68287db7050..4cd067aaa27 100644 --- a/source/_integrations/yandex_transport.markdown +++ b/source/_integrations/yandex_transport.markdown @@ -16,6 +16,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `yandex_tranport` {% term integration %} uses [Yandex Maps](https://maps.yandex.ru/) it will give you the time until the next departure time from a bus/tramway/etc stop. diff --git a/source/_integrations/yandextts.markdown b/source/_integrations/yandextts.markdown index 964742b394a..48e857d190e 100644 --- a/source/_integrations/yandextts.markdown +++ b/source/_integrations/yandextts.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `yandextts` text-to-speech {% term integration %} uses [Yandex SpeechKit](https://tech.yandex.com/speechkit/) text-to-speech engine to read a text with natural sounding voices. diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index fb7caebfde6..1cd0c7baa19 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -17,7 +17,6 @@ ha_platforms: - light ha_homekit: true ha_dhcp: true -ha_quality_scale: platinum ha_zeroconf: true ha_integration_type: integration --- diff --git a/source/_integrations/yeelightsunflower.markdown b/source/_integrations/yeelightsunflower.markdown index 5ffbbad3af4..cc6b4331383 100644 --- a/source/_integrations/yeelightsunflower.markdown +++ b/source/_integrations/yeelightsunflower.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `yeelightsunflower` {% term integration %} allows you to control your Yeelight Sunflower light bulbs with Home Assistant. diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index b8225a874ee..063539c344b 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -11,6 +11,7 @@ ha_domain: yi ha_platforms: - camera ha_integration_type: device +ha_quality_scale: legacy --- The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: diff --git a/source/_integrations/zabbix.markdown b/source/_integrations/zabbix.markdown index 5a6b2bf3b3f..2cd7e7e8c16 100644 --- a/source/_integrations/zabbix.markdown +++ b/source/_integrations/zabbix.markdown @@ -13,6 +13,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Zabbix** {% term integration %} is the main {% term integration %} to connect to a [Zabbix](https://www.zabbix.com/) monitoring instance via the Zabbix API. diff --git a/source/_integrations/zengge.markdown b/source/_integrations/zengge.markdown index 38c72fbdfca..e981d34fd2a 100644 --- a/source/_integrations/zengge.markdown +++ b/source/_integrations/zengge.markdown @@ -14,6 +14,7 @@ ha_codeowners: related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `zengge` {% term integration %} allows you to integrate your [Zengge Bluetooth bulbs](http://www.zengge.com/) into Home Assistant. diff --git a/source/_integrations/zestimate.markdown b/source/_integrations/zestimate.markdown index d05697c03ba..f81d5bfe11c 100644 --- a/source/_integrations/zestimate.markdown +++ b/source/_integrations/zestimate.markdown @@ -9,6 +9,7 @@ ha_domain: zestimate ha_platforms: - sensor ha_integration_type: integration +ha_quality_scale: legacy --- The `zestimate` sensor allows one to track the Zestimate® value of properties using the [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). According to Zillow's website, a Zestimate® home valuation is Zillow's estimated market value. It is not an appraisal. Use it as a starting point to determine a home's value. The Zestimate® is provided by [Zillow](https://www.zillow.com), a website primarily for listing homes to buy/sell/rent in the United States. diff --git a/source/_integrations/zhong_hong.markdown b/source/_integrations/zhong_hong.markdown index aedadb289af..226bde7bb28 100644 --- a/source/_integrations/zhong_hong.markdown +++ b/source/_integrations/zhong_hong.markdown @@ -9,6 +9,7 @@ ha_domain: zhong_hong ha_platforms: - climate ha_integration_type: integration +ha_quality_scale: legacy --- The `zhong_hong` climate platform lets you control Zhonghong HVAC Gateway Controller thermostats through Home Assistant. diff --git a/source/_integrations/ziggo_mediabox_xl.markdown b/source/_integrations/ziggo_mediabox_xl.markdown index 79e303e6045..4049b20a506 100644 --- a/source/_integrations/ziggo_mediabox_xl.markdown +++ b/source/_integrations/ziggo_mediabox_xl.markdown @@ -12,6 +12,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The **Ziggo Mediabox XL** {% term integration %} allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. diff --git a/source/_integrations/zodiac.markdown b/source/_integrations/zodiac.markdown index f4d25ab7edd..7032a49cd1e 100644 --- a/source/_integrations/zodiac.markdown +++ b/source/_integrations/zodiac.markdown @@ -5,7 +5,6 @@ ha_category: - Environment ha_iot_class: Calculated ha_release: 0.116 -ha_quality_scale: silver ha_codeowners: - '@JulienTant' ha_domain: zodiac diff --git a/source/_integrations/zoneminder.markdown b/source/_integrations/zoneminder.markdown index 71e97fd596f..698e41c2ac3 100644 --- a/source/_integrations/zoneminder.markdown +++ b/source/_integrations/zoneminder.markdown @@ -22,6 +22,7 @@ ha_integration_type: integration related: - docs: /docs/configuration/ title: Configuration file +ha_quality_scale: legacy --- The `zoneminder` integration sets up Home Assistant with your [ZoneMinder](https://www.zoneminder.com) instance. diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 9853c8710bb..a69b7b3e4e3 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -44,7 +44,6 @@ ha_platforms: - update ha_integration_type: hub ha_zeroconf: true -ha_quality_scale: platinum --- The **Z-Wave** {% term integration %} allows you to control a Z-Wave network from Home Assistant via the [Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/) driver. From d660523c37aec426381dd2f207698805eb8fafc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20Diego=20Rodr=C3=ADguez=20Royo?= Date: Thu, 28 Nov 2024 08:28:36 +0100 Subject: [PATCH 003/169] Add select entity to Home Connect (#35398) --- source/_integrations/home_connect.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index ba0848771c3..5964b8e5d8b 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -6,6 +6,7 @@ ha_category: - Hub - Light - Number + - Select - Sensor - Switch - Time @@ -33,8 +34,10 @@ The Home Connect integration allows users to integrate their home appliances sup The integration will add one Home Assistant device for each connected home appliance which will have the following entities: - A power switch -- If the device has programs, switches for each of the individual programs will be added. Note that program options cannot be configured currently. -- If the device has programs, a timestamp sensor for remaining time and a numeric sensor for the progress percentage. +- If the device has programs: + - Switches for each of the individual programs will be added. Note that program options cannot be configured currently. + - Two select entities that will allow you to select and start a program between the available ones. + - A timestamp sensor for remaining time and a numeric sensor for the progress percentage. - Light: - Hoods: - Functional light: on/off and brightness From 981afb68487c0a3b0a194e48f2dc16c9ec5a576c Mon Sep 17 00:00:00 2001 From: OzGav Date: Thu, 28 Nov 2024 18:19:35 +0800 Subject: [PATCH 004/169] Add docs for Music Assistant integration (#35494) * Add actions * Update domain * Typos and code rabbit suggestions * tiny tweaks * Change tables to lists * tweak * Fix typo * Code rabbit tweaks * More code rabbit suggestions * Typo * Add two new actions * Change get_queue attribute * Remove whitespace * Update source/_integrations/music_assistant.markdown Co-authored-by: Marcel van der Veldt * Update source/_integrations/music_assistant.markdown Co-authored-by: Marcel van der Veldt * Update source/_integrations/music_assistant.markdown Co-authored-by: Marcel van der Veldt --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Co-authored-by: Franck Nijhof Co-authored-by: Marcel van der Veldt --- source/_integrations/music_assistant.markdown | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 source/_integrations/music_assistant.markdown diff --git a/source/_integrations/music_assistant.markdown b/source/_integrations/music_assistant.markdown new file mode 100644 index 00000000000..63adcdf32c7 --- /dev/null +++ b/source/_integrations/music_assistant.markdown @@ -0,0 +1,127 @@ +--- +title: Music Assistant +description: Instructions on how to integrate Music Assistant into Home Assistant. +ha_category: + - Media player +ha_release: 2024.12 +ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@music_assistant' +ha_domain: music_assistant +ha_platforms: + - media_player +ha_zeroconf: true +ha_integration_type: integration +--- + +The **Music Assistant**(MA) {% term integrations %} allows you to connect Home Assistant to a [Music Assistant Server](https://music-assistant.io/). Once configured, all [MA Players](https://music-assistant.io/player-support/) show up as Home Assistant [media player entities](/integrations/media_player/). Media players will allow you to control media playback and see the currently playing item. + +There is currently support for the following Home Assistant Platforms: + +- [Media player](#media-player) + +All of the Home Assistant [Media Player Control Actions](https://www.home-assistant.io/integrations/media_player/#media-control-actions) are supported. + +{% include integrations/config_flow.md %} + +### Manual configuration + +Under normal circumstances, Home Assistant automatically discovers your running Music Assistant Server. If something special about the HA or MA setup (for example, the MA server is running as a remote Docker container) or discovery is not working, you can manually specify the URL to your Music Assistant server. + +## Media player + +The Music Assistant media player creates media player entities for all players available in MA including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. These entities will display media information, playback progress, and playback controls. + +### Action `media_player.play_media` + +Play media hosted on a Music Assistant server on a Music Assistant player. The action configuration is as described in the [media player documentation](https://www.home-assistant.io/integrations/media_player/#action-media_playerplay_media) + +The `media_content_id` payload can be any of the following: + +- The name of a track, artist or album. (for example, "Queen") +- A track or album combined with the artist name (for example, "Queen - Innuendo") +- A streaming provider URI (for example, `spotify://artist/12345`) + +#### Examples + +Play Adele's album 25 + +```yaml +entity_id: media_player.music_assistant_player +media_content_type: MUSIC +media_content_id: 'Adele - 25' +``` + +Play all tracks from Stevie Wonder in random order + +```yaml +entity_id: media_player.music_assistant_player +media_content_type: MUSIC +media_content_id: 'Stevie Wonder' +``` + +Play the playlist The Best of Disco + +```yaml +entity_id: media_player.music_assistant_player +media_content_type: PLAYLIST +media_content_id: 'The Best of Disco' +``` + +## Additional actions + +### Action `music_assistant.play_media` + +Play media on a Music Assistant player with more fine-grained control options. + +- **Data attribute**: `media_id` + - **Optional**: No. + - **Description**: URI or name of the item to be played. Specify a list if it is desired to play/enqueue multiple items. + - **Example**: `spotify://playlist/aabbccddeeff` +- **Data attribute**: `media_type` + - **Optional**: Yes. + - **Description**: The type of content to play. Select from artist, album, track, playlist or radio. Will be auto-determined if omitted. + - **Example**: `playlist` +- **Data attribute**: `artist` + - **Optional**: Yes. + - **Description**: When specifying a track or album in the Media ID field, you can optionally restrict results by this artist name. + - **Example**: `Queen` +- **Data attribute**: `album` + - **Optional**: Yes. + - **Description**: When specifying a track in the Media ID field, you can optionally restrict results by this album name. + - **Example**: `News of the world` +- **Data attribute**: `enqueue` + - **Optional**: Yes. + - **Description**: If the content should be played now or be added to the queue. Options are: + - play: Play now + - replace: Replace the existing queue and play now + - next: Add to the current queue after the currently playing item + - replace_next: Replace the current queue after the currently playing item + - add: Add to the end of the queue + - **Example**: `replace` +- **Data attribute**: `radio_mode` + - **Optional**: Yes. + - **Description**: Enable radio mode to auto-generate a playlist based on the selection. + - **Example**: `true` + +### Action `music_assistant.play_announcement` + +Play announcement on a Music Assistant player with more fine-grained control options. + +- **Data attribute**: `url` + - **Optional**: No. + - **Description**: URL to the notification sound. + - **Example**: `https://someremotesite.com/doorbell.mp3` +- **Data attribute**: `use_pre_announce` + - **Optional**: Yes. + - **Description**: Use pre-announcement sound. Omit to use the player default. + - **Example**: `true` +- **Data attribute**: `announce_volume` + - **Optional**: Yes. + - **Description**: Use a forced volume level for the announcement. Omit to use the player default. + - **Example**: `75` + +## Notes + +- Any Home Assistant players added to Music Assistant will appear duplicated as the MA version of the player is created. The original HA player can be hidden if desired. From 1ede5fa7c28055721aacf632d868c8a67655ea79 Mon Sep 17 00:00:00 2001 From: Lutz Date: Thu, 28 Nov 2024 08:49:01 +0100 Subject: [PATCH 005/169] Doc update for new endpoint in unifi protect (#35629) Co-authored-by: J. Nick Koston --- source/_integrations/unifiprotect.markdown | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 6cb8b4e6729..decff7d3d81 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -262,19 +262,23 @@ The {% term integrations %} provides two proxy views to proxy media content from These URLs work great when trying to send notifications. Home Assistant will automatically sign the URLs and make them safe for external consumption if used in an {% term automation %} or [notify action](/integrations/notify/). -Two URLs for proxy API endpoints: +Three URLs for proxy API endpoints: -`/api/unifiprotect/thumbnail/{nvr_id}/{event_id}:` +`/api/unifiprotect/thumbnail/{nvr_id}/{event_id}` - Proxies a JPEG event thumbnail from UniFi Protect. -`/api/unifiprotect/video/{nvr_id}/{camera_id}/{start}/{end}`: +`/api/unifiprotect/video/{nvr_id}/{camera_id}/{start}/{end}` - Proxies a MP4 video clip from UniFi Protect for a specific camera. Start and end must be in [ISO 8601 format](https://www.iso.org/iso-8601-date-and-time-format.html). +`/api/unifiprotect/video/{nvr_id}/{event_id}` + +- Proxies a MP4 video clip from UniFi Protect for a specific event. To get the video, the event needs to be finished. If it's still ongoing, use the camera endpoint defined above. + `nvr_id` can either be the UniFi Protect ID of your NVR or the config entry ID for your UniFi Protect {% term integrations %}. `camera_id` can either be the UniFi Protect ID of your camera or an entity ID of any {% term entity %} provided by the UniFi Protect {% term integrations %} that can be reversed to a UniFi Protect camera (i.e., an entity ID of a detected object sensor). -The easiest way to find the `nvr_id`, `camera_id`, `start`, and `end` times is by viewing one of the videos from UniFi Protect in the Media browser. If you open the video in a new browser tab, you will see all these values in the URL. The `start` time is the last_changed timestamp of the event when the sensor started detecting motion. The `end` time is the last_changed timestamp of the event when the sensor stopped detecting motion. Similarly, to see the `event_id` of the image, go to {% my developer_states title="**Developer Tools** > **States**" %} and find the event when the sensor started detecting motion. +The easiest way to find the `nvr_id`, `camera_id`, `start`, and `end` times is by viewing one of the videos from UniFi Protect in the Media browser. If you open the video in a new browser tab, you will see all these values in the URL. The `start` time is close to the last_changed timestamp of the event when the sensor started detecting motion. The `end` time is close to the last_changed timestamp of the event when the sensor stopped detecting motion. Similarly, to see the `event_id` of the image, go to {% my developer_states title="**Developer Tools** > **States**" %} and find the event when the sensor started detecting motion. ## Event Entities Support From 73302f1d6760ebc36198438a36e55950516cec93 Mon Sep 17 00:00:00 2001 From: Raphael Hehl <7577984+RaHehl@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:03:05 +0100 Subject: [PATCH 006/169] add examples for UniFi Protect integration events (#36029) Co-authored-by: J. Nick Koston --- source/_integrations/unifiprotect.markdown | 111 +++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index decff7d3d81..c76aaf7ad83 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -280,6 +280,32 @@ Three URLs for proxy API endpoints: The easiest way to find the `nvr_id`, `camera_id`, `start`, and `end` times is by viewing one of the videos from UniFi Protect in the Media browser. If you open the video in a new browser tab, you will see all these values in the URL. The `start` time is close to the last_changed timestamp of the event when the sensor started detecting motion. The `end` time is close to the last_changed timestamp of the event when the sensor stopped detecting motion. Similarly, to see the `event_id` of the image, go to {% my developer_states title="**Developer Tools** > **States**" %} and find the event when the sensor started detecting motion. +### Example Notification Automation with Video + +```yaml +alias: "Security: Camera Motion Notification" +description: "Sends a notification with video upon motion detection." +triggers: + - entity_id: + - binary_sensor.g5_bullet_motion # Replace with your camera entity + trigger: state + from: "on" + to: "off" +actions: + - data: + message: "Motion detected at Camera XXX" + data: + image: >- + {% raw %}/api/unifiprotect/thumbnail/{{ config_entry_id(trigger.entity_id) }}/{{ trigger.from_state.attributes.event_id }}{% endraw %} + video: >- + {% raw %}/api/unifiprotect/video/{{ config_entry_id(trigger.entity_id) }}/{{ trigger.from_state.attributes.event_id }}{% endraw %} + action: notify.mobile_app_your_device # Replace with your notification target +mode: single +max_exceeded: silent +``` + +Waiting for the motion sensor to change from `on` to `off` before sending the notification is essential. Waiting ensures that the event has ended and the video is accessible; otherwise, you may get an error instead of the video link. + ## Event Entities Support The UniFi Protect integration provides support for various event types triggered by connected devices. Below are the descriptions for each supported event type: @@ -292,6 +318,29 @@ The UniFi Protect integration provides support for various event types triggered - **event_id**: A unique ID that identifies the doorbell event. - **Description**: This event is triggered when someone rings the doorbell. It provides an `event_id`, which can be used to fetch related media, such as a thumbnail of the event. For instance, you can use `event.g4_doorbell_pro_doorbell` to get the thumbnail image when a ring occurs. +#### Example G4 Doorbell Ring Triggered Automation + +```yaml +alias: G4 Doorbell Ring Triggered Automation +description: Automation that triggers when the G4 Doorbell Pro rings +triggers: + - event_type: state_changed + event_data: + entity_id: event.g4_doorbell_pro_poe_doorbell # Replace with your doorbell entity + trigger: event +conditions: + - condition: template + value_template: | + {% raw %}{{ 'ring' in trigger.event.data.new_state.attributes.event_types }}{% endraw %} +actions: + - data: + message: Someone is at the door! + title: Doorbell Notification + action: notify.mobile_app_your_device # Replace with your notification target +``` + +The condition is required to prevent the notification from being triggered by events of type 'unknown', for example, during a restart. + ### NFC Card Scanned Event - **Event Name**: NFC @@ -301,6 +350,38 @@ The UniFi Protect integration provides support for various event types triggered - **nfc_id**: The ID of the scanned NFC card. - **Description**: This event is triggered when an NFC card is scanned at a compatible device (e.g., a smart doorbell). It contains information such as the `nfc_id` of the scanned card. +#### Example G4 Doorbell NFC Scanned Automation + +```yaml +alias: G4 Doorbell NFC Scanned Automation +description: >- + Automation that triggers when a specific NFC card is scanned on the G4 + Doorbell Pro +triggers: + - event_type: state_changed + event_data: + entity_id: event.g4_doorbell_pro_poe_nfc # Replace with your doorbell entity + trigger: event +conditions: + - condition: template + value_template: > + {% raw %}{{ + trigger.event.data.new_state is not none and + trigger.event.data.new_state.attributes.event_type == 'scanned' and + trigger.event.data.new_state.attributes.nfc_id in ['ABCDEF1234', 'OTHER_ALLOWED_ID'] + }}{% endraw %} +actions: + - data: + message: >- + {% raw %}The NFC card with ID {{ trigger.event.data.new_state.attributes.nfc_id }} has been scanned at the doorbell.{% endraw %} + title: NFC Scan Notification + action: notify.mobile_app_your_device # Replace with your notification target +``` + +**Warning:** + +When processing NFC scans, always validate the scanned ID. Unknown NFC cards also trigger the scan event. Additionally, this event was developed using third-party cards, as the developer did not have access to official UniFi cards at the time. With third-party cards, the scan relies on the card's serial number. While this approach is not uncommon, it is essential to note that the card's serial number is generally not considered a secure identifier and can be duplicated relatively easily. + ### Fingerprint Identified Event - **Event Name**: Fingerprint @@ -310,6 +391,36 @@ The UniFi Protect integration provides support for various event types triggered - **ulp_id**: The fingerprint ID used to identify the person. If no fingerprint match is found, the `ulp_id` will be empty and the `event_type` will be `not_identified`. - **Description**: This event is triggered when a fingerprint is scanned by a compatible device. If the fingerprint is recognized, it provides a `ulp_id`, which represents the fingerprint ID. If the fingerprint is not recognized, the `event_type` will be set to `not_identified`, and no `ulp_id` will be provided. +#### Example G4 Doorbell Fingerprint Identified Automation + +```yaml +alias: G4 Doorbell Fingerprint Identified Automation +description: Automation that triggers when a fingerprint is successfully identified on the G4 Doorbell Pro +trigger: + - platform: event + event_type: state_changed + event_data: + entity_id: event.g4_doorbell_pro_poe_fingerprint # Replace with your doorbell entity +condition: + - condition: template + value_template: > + {% raw %}{{ + trigger.event.data.new_state is not none and + trigger.event.data.new_state.attributes.event_type == 'identified' and + (trigger.event.data.new_state.attributes.ulp_id|default('')) != '' and + trigger.event.data.new_state.attributes.ulp_id in ['ALLOWED_ID1', 'ALLOWED_ID2'] + }}{% endraw %} +action: + - service: notify.mobile_app_your_device # Replace with your notification target + data: + {% raw %}message: "Fingerprint identified with ID: {{ trigger.event.data.new_state.attributes.ulp_id }}"{% endraw %} + title: "Fingerprint Scan Notification" +``` + +**Warning:** + +Similar to NFC, an event is triggered when a fingerprint is recognized and not recognized. However, unlike NFC, at the time of implementation, no fingerprint ID is included in the event if the fingerprint is unknown. + ## Troubleshooting ### Delay in video feed From f3803c1373a1864bd09438db6ed39810f79f16a0 Mon Sep 17 00:00:00 2001 From: Richard Kroegel <42204099+rikroe@users.noreply.github.com> Date: Thu, 28 Nov 2024 21:01:47 +0100 Subject: [PATCH 007/169] Add documention for BMW captcha during config flow (#36032) Co-authored-by: Franck Nijhof --- source/_integrations/bmw_connected_drive.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index 5ab08d0bd65..921500be0ec 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -60,6 +60,15 @@ This integration provides the following platforms: Enable the `BMW Connected Drive` integration via **Settings** -> **Devices & Services**. +{% important %} +The `North America` and `Rest of world` regions require a captcha challenge to be solved, i.e. you need to verify that you are a human. +After entering your login data, a second step will ask for a `Captcha token` and provide you with a link to a website. +Please open this link, solve the "are you a human?" challenge and press `Submit`. +Copy the resulting token into Home Assistant and continue. + +No data of your Home Assistant instance is shared with any third party during this step. +{% endimportant %} + {% note %} For `china`, it is mandatory to prefix your username/phone number with `86`, i.e. `8612345678`. {% endnote %} From 4d922b74770db17b62e3704f69e85863bf12d3ab Mon Sep 17 00:00:00 2001 From: Wendelin <12148533+wendevlin@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:57:55 +0100 Subject: [PATCH 008/169] Add bronze to IQS section and sync naming with ha frontend (#36038) --- source/_includes/asides/component_navigation.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index 784c053fb1c..316971e2dc9 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -58,11 +58,13 @@ {%- if page.ha_quality_scale %}

    {%- endif -%} From d1ff91d1a2b830a9e6f1c322b238bf7b30bfa46a Mon Sep 17 00:00:00 2001 From: Duco Sebel <74970928+DCSBL@users.noreply.github.com> Date: Thu, 28 Nov 2024 10:31:42 +0100 Subject: [PATCH 009/169] Include correct guide for custom polling in HomeWizard (#36039) --- source/_integrations/homewizard.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/homewizard.markdown b/source/_integrations/homewizard.markdown index 8427f9e707d..3b2eeed83c7 100644 --- a/source/_integrations/homewizard.markdown +++ b/source/_integrations/homewizard.markdown @@ -115,7 +115,7 @@ If you know the energy characteristics of your washing machine, you can create a The integration is {% term polling %} new data every 5 seconds. There is no limitation on the number or frequency of requests that can be made to the device. -{% include integrations/remove_device_service.md %} +{% include common-tasks/define_custom_polling.md %} ## Known limitations From d3a604bd6e200a9da127eaa37e21bf43e2f06525 Mon Sep 17 00:00:00 2001 From: Duco Sebel <74970928+DCSBL@users.noreply.github.com> Date: Thu, 28 Nov 2024 17:01:57 +0100 Subject: [PATCH 010/169] Update removal instructions for HomeWizard (#36041) --- source/_integrations/homewizard.markdown | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/_integrations/homewizard.markdown b/source/_integrations/homewizard.markdown index 3b2eeed83c7..265510c5390 100644 --- a/source/_integrations/homewizard.markdown +++ b/source/_integrations/homewizard.markdown @@ -99,10 +99,6 @@ The HomeWizard Energy devices are designed to work with the HomeWizard Energy ap Cloud communication is restored when the switch is turned on again. Cloud communications are also restored after a factory reset, or when the device is put in pairing mode. -{% include integrations/remove_device_service.md %} - -After deleting the integration, go to the HomeWizard Energy app and disable the local API if no other integrations are using it. - ## Examples ### Send a notification when your washing machine is done @@ -137,3 +133,11 @@ It may happen that you can't find your devices or they won't show up in the inte - Make sure you have updated the device to the latest firmware. Follow this guide to learn how to update your device: [How do I check if I have the latest software on my HomeWizard product?](https://helpdesk.homewizard.com/en/articles/9167578-how-do-i-check-if-i-have-the-latest-software-on-my-homewizard-product) - Make sure you have enabled the local API in device settings via the HomeWizard Energy app. - Make sure both Home Assistant and the device are on the same network. + +## Remove integration + +This integration follows standard integration removal. + +{% include integrations/remove_device_service.md %} + +After deleting the integration, go to the HomeWizard Energy app and disable the local API if no other integrations are using it. From dcf3f1672c41d194802a8685fc4a75124a0aa58e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Strandberg?= Date: Fri, 29 Nov 2024 14:42:24 +0100 Subject: [PATCH 011/169] Rewrite myuplink docs for new quality scale (#36017) * Rewrite myuplink for new quality scale * Apply review comments * Update source/_integrations/myuplink.markdown Co-authored-by: Klaas Schoute * Corrected data update interval * Delete Gemfile.lock * Revert "Delete Gemfile.lock" This reverts commit 6e2b08d4bc78f69a1594f400460318562c14576f. * Revert "Corrected data update interval" This reverts commit 7f0199bc9b1e7a0ce4444406b75821459e8f15f2. * Correct data update interval * tiny tweak --------- Co-authored-by: Klaas Schoute Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/myuplink.markdown | 35 ++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/source/_integrations/myuplink.markdown b/source/_integrations/myuplink.markdown index 2a9264eb45c..0574590b393 100644 --- a/source/_integrations/myuplink.markdown +++ b/source/_integrations/myuplink.markdown @@ -26,18 +26,22 @@ ha_platforms: ha_integration_type: integration --- -The myUplink integration lets you get information about the devices supporting myUplink using the [official cloud API](https://dev.myuplink.com). +The **myUplink** {% term integration %} lets you get information about and control heat-pump devices supporting myUplink using the [official cloud API](https://dev.myuplink.com). -Depending on the type of devices in your system, one or more entities are added to Home Assistant. Currently, there is support for reading sensor states. There is also support for switch, select and number entities if suitable data points are discovered in the system. Note that you may need a valid subscription with MyUplink to control your equipment with switch, select, and number entities. +The integration will connect to your account and download all available data from the API. The downloaded information will be used to create devices and entities in Home Assistant. There can be from a few entities up to many hundreds depending on the type of equipment. The integration will make the best effort to map the data-points in the API to sensors, switches, number, and select entities. + +{% note %} +You may need a valid subscription with myUplink to control your equipment with switch, select, and number entities. +{% endnote %} ## Prerequisites 1. Visit [https://myuplink.com/register](https://myuplink.com/register) and sign up for a user account. 2. Go to [**Applications**](https://dev.myuplink.com/apps), and register a new App: -- **Application ID**: Home Assistant (or whatever name makes sense to you) -- **OAuth Flow**: Authorization Code Grant Flow -- **Redirect URI**: `https://my.home-assistant.io/redirect/oauth` +- **Application Name**: Home Assistant (or whatever name makes sense to you) +- **Description**: A brief description of how you'll use this application (e.g., "Home Assistant integration for controlling my heat pump") +- **Callback URL**: `https://my.home-assistant.io/redirect/oauth` {% details "I have manually disabled My Home Assistant" %} @@ -55,3 +59,24 @@ Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://hom {% include integrations/config_flow.md %} The integration configuration will require the **Client ID** and **Client Secret** created above. See [Application Credentials](/integrations/application_credentials) for more details. + +## Data updates + +The integration will poll the API for data every 60 seconds. This polling interval is designed to work within the rate limits of myUplink APIs while providing timely updates. + +## Known limitations + +- The integration makes the best effort to map data-points from the API to relevant entities in Home Assistant. However, some sensors may not appear for certain heat-pump models, or in other cases, numerous irrelevant entities might be created. Please create an issue on GitHub and include a diagnostic download file from your installation if you believe that the mapping can be improved. +- Entity names are available in English and cannot be automatically translated by Home Assistant. The reason is that the names are defined by the API and can be changed by updates of the API or the firmware in the appliance. However, most entity names are self-explanatory, e.g., "Room temperature (BT50)". + +## Troubleshooting + +{% details "Can't log in to myUplink API" %} +Make sure that you have entered the application credentials correctly. A common problem is that leading or trailing spaces are included in the entered credential strings. You may have to delete the application credentials from Home Assistant and install the integration again to get everything right. +{% enddetails %} + +## Removing the integration + +After removing the integration, go to the myUplink [developer site](https://dev.myuplink.com/apps) and remove the credentials unless you will use them again. + +{% include integrations/remove_device_service.md %} From 556ad9db1c5e1f506e7c80ba00c79621426a35c3 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 30 Nov 2024 20:58:19 +0100 Subject: [PATCH 012/169] Month of "What the heck?!" 2024 (#36074) --- ...-12-01-the-month-of-what-the-heck.markdown | 211 ++++++++++++++++++ .../social.jpg | Bin 0 -> 161494 bytes 2 files changed, 211 insertions(+) create mode 100644 source/_posts/2024-12-01-the-month-of-what-the-heck.markdown create mode 100644 source/images/blog/2024-12-01-the-month-of-what-the-heck/social.jpg diff --git a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown new file mode 100644 index 00000000000..d35abc24123 --- /dev/null +++ b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown @@ -0,0 +1,211 @@ +--- +title: The month of 'What the Heck?!' 2024 +description: "Ever felt that 'What the heck Home Assistant?!' moment? This month, we would like to learn about your 'what the heck?!' moments..." +date: 2024-11-30 00:00:00 +date_formatted: "December 1, 2024" +author: Franck Nijhof +author_twitter: frenck +categories: Announcements +og_image: /images/blog/2024-12-01-the-month-of-what-the-heck/social.jpg +--- + + + +**TL;DR**: For all of December 🎄, we are opening up to share any issue, idea, +suggestion, or annoyance you have with Home Assistant +[on our community forums]! + +[on our community forums]: https://community.home-assistant.io/c/month-of-what-the-heck/61 + +## Welcome to the month of “What the heck?!”: Third edition + +**It’s back!** 🎉 We are thrilled to announce the **third** edition of the month +of “What the heck?!” (WTH for short). Every [two] [years], we take the time to +pause, listen, and dive deep into the little things that maybe you go +*“What the heck?!”* about Home Assistant. + +We’ve been [growing really hard for years now] with over a million +Home Assistant-powered smart homes out there, and, as of this year, we are also +[the \#1 open source project on GitHub]! + +A lot has happened since [the last edition two years ago]. Lots of effort went +into making a [voice-controlled Home Assistant] a reality. We have implemented +[new dashboards and cards] (with drag-and-drop!), +[added organization capabilities] with labels and categories, and so [much] +[more]! But did everything turn out the way it should? Did we miss things? +Or, worse, did something start to annoy you? + +That is what this month is about! This year, we are kicking it off in the month +of **December** as a nice closing activity for this year, and we can’t wait to +hear from 👉 **YOU** 👈! + +[added organization capabilities]: /blog/2024/04/03/release-20244/#three-new-ways-to-organize +[growing really hard for years now]: https://analytics.home-assistant.io/ +[more]: /blog/2023/11/01/release-202311/#there-is-a-lot-to-do +[much]: /blog/2024/06/05/release-20246/#dipping-our-toes-in-the-world-of-ai-using-llms +[new dashboards and cards]: /blog/2024/11/06/release-202411/#sections-dashboard-no-longer-experimental +[the \#1 open source project on GitHub]: /blog/2024/11/18/event-wrapup-github-universe-24/#we-are-number-1 +[the last edition two years ago]: /blog/2022/09/30/the-month-of-what-the-heck/ +[two]: /blog/2020/08/18/the-month-of-what-the-heck/ +[voice-controlled Home Assistant]: /blog/2022/12/20/year-of-voice/ +[years]: /blog/2022/09/30/the-month-of-what-the-heck/ + +### Lowering the barrier for sharing WTH?! moments + +We realize reporting bugs on our [GitHub] might be a steep hill and, for some, +maybe even a bit scary. You need a GitHub account to report an issue following +issue templates and forms, and the report itself needs to be written in a way +that a developer can work with. Above all, we use our issue tracker to track +actual issues and bugs, not small feature requests or annoyances. + +While this is a common and reasonable process to collect, track, and process +bugs, our issue tracking-process might not be the ideal way to learn about your +*“What the heck?!”* moments, small tweaks, and improvements that can make us +all enjoy Home Assistant even more. + +Today, we have opened up a [Community Forum category] as a safe, lower-barrier +place to talk about your Home Assistant “What the heck?!” moments. +More importantly: discuss and vote on topics your fellow home automators have +brought up. + +[Community Forum category]: https://community.home-assistant.io/c/month-of-what-the-heck/61 +[GitHub]: https://github.com/home-assistant/core/issues/new/choose + +## What are we looking for? + +Just as with previous editions, I sent out a related question on my socials +earlier this week: + +> 🎅 𝘚𝘢𝘯𝘵𝘢 𝘮𝘪𝘨𝘩𝘵 𝘣𝘦 𝘭𝘪𝘴𝘵𝘦𝘯𝘪𝘯𝘨… If you could ask for one small Home Assistant +> improvement this holiday season, what would it be? + +The answers to this question pretty much capture the goal behind this month: +Finding those nice quality-of-life features and little annoyances, highlighting +inconsistencies, suggestions for things that could be streamlined more, and even +big-ticket items. All of those things would make Home Assistant even more +awesome for everyone. + +I’ve received many responses on these social media posts on [X], [Mastodon], +and [Bluesky]. Most of the responses there are **exactly** what we are looking +for this month. I’ve picked a few from these platforms to show you what I mean: + +- “*Makes exposing entities to HomeKit the same as to Alexa & Google*” ([Peter Hardy-vanDoorn]) +- *"Polygon zones would be so very helpful instead of just the base circle"* ([KrispKiwi]) +- “*Edit a scene without activating it. I can only edit my sleep scene after everyone goes to sleep or in YAML.”* ([codebuild21]) +- *"The possibility of catching errors in automations and being able to take actions when they occur 🙂"* ([Sergio Mayoral]) +- *"Not Fancy! Better backup management, especially pruning options!"* ([Alex Alami]) +- *"Persist my prefered dashboard across my different devices/browsers."* ([Carlos Sánchez López]) +- *"Home Assistant voice hardware!"* ([Paulus Schoutsen]) 😆 + +These are all great topics for the month of “What the heck?!”, I hope they inspire you for more topics to share 💖. + +[Alex Alami]: https://bsky.app/profile/aaposutry.bsky.social/post/3lby3xqhzzk2w +[Bluesky]: https://bsky.app/profile/did:plc:ofidofdlypuxb2dlfdmbh3a3/post/3lbx2w2kh5a2p +[Carlos Sánchez López]: https://bsky.app/profile/chayotejarocho.space/post/3lbx7yorfms2c +[codebuild21]: https://bsky.app/profile/codebuild21.bsky.social/post/3lbx72g4l6s2n +[KrispKiwi]: https://x.com/KrispKiwi/status/1861825026825265406 +[Mastodon]: https://fosstodon.org/@frenck/113556074335097996 +[Paulus Schoutsen]: https://bsky.app/profile/paulusschoutsen.nl/post/3lbx32dabes2s +[Peter Hardy-vanDoorn]: https://x.com/peterjvandoorn/status/1861898354038292579 +[Sergio Mayoral]: https://x.com/sermayoral/status/1862109088139583917 +[X]: https://x.com/Frenck/status/1861823068735181154 + +## Roadmap + +As you might be aware, we also create and publish a bigger, high level, roadmap +for the greater direction of Home Assistant. A few weeks back, [Madelena] +and [JLo] shared the [2024 Year-end update of our roadmap]. + +This year’s month of “What the heck?!” is thus different in this regard, as in +previous editions we didn’t have any roadmap in place. For this year’s WTH, +the product team will also be watching for items that will help shape and +prioritize our roadmap for the near future. + +As a matter of fact, many items on this year’s roadmap that we’ve worked on +have their origins or have been shaped by topics from the previous WTH from +2022. For example, the [ability to organize automations] and the ability to +[drag-and-drop cards on your dashboards]. + +[2024 Year-end update of our roadmap]: https://www.home-assistant.io/blog/2024/11/15/roadmap-2024h2/ +[ability to organize automations]: https://community.home-assistant.io/t/why-are-all-automations-in-one-big-list/467153?u=frenck +[drag-and-drop cards on your dashboards]: https://community.home-assistant.io/t/wth-cant-we-drag-drop-in-the-dashboard/467205?u=frenck +[JLo]: https://github.com/jlpouffier +[Madelena]: https://github.com/madelena + +## Why December? + +In the previous editions, we had this month in October; this year, we decided to +move it to December. We figured, the holiday season is perfect for this event. 🎄 + +Many of us have a bit more time on our hands during the holidays, whether that’s +tinkering with automations, exploring our new dashboards, contributing to our +project, or simply enjoying engaging our active and vibrant community. + +## Start sharing your WTH! + +👆That title says it all really. Start sharing **your** “What the heck?!” +moment, browse through all the WTH moments others brought up, and vote for the +ones you feel the same about. + +We are excited about this month and looking forward to everything brought up! + +**[Join us on the forums!]**, or read the **[FAQ](#faq)** below. + +[Join us on the forums!]: https://community.home-assistant.io/c/month-of-what-the-heck/61 + +

    +Image of a person expressing a what the heck moment +So, when does Home Assistant trigger this moment for you? +

    + +## FAQ + +- **_“Great! I have multiple things! Should I put all my stuff in a single + topic?!”_** + + **No**, please create **multiple**, **smaller** topics. There is no limitation + on how many forum topics one can create for WTH. Each topic can be voted on, + picked up, and maybe even resolved. Also, having multiple things stacked in + a single forum topic makes resolving, discussing, and voting on them hard. + +
    + +- **_“Is everything reported going to be fixed/addressed?”_** + + Sorry, but the answer here is **no**; there is no guarantee that it will + happen. The goal is to lower the barrier reporting things for one month. + Code contributors will definitely join the effort and address a few of the + listed things. Still, in the end, the number of submissions in WTH is, + in general, simply too much to address. However, we have picked up a lot of + items over the years (including bigger topics); it helps us shape our roadmap. + +
    + +- **_"I really want this new integration or add-on to be implemented, so I can + use my devices. Is this the right place for it?”_** + + **No**, this event is **not** for requesting new add-ons or device/services + integrations. Please use the "[Feature Requests]" forum category instead. + +
    + +- **_“My WTH topic is one of the top-voted ones, so it is going to be + fixed/addressed, right?”_** + + This is **not** a contest. Voting will help with visibility and give a sense + of the suggestion's impact. However, it might be difficult or too big to + implement. A topic with lots of votes is more likely to be noticed by a + contributor, but it is not guaranteed to be picked up. + + Topics with a lot of engagement, of course, help us shape our future roadmap. + +
    + +- **_“I’ve found a bug and am comfortable with GitHub. Where should I report my + issue now?”_** + + If you are comfortable using GitHub, please, by all means, + [file an issue report on GitHub] instead. + +[Feature Requests]: https://community.home-assistant.io/c/feature-requests/13 +[file an issue report on GitHub]: https://github.com/home-assistant/core/issues/new/choose \ No newline at end of file diff --git a/source/images/blog/2024-12-01-the-month-of-what-the-heck/social.jpg b/source/images/blog/2024-12-01-the-month-of-what-the-heck/social.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb376a1a4cda6a20bc44641b9f626ee3b98adadf GIT binary patch literal 161494 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%0A)4q~%6KnFU< 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 Date: Sat, 30 Nov 2024 21:05:46 +0100 Subject: [PATCH 013/169] Fix blog post date --- source/_posts/2024-12-01-the-month-of-what-the-heck.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown index d35abc24123..46d98646ebc 100644 --- a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown +++ b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown @@ -2,7 +2,7 @@ title: The month of 'What the Heck?!' 2024 description: "Ever felt that 'What the heck Home Assistant?!' moment? This month, we would like to learn about your 'what the heck?!' moments..." date: 2024-11-30 00:00:00 -date_formatted: "December 1, 2024" +date_formatted: "november 31, 2024" author: Franck Nijhof author_twitter: frenck categories: Announcements From 1ce94329dc030ef93eb6b004c44de3efee8999c5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 30 Nov 2024 21:09:18 +0100 Subject: [PATCH 014/169] Fix blog post date --- source/_posts/2024-12-01-the-month-of-what-the-heck.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown index 46d98646ebc..5af635212d0 100644 --- a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown +++ b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown @@ -2,7 +2,7 @@ title: The month of 'What the Heck?!' 2024 description: "Ever felt that 'What the heck Home Assistant?!' moment? This month, we would like to learn about your 'what the heck?!' moments..." date: 2024-11-30 00:00:00 -date_formatted: "november 31, 2024" +date_formatted: "November 31, 2024" author: Franck Nijhof author_twitter: frenck categories: Announcements From 2f5c8cf9012d50ccb213121d308120869fa53180 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 30 Nov 2024 21:23:39 +0100 Subject: [PATCH 015/169] Fix blog post date --- source/_posts/2024-12-01-the-month-of-what-the-heck.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown index 5af635212d0..82ffb2a17f9 100644 --- a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown +++ b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown @@ -2,7 +2,7 @@ title: The month of 'What the Heck?!' 2024 description: "Ever felt that 'What the heck Home Assistant?!' moment? This month, we would like to learn about your 'what the heck?!' moments..." date: 2024-11-30 00:00:00 -date_formatted: "November 31, 2024" +date_formatted: "November 30, 2024" author: Franck Nijhof author_twitter: frenck categories: Announcements From 08f6d12b2c07162c4f059b9ac2106c0a72340ad7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 30 Nov 2024 15:46:27 -0500 Subject: [PATCH 016/169] Add anchor to no-new-integrations --- source/_posts/2024-12-01-the-month-of-what-the-heck.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown index 82ffb2a17f9..e1f432e743c 100644 --- a/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown +++ b/source/_posts/2024-12-01-the-month-of-what-the-heck.markdown @@ -179,7 +179,7 @@ So, when does Home Assistant trigger this moment for you? in general, simply too much to address. However, we have picked up a lot of items over the years (including bigger topics); it helps us shape our roadmap. -
    +
    - **_"I really want this new integration or add-on to be implemented, so I can use my devices. Is this the right place for it?”_** @@ -208,4 +208,4 @@ So, when does Home Assistant trigger this moment for you? [file an issue report on GitHub] instead. [Feature Requests]: https://community.home-assistant.io/c/feature-requests/13 -[file an issue report on GitHub]: https://github.com/home-assistant/core/issues/new/choose \ No newline at end of file +[file an issue report on GitHub]: https://github.com/home-assistant/core/issues/new/choose From 4864d5323bc6f0aae604dbd7de71b0512ebaf089 Mon Sep 17 00:00:00 2001 From: sewa0815 Date: Sun, 1 Dec 2024 12:23:16 +0100 Subject: [PATCH 017/169] fix wording (#36075) --- source/_integrations/script.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown index 33234489052..0990e2d37c1 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -77,7 +77,7 @@ fields: description: The name of this script parameter field. type: string description: - description: A description of this of this script parameter. + description: A description of this script parameter. type: string advanced: description: Marks this field as an advanced parameter. This causes it only to be shown in the UI, when the user has advanced mode enabled. From e0496b840aa0d33c4ca61e158903f485f6023f8e Mon Sep 17 00:00:00 2001 From: "Jaap P." Date: Sun, 1 Dec 2024 21:45:51 +0100 Subject: [PATCH 018/169] Update unifiprotect.markdown (#36081) Co-authored-by: Franck Nijhof --- source/_integrations/unifiprotect.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 84e987f2f07..c7c5fcb64a9 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -70,13 +70,13 @@ It is recommended you use the Administrator or a user with full read/write acces but it is not required. The entities that are created will automatically adjust based on the permissions of the user you use has. -1. Login to your _Local Portal_ on your UniFi OS device, and click on _Users_. **Note**: This **must** be done from - the UniFi OS by accessing it directly by IP address (i.e. _Local Portal_), not via `unifi.ui.com` or within the - UniFi Protect app. -2. Go to **Admins** from the left hand side menu or [IP address]/admins/users e.g. 192.168.1.1/admins/users. -3. Click on **Add New Admin**. -4. Select **Full Management** for the role. Uncheck **Allow Remote Access** and fill out the fields for your user. -5. Click **Add** in the bottom right. +1. Login to your _Local Portal_ on your UniFi OS device, and click on _Users_. +**Note**: This **must** be done from the UniFi OS by accessing it directly by IP address (e.g. _192.168.1.1_), not via `unifi.ui.com` or within the UniFi Protect app. +2. Go to **Admins & Users** from the left hand side menu and select the **Admins** tab or go to [IP address]/admins/ (e.g. _192.168.1.1/admins/_). +3. Click on **+** in the top right corner and select **Add Admin**. +4. Select **Restrict to local access only** and enter a new _username_ and _password_. +5. Select **Full Management** for the _Protect_ role. +6. Click **Add** in the bottom right. ![UniFi OS User Creation](/images/integrations/unifiprotect/user.png) From 9452ab654cc9fce7bce861dd0b55cef768ccbdbb Mon Sep 17 00:00:00 2001 From: Aviad Levy Date: Sun, 1 Dec 2024 22:47:39 +0200 Subject: [PATCH 019/169] Elaborate on choosing random effect (#36060) --- source/_integrations/wled.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 79636853b65..24f7464ef4d 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -155,6 +155,22 @@ data: {% endraw %} +It is recommended to select an effect that matches the capabilities of your WLED device (e.g., 1D, 2D, or Sound Reactive). You can refer to the [WLED effect list](https://kno.wled.ge/features/effects/) to explore available options. Once you identify compatible effects, you can randomize them based on their IDs. + +Below is an example of how to select a random effect with an ID between 1 and 117, excluding retired effects: + +{% raw %} + +```yaml +action: light.turn_on +target: + entity_id: light.wled +data: + effect: "{{ state_attr('light.wled', 'effect_list')[1:118] | reject('equalto', 'RSVD') | list | random }}" +``` + +{% endraw %} + ### Activating random palette Activating a random palette is very similar to the above random effect, From 54b5fc9726335644c8a89681a2baaf7d9db74445 Mon Sep 17 00:00:00 2001 From: TheGroundZero <2406013+TheGroundZero@users.noreply.github.com> Date: Sun, 1 Dec 2024 21:49:12 +0100 Subject: [PATCH 020/169] Move note so it better aligns with the example code it references (#36062) --- source/_docs/automation/trigger.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 58efcf35f8e..97c7f4b82c8 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -241,6 +241,11 @@ automation: {% endraw %} +{% note %} +Listing above and below together means the numeric_state has to be between the two values. +In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again. +{% endnote %} + When the `attribute` option is specified the trigger is compared to the given `attribute` instead of the state of the entity. {% raw %} @@ -288,11 +293,6 @@ automation: {% endraw %} -{% note %} -Listing above and below together means the numeric_state has to be between the two values. -In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again. -{% endnote %} - Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities that contain a numeric value, can be used in the `above` and `below` thresholds. However, the comparison will only be made when the entity specified in the trigger is updated. This would look like: From c6ad995beef1366d9001ca6ae18f3dd9a2a0a570 Mon Sep 17 00:00:00 2001 From: Cameron Chamberlain Date: Mon, 2 Dec 2024 07:50:27 +1100 Subject: [PATCH 021/169] typo fix in data disk docs (#36057) --- source/_includes/common-tasks/data_disk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_includes/common-tasks/data_disk.md b/source/_includes/common-tasks/data_disk.md index ab6ddbcc311..0909abd5200 100644 --- a/source/_includes/common-tasks/data_disk.md +++ b/source/_includes/common-tasks/data_disk.md @@ -11,7 +11,7 @@ All data on the target disk will be overwritten! {% endcaution %} {% important %} -The storage ca pacity of the external data disk must be larger than the storage capacity of the existing (boot) disk. +The storage capacity of the external data disk must be larger than the storage capacity of the existing (boot) disk. {% endimportant %} {% important %} From c6421e3cc0788656fc252cda33c1aa08792b0744 Mon Sep 17 00:00:00 2001 From: "Teemu R." Date: Sun, 1 Dec 2024 21:52:38 +0100 Subject: [PATCH 022/169] Add tplink removal steps (#36053) --- source/_integrations/tplink.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 8c15c98072f..7c389203e94 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -183,3 +183,9 @@ data: spread: 1 direction: 1 ``` + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} From e84a537794ff5d0f566e135b0bd90b48d1087933 Mon Sep 17 00:00:00 2001 From: Josef Zweck <24647999+zweckj@users.noreply.github.com> Date: Sun, 1 Dec 2024 21:54:06 +0100 Subject: [PATCH 023/169] Update lamarzocco documentation with connection methods per entity (#35985) --- source/_integrations/lamarzocco.markdown | 92 ++++++++++++------------ 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index 39093a82a46..464cc5be27b 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -67,77 +67,81 @@ Use Bluetooth: # Available platforms & entities +{% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} = La Marzocco Cloud + = Bluetooth +{% icon "material-symbols:wifi" title="Local connection" %} = Local network + ## Buttons -| Button name | Description | Available for machines | -|-------------|-------------| ---------------------- | -| Start backflush | Starts the backflush process on your machine. You got 15 seconds to turn the paddle after activation. | all | +| Button name | Description | Available for machines | Controllable through | +|-------------|-------------| ---------------------- | -------------------- | +| **Start backflush** | Starts the backflush process on your machine. You got 15 seconds to turn the paddle after activation. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | ## Numbers -| Number name | Description | Available for machines | Remarks | -|-------------|-------------| ---------------------- | ------- | -| Coffee target temperature | Temperature the coffee boiler is set to | GS3 AV, GS3 MP | - | -| Steam target temperature | Temperature the steam boiler is set to | GS3 AV, GS3 MP | - | -| Tea water duration | Dose hot water (in seconds) | GS3 AV, GS3 MP | - | -| Dose | Doseage (in ticks) for each key | GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | -| Prebrew on time | Time prebrew wets the puck | Linea Micra, Linea Mini, GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | -| Prebrew off time | Time prebrew waits before turning on the pump | Linea Micra, Linea Mini, GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | -| Preinfusion time | Duration of preinfusion | Linea Micra, Linea Mini, GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | -| Smart standby time | Time until the machine will automatically stand by (if enabled) | all | - | +| Number name | Description | Available for machines | Controllable through | Remarks | +|-------------|-------------| ---------------------- |--------------------- | ------- | +| **Coffee target temperature** | Temperature the coffee boiler is set to | `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | +| **Steam target temperature** | Temperature the steam boiler is set to | `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | +| **Tea water duration** | Dose hot water (in seconds) | `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | +| **Dose** | Doseage (in ticks) for each key | `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | `GS3` has this multiple times, one for each physical key (1-4), and the entities are disabled by default | +| **Prebrew on time** | Time prebrew wets the puck | `Linea Micra`, `Linea Mini`, `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | `GS3` has this multiple times, one for each physical key (1-4), and the entities are disabled by default | +| **Prebrew off time** | Time prebrew waits before turning on the pump | `Linea Micra`, `Linea Mini`, `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | `GS3` has this multiple times, one for each physical key (1-4), and the entities are disabled by default | +| **Preinfusion time** | Duration of preinfusion | `Linea Micra`, `Linea Mini`, `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | `GS3` has this multiple times, one for each physical key (1-4), and the entities are disabled by default | +| **Smart standby time** | Time until the machine will automatically stand by (if enabled) | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | ## Switches -| Switch name | Description | Available for machines | -|-------------|-------------| ---------------------- | -| Main | Allows to turn machines on-/off | all | -| Steam boiler | Allows to enable/disable the steam boiler | all | -| Smart standby enabled | Whether smart standby is on (machine will automatically stand by after given time) | all | +| Switch name | Description | Available for machines | Controllable through | +|-------------|-------------| ---------------------- | -------------------- | +| **Main** | Allows to turn machines on-/off | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | +| **Steam boiler** | Allows to enable/disable the steam boiler | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | +| **Smart standby enabled** | Whether smart standby is on (machine will automatically stand by after given time) | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | ## Binary sensors -| Binary sensor name | Description | Available for machines | Remarks | -|-------------|-------------| ---------------------- | ------- | -| Water tank empty | Indicates whether the water tank needs a refill. | all | - | -| Brewing active | Is on if you are in the process of making coffee. | all | Only available when the *Host* was set during component configuration. | -| Backflush enabled | Is on if you started the backflushing process. | all | - | +| Binary sensor name | Description | Available for machines | Retrievable from | Remarks | +|------------------- |-------------| ---------------------- | ----------------- | ------- | +| **Water tank empty** | Indicates whether the water tank needs a refill. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} {% icon "material-symbols:wifi" title="Local connection" %} | - | +| **Brewing active** | Is on if you are in the process of making coffee. | `all` | {% icon "material-symbols:wifi" title="Local connection" %} | Only available when the `Host` was set during component configuration. | +| **Backflush enabled** | Is on if you started the backflushing process. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} {% icon "material-symbols:wifi" title="Local connection" %} | - | ## Sensors -| Sensor name | Description | Available for machines | Remarks | -|-------------|-------------| ---------------------- | ------- | -| Current coffee temperature | Current temperature of the coffee boiler | all | When the machine reaches temperature, this will be approximately 3 degrees higher than the `Coffee target temperature`, due to different measurement points. | -| Current steam temperature| Current temperature of the steam boiler | Linea Micra, GS3 AV, GS3 MP | - | -| Total coffees made | Counter for total coffees made| all | - | -| Total flushes made | Counter for total flushes done | all | - | -| Shot timer | Time the current brew is running | all | Only available when the *Host* was set during component configuration. | +| Sensor name | Description | Available for machines | Retrievable from | Remarks | +|-------------|-------------| ---------------------- | ---------------- | ------- | +| **Current coffee temperature** | Current temperature of the coffee boiler | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} {% icon "material-symbols:wifi" title="Local connection" %} | When the machine reaches temperature, this will be approximately 3 degrees higher than the `Coffee target temperature`, due to different measurement points. | +| **Current steam temperature**| Current temperature of the steam boiler | `Linea Micra`, `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} {% icon "material-symbols:wifi" title="Local connection" %} | - | +| **Total coffees made** | Counter for total coffees made| `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | +| **Total flushes made** | Counter for total flushes done | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %}| - | +| **Shot timer** | Time the current brew is running | `all` | {% icon "material-symbols:wifi" title="Local connection" %} | Only available when the `Host` was set during component configuration. | ## Updates -| Update name | Description | Available for machines | -|-------------|-------------| ---------------------- | -| Gateway firmware | Firmware status of the gateway | all | -| Machine firmware | Firmware status of the machine | all | +| Update name | Description | Available for machines | Retrievable from | +|-------------|-------------| ---------------------- |---------------- | +| **Gateway firmware** | Firmware status of the gateway | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | +| **Machine firmware** | Firmware status of the machine | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | ## Selects -| Select name | Description | Options | Available for machines | -|-------------|-------------| ------------------------| ---------------------- | -| Prebrew/-infusion mode | Whether to use prebrew, preinfusion, or neither | Disabled, Prebrew, Preinfusion | Linea Micra, Linea Mini, GS3 AV | -| Steam level | The level your steam boiler should run at | 1,2,3 | Linea Micra | -| Smart standby mode | The smart standby mode, that decides from which events the timer to standby will run. | Last brewing, Power on | all | +| Select name | Description | Options | Available for machines | Controllable through | +|-------------|-------------| --------| ---------------------- | -------------------- | +| **Prebrew/-infusion mode** | Whether to use prebrew, preinfusion, or neither | `Disabled`, `Prebrew`, `Preinfusion` | `Linea Micra`, `Linea Mini`, `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | +| **Steam level** | The level your steam boiler should run at | `1`,`2`,`3` | `Linea Micra` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | +| **Smart standby mode** | The smart standby mode, that decides from which events the timer to standby will run. | `Last brewing`, `Power on` | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | ## Supported devices Currently, only devices from the **"Home"** range are supported: -- Linea Mini -- Linea Mini R -- Linea Micra -- GS3 AV -- GS3 MP +- `Linea Mini` +- `Linea Mini R` +- `Linea Micra` +- `GS3 AV` +- `GS3 MP` ## Possible use-cases From b234a967bd577dfdaeea107dfba625c20523f49b Mon Sep 17 00:00:00 2001 From: Guido Schmitz Date: Sun, 1 Dec 2024 21:59:27 +0100 Subject: [PATCH 024/169] Add use cases to devolo Home Network (#36044) Co-authored-by: Franck Nijhof --- source/_integrations/devolo_home_network.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index 30e26d925d6..028ec4e0960 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -30,7 +30,7 @@ ha_zeroconf: true ha_integration_type: device --- -The **devolo Home Network** {% term integration %} integration allows you to monitor and control your [devolo](https://www.devolo.global) PLC network. +The **devolo Home Network** {% term integration %} allows you to monitor and control your [devolo](https://www.devolo.global) PLC network. Depending on the device you add to Home Assistant, different use cases are possible. Roughly you can categorize the devices into Wi-Fi and non-Wi-Fi devices. Non-Wi-Fi devices are more or less limited in monitoring your PLC network. The Wi-Fi devices, however, can help with presence detection and remote control of your guest Wi-Fi. For details, please continue reading about the [entities](#entities) and look at the [supported devices](#supported-devolo-devices). {% include integrations/config_flow.md %} @@ -39,9 +39,9 @@ IP address: description: "IP address of your devolo Home Network device. This can be found in the devolo Home Network App on the device dashboard." {% endconfiguration_basic %} -## Device types +## Entities -Currently the following device types within Home Assistant are supported. +Currently, the following entities within Home Assistant are supported. ### Binary sensors From 630f144e891d876610d08a5b0f69042951b57502 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 2 Dec 2024 07:55:08 +0100 Subject: [PATCH 025/169] Rephrase removal section for multiple integrations (#36093) --- source/_integrations/autarco.markdown | 4 ++-- source/_integrations/bang_olufsen.markdown | 4 ++-- source/_integrations/cambridge_audio.markdown | 4 ++-- source/_integrations/devolo_home_network.markdown | 4 ++-- source/_integrations/fully_kiosk.markdown | 4 ++-- source/_integrations/garages_amsterdam.markdown | 2 +- source/_integrations/lamarzocco.markdown | 4 ++-- source/_integrations/mastodon.markdown | 2 +- source/_integrations/mealie.markdown | 2 +- source/_integrations/onewire.markdown | 4 ++-- source/_integrations/p1_monitor.markdown | 4 ++-- source/_integrations/renault.markdown | 4 ++-- source/_integrations/sfr_box.markdown | 4 ++-- source/_integrations/swiss_public_transport.markdown | 4 ++-- source/_integrations/tedee.markdown | 4 ++-- 15 files changed, 27 insertions(+), 27 deletions(-) diff --git a/source/_integrations/autarco.markdown b/source/_integrations/autarco.markdown index 0afac9543c5..4236de63216 100644 --- a/source/_integrations/autarco.markdown +++ b/source/_integrations/autarco.markdown @@ -66,8 +66,8 @@ If you have a battery connected to your system, you can monitor the battery stat - Charged energy this month (kWh) - Charged energy total (kWh) -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown index 889bcfd8d14..099948bddd0 100644 --- a/source/_integrations/bang_olufsen.markdown +++ b/source/_integrations/bang_olufsen.markdown @@ -264,8 +264,8 @@ Additionally a Deezer user ID can be found at , and this needs to be converted to `album:ALBUM_ID`. The same applies to playlists, which have the format `playlist:PLAYLIST_ID`. Individual tracks can be found by sharing the track and selecting the `Copy track link` method, which should yield a link of the format , this can be played by extracting the track id `TRACK_ID`. -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/cambridge_audio.markdown b/source/_integrations/cambridge_audio.markdown index 67114c02251..26a991535f4 100644 --- a/source/_integrations/cambridge_audio.markdown +++ b/source/_integrations/cambridge_audio.markdown @@ -55,9 +55,9 @@ Host: Cambridge Audio devices push data directly to Home Assistant, enabling immediate updates for device state changes, media information, and playback status. -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index 028ec4e0960..b0d5f3b78f0 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -132,8 +132,8 @@ This integration only supports using the API the devolo Home Network App uses. T The devolo Gigabridge is the only device that comes with a default password. However, it seems that in factory default the password works for the device website but not for the API. If you give the device a new password via the website, it is applied to both and the integration starts working. Even using the same password again works. -## Removal +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/fully_kiosk.markdown b/source/_integrations/fully_kiosk.markdown index 306a8fbcaca..a6b43d4fd89 100644 --- a/source/_integrations/fully_kiosk.markdown +++ b/source/_integrations/fully_kiosk.markdown @@ -158,8 +158,8 @@ target: device_id: a674c90eca95eca91f6020415de07713 ``` -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/garages_amsterdam.markdown b/source/_integrations/garages_amsterdam.markdown index 5cc9d4970ad..f2bf5a60294 100644 --- a/source/_integrations/garages_amsterdam.markdown +++ b/source/_integrations/garages_amsterdam.markdown @@ -46,7 +46,7 @@ Some parking garages don't have long-term parking spaces, in which case the 2 sp Each parking garage also has a binary sensor, which indicates whether there are problems in the data provision from the API. When it indicates `ok` everything is fine. If the state changes to `problem`, the upstream data might not be up to date or reliable and will remain in this state until new data is coming in. -## Remove integration +## Removing the integration You can remove each parking garage instance by following the default removal process. diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index 464cc5be27b..6f295c38b6a 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -190,9 +190,9 @@ mode: single - Only La Marzocco native app accounts are supported, social logins (Google, Apple & WeChat) are not supported - Currently it is only possible to view the schedules configured in the La Marzocco Home app, but not to edit the schedules from Home Assistant. You can, of course, build Home Assistant native automations to reflect the same functionality in Home Assistant. -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index 25e6aa615bb..2d69ed5232f 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -115,7 +115,7 @@ For more on how to use notifications in your automations, please see the [gettin The integration only allows reading the status of the authenticated account and posting to that account. It does not provide functionality to get the stream, favorite, bookmark, or boost posts of that account. -## Remove integration +## Removing the integration This integration follows standard integration removal, once the integration is removed you can remove the application registration (assuming it was only used by this integration) from your Mastodon account by going to **Preferences** in the Mastodon web interface, then to **Development** and deleting the application you created for Home Assistant. diff --git a/source/_integrations/mealie.markdown b/source/_integrations/mealie.markdown index e98daa8f88c..a945f5a41fe 100644 --- a/source/_integrations/mealie.markdown +++ b/source/_integrations/mealie.markdown @@ -164,7 +164,7 @@ template: {% enddetails %} -## Remove integration +## Removing the integration This integration follows standard integration removal, once the integration is removed you can remove the API token (assuming it was only used by this integration) by going to your Account in the Mealie web interface, then to **Manage Your API Tokens** and deleting the token you created for Home Assistant. diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index 59a94e19b87..37c0a01af89 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -134,8 +134,8 @@ UPDATE states SET entity_id='sensor._humidity' WHERE entity_id LIKE Remember to replace `` with the actual name of the sensor, as seen in the `SELECT` query. -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/p1_monitor.markdown b/source/_integrations/p1_monitor.markdown index 0a919f355e4..614bde19911 100644 --- a/source/_integrations/p1_monitor.markdown +++ b/source/_integrations/p1_monitor.markdown @@ -80,8 +80,8 @@ You can use the rates set in P1 Monitor for your calculations in Home Assistant. - Energy Consumption Price Low/High - Energy Production Price Low/High -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown index ef88a243516..7cc7fd0e2d0 100644 --- a/source/_integrations/renault.markdown +++ b/source/_integrations/renault.markdown @@ -133,8 +133,8 @@ Notes: duration: 15 ``` -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/sfr_box.markdown b/source/_integrations/sfr_box.markdown index 2d4a948fc50..fffe3f5d198 100644 --- a/source/_integrations/sfr_box.markdown +++ b/source/_integrations/sfr_box.markdown @@ -33,8 +33,8 @@ The integration uses the REST API, which is known to be available on models `NB4 However, `NCC` models do not appear to expose this REST API, and are therefore unsupported by the integration. -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index b174cb8492c..b27495ab4ef 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -53,8 +53,8 @@ Fetch the connections for a specific instance. {% include common-tasks/define_custom_polling.md %} -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} diff --git a/source/_integrations/tedee.markdown b/source/_integrations/tedee.markdown index 3b88f58cc55..3597d886986 100644 --- a/source/_integrations/tedee.markdown +++ b/source/_integrations/tedee.markdown @@ -110,9 +110,9 @@ This integration only supports functionality that is available locally. This mea - Updates - Key pads -## Remove integration +## Removing the integration -This integration follows standard integration removal, no extra steps are required. +This integration follows standard integration removal. No extra steps are required. {% include integrations/remove_device_service.md %} From 0816149de7ad562236c4f2b01993de161c01b212 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 2 Dec 2024 07:57:11 +0100 Subject: [PATCH 026/169] Fix indentation in configuration across multiple integrations (#36090) * Fix indentation in configuration across multiple integrations * Forgot to commit this one --- source/_integrations/anthropic.markdown | 8 +----- source/_integrations/cast.markdown | 4 +-- source/_integrations/fyta.markdown | 4 +-- ...google_generative_ai_conversation.markdown | 12 +-------- source/_integrations/habitica.markdown | 10 ++++---- source/_integrations/homewizard.markdown | 2 +- .../husqvarna_automower.markdown | 6 ++--- source/_integrations/idasen_desk.markdown | 2 -- source/_integrations/imap.markdown | 1 - source/_integrations/integration.markdown | 3 +-- source/_integrations/ista_ecotrend.markdown | 6 ++--- source/_integrations/min_max.markdown | 1 + source/_integrations/netgear.markdown | 2 ++ source/_integrations/nuki.markdown | 16 ++++++------ source/_integrations/ollama.markdown | 7 +----- .../openai_conversation.markdown | 9 +------ source/_integrations/pegel_online.markdown | 8 +++--- source/_integrations/rainbird.markdown | 5 ++-- source/_integrations/renault.markdown | 8 +++--- source/_integrations/solarlog.markdown | 8 +++--- .../swiss_public_transport.markdown | 6 ++--- source/_integrations/switch_as_x.markdown | 1 + source/_integrations/threshold.markdown | 1 + source/_integrations/tod.markdown | 1 + source/_integrations/traccar_server.markdown | 2 -- source/_integrations/trend.markdown | 1 + source/_integrations/version.markdown | 25 ++++++++----------- source/_integrations/xiaomi_miio.markdown | 2 -- 28 files changed, 63 insertions(+), 98 deletions(-) diff --git a/source/_integrations/anthropic.markdown b/source/_integrations/anthropic.markdown index ec06105b0c6..de15e626a9b 100644 --- a/source/_integrations/anthropic.markdown +++ b/source/_integrations/anthropic.markdown @@ -49,29 +49,23 @@ The Anthropic API key is used to authenticate requests to the Anthropic API. To {% include integrations/config_flow.md %} {% include integrations/option_flow.md %} + {% configuration_basic %} Instructions: description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). - Control Home Assistant: description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. - Recommended settings: description: If enabled, the recommended model and settings are chosen. - {% endconfiguration_basic %} If you choose not to use the recommended settings, you can configure the following options: {% configuration_basic %} - Model: description: The model that will complete your prompt. See [models](https://docs.anthropic.com/en/docs/about-claude/models#model-names) for additional details and options. - Maximum Tokens to Return in Response: description: The maximum number of tokens to generate before stopping. Note that our models may stop _before_ reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate. Different models have different maximum values for this parameter. See [models](https://docs.anthropic.com/en/docs/models-overview) for details. - Temperature: description: Amount of randomness injected into the response. Use `temperature` closer to `0.0` for analytical / multiple choice, and closer to `1.0` for creative and generative tasks. Note that even with `temperature` of `0.0`, the results will not be fully deterministic. - {% endconfiguration_basic %} diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown index 466ea28004e..447b11597d9 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -21,14 +21,14 @@ ha_integration_type: integration Support for mDNS discovery in your local network is mandatory for automatic discovery. Make sure that your router has this feature enabled. If mDNS does not work in your network, the IP addresses of the Cast devices can be manually entered in the configuration as mentioned below. {% include integrations/option_flow.md %} + {% configuration_basic %} Known hosts: description: "A comma-separated list of hostnames or IP-addresses of cast devices, use if mDNS discovery is not working" Allowed UUIDs: description: A comma-separated list of UUIDs of Cast devices to add to Home Assistant. **Use only if you don't want to add all available devices.** The device won't be added until discovered through either mDNS or if it's included in the list of known hosts. In order to find the UUID for your device use a mDNS browser or advanced users can use the following Python command (adjust friendly names as required) - `python3 -c "import pychromecast; print(pychromecast.get_listed_chromecasts(friendly_names=['Living Room TV', 'Bedroom TV', 'Office Chromecast']))"`. This option is only visible if advanced mode is enabled in your user profile. Ignore CEC: - description: A comma-separated list of Chromecasts that should ignore CEC data for determining the - active input. [See the upstream documentation for more information](https://github.com/home-assistant-libs/pychromecast#ignoring-cec-data). This option is only visible if advanced mode is enabled in your user profile. + description: A comma-separated list of Chromecasts that should ignore CEC data for determining the active input. [See the upstream documentation for more information](https://github.com/home-assistant-libs/pychromecast#ignoring-cec-data). This option is only visible if advanced mode is enabled in your user profile. {% endconfiguration_basic %} ## Home Assistant Cast diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown index daca58a61d9..e04feb4946c 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -32,9 +32,9 @@ To setup the integration you need the following information: {% configuration_basic %} Email: - description: "The email address used to access the FYTA account." + description: "The email address used to access the FYTA account." Password: - description: "The password used to access the FYTA account." + description: "The password used to access the FYTA account." {% endconfiguration_basic %} ## Configuration options diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown index 1a16625436b..386373001ef 100644 --- a/source/_integrations/google_generative_ai_conversation.markdown +++ b/source/_integrations/google_generative_ai_conversation.markdown @@ -45,41 +45,31 @@ On the same page, you can see your plan: *free of charge* if the associated Goog Comparison of the plans is available [at this pricing page](https://ai.google.dev/pricing). The major differences include: the free of charge plan is rate limited, free prompts/responses are used for product improvement, and the free plan is not available in all [regions](https://ai.google.dev/gemini-api/docs/available-regions). {% include integrations/option_flow.md %} -{% configuration_basic %} +{% configuration_basic %} Instructions: description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). - Control Home Assistant: description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. - Recommended settings: description: If enabled, the recommended model and settings are chosen. - {% endconfiguration_basic %} If you choose to not use the recommended settings, you can configure the following options: {% configuration_basic %} - Model: description: Model used to generate response. - Temperature: description: Creativity allowed in the responses. Higher values produce a more random and varied response. A temperature of zero will be deterministic. - Top P: description: Probability threshold for top-p sampling. - Top K: description: Number of top-scored tokens to consider during generation. - Maximum Tokens to Return in Response: description: The maximum number of words or "tokens" that the AI model should generate. - Safety settings: description: Thresholds for different [harmful categories](https://ai.google.dev/gemini-api/docs/safety-settings). - {% endconfiguration_basic %} ## Talking to Super Mario diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index 808d9ce9e3f..c56f3bf373a 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -55,9 +55,9 @@ The Habitica integration lets you automate task management, such as creating to- {% configuration_basic %} "Email or username": - description: "Email or username (case-sensitive) to connect Home Assistant to your Habitica account" + description: "Email or username (case-sensitive) to connect Home Assistant to your Habitica account" Password: - description: "Password for the account to connect Home Assistant to Habitica" + description: "Password for the account to connect Home Assistant to Habitica" {% endconfiguration_basic %} ### Advanced configuration @@ -66,11 +66,11 @@ If you choose "**Login to other instances**" you will be presented the following {% configuration_basic %} "User ID": - description: "User ID of your Habitica account (*see [prerequisites](#prerequisites-for-habitica-integration)*)" + description: "User ID of your Habitica account (*see [prerequisites](#prerequisites-for-habitica-integration)*)" API Token: - description: "API Token of the Habitica account (*see [prerequisites](#prerequisites-for-habitica-integration)*)" + description: "API Token of the Habitica account (*see [prerequisites](#prerequisites-for-habitica-integration)*)" URL: - description: "URL of the Habitica installation to connect to. Defaults to `https://habitica.com` (*see [prerequisites](#prerequisites-for-habitica-integration)*)" + description: "URL of the Habitica installation to connect to. Defaults to `https://habitica.com` (*see [prerequisites](#prerequisites-for-habitica-integration)*)" Verify SSL certificate: description: Enable SSL certificate verification for secure connections. Disable only if connecting to a Habitica instance using a self-signed certificate {% endconfiguration_basic %} diff --git a/source/_integrations/homewizard.markdown b/source/_integrations/homewizard.markdown index 3684e9088bd..4b352f1467b 100644 --- a/source/_integrations/homewizard.markdown +++ b/source/_integrations/homewizard.markdown @@ -44,7 +44,7 @@ You have to enable the local API to allow Home Assistant to communicate with you {% configuration_basic %} IP address: - description: "The IP address of your device. You can find it in your router." + description: "The IP address of your device. You can find it in your router." {% endconfiguration_basic %} ## Sensors diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown index 01bf7e7ff38..e3734694f06 100644 --- a/source/_integrations/husqvarna_automower.markdown +++ b/source/_integrations/husqvarna_automower.markdown @@ -78,11 +78,11 @@ Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://hom {% configuration_basic %} Name: - description: "Enter the name for the provided credentials. You can choose your favorite name." + description: "Enter the name for the provided credentials. You can choose your favorite name." OAuth Client ID: - description: "Enter the Application key from your Husqvarna developer application." + description: "Enter the Application key from your Husqvarna developer application." OAuth Client Secret: - description: "Enter the Application secret from your Husqvarna developer application." + description: "Enter the Application secret from your Husqvarna developer application." {% endconfiguration_basic %} ## Troubleshooting diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown index 1df4b341e0f..bfe0eeddfdb 100644 --- a/source/_integrations/idasen_desk.markdown +++ b/source/_integrations/idasen_desk.markdown @@ -45,8 +45,6 @@ This integration provides two buttons to connect and disconnect to/from the desk ## Sensors {% configuration_basic %} - Height: description: The current height of the desk, in meters. - {% endconfiguration_basic %} diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index 513b32f376d..41352d3be0c 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -130,7 +130,6 @@ initial: description: Returns `True` if this is the initial event for the last message received. When a message within the search scope is removed and the last message received has not been changed, then an `imap_content` event is generated and the `initial` property is set to `False`. Note that if no `Message-ID` header was set on the triggering email, the `initial` property will always be set to `True`. uid: description: Latest `uid` of the message. - {% endconfiguration_basic %} The `event_type` for the custom event should be set to `imap_content`. The configuration below shows how you can use the event data in a template `sensor`. diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index 1c40f629d0a..d097abdaa4c 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -40,8 +40,7 @@ Metric prefix: Integration time: description: SI unit of time to integrate over. Max sub-interval: - description: Applies time-based integration if the source did not change for this duration. This implies that at least every `max sub-interval`, the integral is updated. If you don't want time-based updates, enter 0. - + description: Applies time-based integration if the source did not change for this duration. This implies that at least every `max sub-interval`, the integral is updated. If you don't want time-based updates, enter `0`. {% endconfiguration_basic %} diff --git a/source/_integrations/ista_ecotrend.markdown b/source/_integrations/ista_ecotrend.markdown index 3bf3065aed8..f980b667e26 100644 --- a/source/_integrations/ista_ecotrend.markdown +++ b/source/_integrations/ista_ecotrend.markdown @@ -43,10 +43,10 @@ The integration currently supports only the German EcoTrend service. {% include integrations/config_flow.md %} {% configuration_basic %} -"Email": - description: "Enter the email address associated with your ista EcoTrend account to connect it to Home Assistant." +Email: + description: "Enter the email address associated with your ista EcoTrend account to connect it to Home Assistant." Password: - description: "Enter the password for your ista EcoTrend account to enable the connection with Home Assistant." + description: "Enter the password for your ista EcoTrend account to enable the connection with Home Assistant." {% endconfiguration_basic %} ## Sensors diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 43a830e968b..08a35b72ddf 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -24,6 +24,7 @@ The sensor provided by this integration will always show you the lowest/highest/ If the source sensor provides an unknown state, it will be ignored in the calculation except for sum where it will set the state to unknown. If the unit of measurement of the sensors differs, the Min/Max sensor will go to an error state where the value is `UNKNOWN` and unit of measurement is `ERR`. {% include integrations/config_flow.md %} + {% configuration_basic %} Name: description: The name the sensor should have. You can change it again later. diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index d494f47f273..0393458b150 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -29,12 +29,14 @@ Attached devices are only tracked on NETGEAR devices set to the router mode, oth {% include integrations/config_flow.md %} {% include integrations/option_flow.md %} + {% configuration_basic %} Consider_home: description: "The consider home time is the number of seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. This option helps prevent false alarms in presence detection." {% endconfiguration_basic %} ## Router entities + The NETGEAR router will have the following entities. Note that not all routers support all features, if a router does not support a feature, the corresponding entity will have the unavailable status even when the entity is disabled. diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index 6fe076ddda8..9c3169df3a7 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -29,14 +29,14 @@ For faster updates, the callback function of the Nuki bridge can be used. This r {% include integrations/config_flow.md %} {% configuration_basic %} - Host: - description: Hostname or IP address of your Nuki bridge, e.g., `192.168.1.25`. - Port: - description: Port of the Nuki bridge HTTP API, default is `8080`. - Token: - description: Token to authenticate against the Nuki bridge HTTP API. - Use an encrypted token for authentication: - description: Use an encrypted token for API calls to the bridge. This should only be deactivated if you experience issues with the API (authentication, etc). The default is `True`. +Host: + description: Hostname or IP address of your Nuki bridge, e.g., `192.168.1.25`. +Port: + description: Port of the Nuki bridge HTTP API, default is `8080`. +Token: + description: Token to authenticate against the Nuki bridge HTTP API. +Use an encrypted token for authentication: + description: Use an encrypted token for API calls to the bridge. This should only be deactivated if you experience issues with the API (authentication, etc). The default is `True`. {% endconfiguration_basic %} ## Actions diff --git a/source/_integrations/ollama.markdown b/source/_integrations/ollama.markdown index ca226ba54fe..d2ad23caf3b 100644 --- a/source/_integrations/ollama.markdown +++ b/source/_integrations/ollama.markdown @@ -32,27 +32,22 @@ This integration requires an external Ollama server, which is available for macO {% include integrations/config_flow.md %} {% include integrations/option_flow.md %} + {% configuration_basic %} URL: description: The URL of the external Ollama server, such as `http://localhost:11434`. - Model: description: Name of the [Ollama model](https://ollama.com/library) to use, such as `mistral` or `llama2:13b`. Models will be automatically downloaded during setup. - Instructions: description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). - Control Home Assistant: description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. This feature is considered experimental and see [Controlling Home Assistant](#controlling-home-assistant) below for details on model limitations. - Context window size: description: "The context window size is the number of tokens the model can take as input. Home Assistant defaults to 8k, which is larger than the default value in Ollama Server (2k), and you may adjust it based on the maximum context size of the specific model used. A larger value will better support larger homes with more entities, and smaller values may lower Ollama server RAM usage." Max history messages: description: Maximum number of messages to keep for each conversation (0 = no limit). Limiting this value will cause older messages in a conversation to be dropped. - Keep alive: description: Duration in seconds for the Ollama host to keep the model in memory after receiving a message (-1 = no limit, 0 = no retention). Default value is -1. - {% endconfiguration_basic %} ## Controlling Home Assistant diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown index 870f232c947..977e8458891 100644 --- a/source/_integrations/openai_conversation.markdown +++ b/source/_integrations/openai_conversation.markdown @@ -43,34 +43,27 @@ The OpenAI key is used to authenticate requests to the OpenAI API. To generate a - Visit the [API Keys page](https://platform.openai.com/account/api-keys) to retrieve the API key you'll use to configure the integration. {% include integrations/option_flow.md %} + {% configuration_basic %} Instructions: description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). - Control Home Assistant: description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. - Recommended settings: description: If enabled, the recommended model and settings are chosen. - {% endconfiguration_basic %} If you choose to not use the recommended settings, you can configure the following options: {% configuration_basic %} - Model: description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3.5 Turbo Documentation](https://platform.openai.com/docs/models/gpt-3-5-turbo), [OpenAI GPT-4 Turbo and GPT-4 Documentation](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4), or [GPT-4o Documentation](https://platform.openai.com/docs/models/gpt-4o). The default is "gpt-4o". - Maximum Tokens to Return in Response: description: The maximum number of words or "tokens" that the AI model should generate in its completion of the prompt. For more information, see the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction). - Temperature: description: A value that determines the level of creativity and risk-taking the model should use when generating text. A higher temperature means the model is more likely to generate unexpected results, while a lower temperature results in more deterministic results. See the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction) for more information. - Top P: description: An alternative to temperature, top_p determines the proportion of the most likely word choices the model should consider when generating text. A higher top_p means the model will only consider the most likely words, while a lower top_p means a wider range of words, including less likely ones, will be considered. For more information, see the [OpenAI Completion API Reference](https://platform.openai.com/docs/api-reference/completions/create#completions/create-top_p). - {% endconfiguration_basic %} ## Talking to Super Mario over the phone diff --git a/source/_integrations/pegel_online.markdown b/source/_integrations/pegel_online.markdown index 112c4cf0791..9eba1c356d8 100644 --- a/source/_integrations/pegel_online.markdown +++ b/source/_integrations/pegel_online.markdown @@ -30,18 +30,18 @@ Select the area, where you want to search for available water measuring stations {% configuration_basic %} Latitude: - description: "The latitude of the center of the search area (_automatically filled by the location picker_)." + description: "The latitude of the center of the search area (_automatically filled by the location picker_)." Longitude: - description: "The longitude of the center of the search area (_automatically filled by the location picker_)." + description: "The longitude of the center of the search area (_automatically filled by the location picker_)." Radius: - description: "Search radius (_in km_)" + description: "Search radius (_in km_)" {% endconfiguration_basic %} ### Step 2 - Station selection {% configuration_basic %} Station: - description: "Select the measurement station you want to add." + description: "Select the measurement station you want to add." {% endconfiguration_basic %} ## Sensors diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown index cd059a09bfd..80c893ab763 100644 --- a/source/_integrations/rainbird.markdown +++ b/source/_integrations/rainbird.markdown @@ -48,10 +48,9 @@ irrigations schedules on a calendar. {% configuration_basic %} Host: - description: "The IP address of your Rain Bird device. You can find the IP address under the - device in the Rain Bird app under **Controller Settings** -> **Network Info**." + description: "The IP address of your Rain Bird device. You can find the IP address under the device in the Rain Bird app under **Controller Settings** -> **Network Info**." Password: - description: "The password used to authenticate the Rain Bird device." + description: "The password used to authenticate the Rain Bird device." {% endconfiguration_basic %} ## Configuration options diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown index 7cc7fd0e2d0..38fe25bdeb9 100644 --- a/source/_integrations/renault.markdown +++ b/source/_integrations/renault.markdown @@ -38,13 +38,13 @@ This integration provides the following platforms: {% configuration_basic %} Locale: - description: "The country code (e.g., 'fr_FR', 'en_GB') used to connect to the Renault servers. This should match your MyRenault account's locale setting." + description: "The country code (e.g., `fr_FR`, `en_GB`) used to connect to the Renault servers. This should match your MyRenault account's locale setting." Username: - description: "The username used to connect to the Renault servers." + description: "The username used to connect to the Renault servers." Password: - description: "The password used to connect to the Renault servers." + description: "The password used to connect to the Renault servers." Kamereon account id: - description: "The Kamereon account ID that your vehicles are assigned to. If there is only one account available it will be automatically selected." + description: "The Kamereon account ID that your vehicles are assigned to. If there is only one account available it will be automatically selected." {% endconfiguration_basic %} All vehicles linked to the account should then get added as devices, with sensors added as linked entity. diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index 075813c32aa..d8253c522be 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -42,13 +42,13 @@ To setup the integration you need the following information: {% configuration_basic %} Name: - description: "The name for your Solar-Log device in Home Assistant. This will also be uses as prefix for the entity names." + description: "The name for your Solar-Log device in Home Assistant. This will also be uses as prefix for the entity names." Host: - description: "The URL or IP address of your Solar-Log." + description: "The URL or IP address of your Solar-Log." User password available: - description: "Check the box, if you have the password for the Solar-Log user to securely access [all data](#additional-data)." + description: "Check the box, if you have the password for the Solar-Log user to securely access [all data](#additional-data)." Password: - description: "Password for the Solar-Log user. Will only be asked for in a second step, if in the first step the checkbox has been selected." + description: "Password for the Solar-Log user. Will only be asked for in a second step, if in the first step the checkbox has been selected." {% endconfiguration_basic %} ## Configuration options diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index b27495ab4ef..cc76f08ff13 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -21,11 +21,11 @@ The [Swiss public transport API](https://transport.opendata.ch/) only allows 100 {% configuration_basic %} Start station: - description: "The departure station for the start of the connection (e.g., 'Zürich HB')" + description: "The departure station for the start of the connection (e.g., `Zürich HB`)" End station: - description: "The arrival station for the end of the connection (e.g., 'Geneva')" + description: "The arrival station for the end of the connection (e.g., `Geneva`)" Via stations: - description: "List of up to 5 via stations (e.g., 'Bern, Lausanne')" + description: "List of up to 5 via stations (e.g., `Bern`, `Lausanne`)" {% endconfiguration_basic %} Use the [Stationboard](https://transport.opendata.ch/examples/stationboard.html) to find exact station names. diff --git a/source/_integrations/switch_as_x.markdown b/source/_integrations/switch_as_x.markdown index cb8a0e6cd8f..269ff53526f 100644 --- a/source/_integrations/switch_as_x.markdown +++ b/source/_integrations/switch_as_x.markdown @@ -39,6 +39,7 @@ Using the **Change device type of a switch** helper integration, you can convert entity types that best matches your use case. {% include integrations/config_flow.md name="Switch as X" %} + {% configuration_basic %} Switch entity: description: The switch entity you want to convert into something else. diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 28d12c9a9b0..7eaa7364b1f 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -20,6 +20,7 @@ The threshold integration observes the state of another sensor. If the value is If the sensor is configured with no hysteresis and the sensor value is equal to the threshold, the sensor is turned off since it is not upper or lower with respect to the threshold. {% include integrations/config_flow.md %} + {% configuration_basic %} Name: description: The name the sensor should have. You can change it again later. diff --git a/source/_integrations/tod.markdown b/source/_integrations/tod.markdown index 57e458ef019..29ea8a9cb03 100644 --- a/source/_integrations/tod.markdown +++ b/source/_integrations/tod.markdown @@ -17,6 +17,7 @@ ha_integration_type: helper The Times of the Day integration provides a binary sensor that gets its values by checking if the current time is within defined time ranges. {% include integrations/config_flow.md %} + {% configuration_basic %} Name: description: The name the binary sensor should have. This can be changed later. diff --git a/source/_integrations/traccar_server.markdown b/source/_integrations/traccar_server.markdown index 83c70210b64..a1428ef7cd1 100644 --- a/source/_integrations/traccar_server.markdown +++ b/source/_integrations/traccar_server.markdown @@ -40,7 +40,6 @@ Examples: All events will also have the following data: {% configuration_basic %} - Device ID: description: (`device_traccar_id`) This will be the device ID that the event is related to. Device name: @@ -51,7 +50,6 @@ Server time: description: (`serverTime`) This will be the time the event was received by the Traccar Server. Attributes: description: (`attributes`) This will be a dictionary of attributes related to the event. - {% endconfiguration_basic %} {% details "Example" %} diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index dca6ef56421..9a942f0c78b 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -24,6 +24,7 @@ Thus it can take some time to show an accurate state. It can be useful as part of automations, where you want to base an action on a trend. {% include integrations/config_flow.md %} + {% configuration_basic %} Name: description: The name the sensor should have. You can change it again later. diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 2c150d61478..2a9b4782141 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -27,21 +27,16 @@ The **Version** {% term integration %} can display the current Home Assistant Co With this {% term integration %} you can select various sources to get a version from. {% configuration_basic %} - "Local installation": - description: This will get the version you are currently running. - - "Home Assistant Versions": - description: This will use the same source that are used by the Supervisor to check for updates based on the channel and image you choose. - - "Home Assistant Website": - description: This will check the website you are reading this on to find the latest version. - - "Docker Hub": - description: This will check the latest tag published to Docker Hub based on the channel and image you choose. - - "Python Package Index (PyPI)": - description: This will check PyPI for the latest published package. - +Local installation: + description: This will get the version you are currently running. +Home Assistant Versions: + description: This will use the same source that are used by the Supervisor to check for updates based on the channel and image you choose. +Home Assistant Website: + description: This will check the website you are reading this on to find the latest version. +Docker Hub: + description: This will check the latest tag published to Docker Hub based on the channel and image you choose. +Python Package Index (PyPI): + description: This will check PyPI for the latest published package. {% endconfiguration_basic %} ## Entities diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 740023293eb..0126f3b30fa 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -1695,7 +1695,6 @@ Enter remote control mode, make one move, stop, and exit remote control mode. ### Sensors {% configuration_basic %} - DnD Start*: description: The timestamp when the next DnD (Do not disturb) period will start DnD End*: @@ -1732,7 +1731,6 @@ Water Box Attached**: description: If the watter box is attached Water Shortage\*\*: description: If the water box is low on water - {% endconfiguration_basic %} {% note %} From 1fee4de06d20c706e6ff0766319dd090964df565 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 2 Dec 2024 07:58:16 +0100 Subject: [PATCH 027/169] Fix url to voice troubleshooting (#36088) --- source/voice_control/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/voice_control/index.markdown b/source/voice_control/index.markdown index 14f21baba7b..972d688e7fe 100644 --- a/source/voice_control/index.markdown +++ b/source/voice_control/index.markdown @@ -25,7 +25,7 @@ As for the rest of Home Assistant core functionalities, Assist can be personaliz -Although adding voice to your smart home configuration is exciting, it will require you to check your existing setup of Home Assistant, especially if you made a lot of customization. But we have prepared a guide of steps and best practices to help you out, as well as our [Troubleshooting](/voice_source/troubleshooting/) guides. +Although adding voice to your smart home configuration is exciting, it will require you to check your existing setup of Home Assistant, especially if you made a lot of customization. But we have prepared a guide of steps and best practices to help you out, as well as our [Troubleshooting](/voice_control/troubleshooting/) guides. Ready? Now let's get started From f5b68e0029435efe9fddc0f6ba9ab9e8c86154d6 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 2 Dec 2024 07:59:15 +0100 Subject: [PATCH 028/169] Remove configuration keys from docs (#36089) --- source/_integrations/balboa.markdown | 5 +---- source/_integrations/bang_olufsen.markdown | 4 ---- source/_integrations/cambridge_audio.markdown | 4 +--- source/_integrations/denonavr.markdown | 6 ------ source/_integrations/fritzbox.markdown | 12 +++--------- source/_integrations/ifttt.markdown | 8 -------- source/_integrations/jellyfin.markdown | 1 - source/_integrations/lamarzocco.markdown | 6 ------ source/_integrations/laundrify.markdown | 4 +--- source/_integrations/motioneye.markdown | 10 ---------- source/_integrations/nmap_tracker.markdown | 9 --------- source/_integrations/octoprint.markdown | 19 ++----------------- source/_integrations/onkyo.markdown | 6 ------ source/_integrations/rabbitair.markdown | 8 ++------ source/_integrations/reolink.markdown | 14 +++++--------- source/_integrations/tedee.markdown | 4 ---- source/_integrations/venstar.markdown | 13 +------------ source/_integrations/zwave_me.markdown | 6 ------ 18 files changed, 16 insertions(+), 123 deletions(-) diff --git a/source/_integrations/balboa.markdown b/source/_integrations/balboa.markdown index 7543373ff1d..64778abf60e 100644 --- a/source/_integrations/balboa.markdown +++ b/source/_integrations/balboa.markdown @@ -44,16 +44,13 @@ Balboa Spa Client integration is not compatible with ControlMySpa™ cloud API u {% configuration_basic %} host: description: "Hostname or IP address of your Balboa Spa Wifi Device, e.g., `192.168.1.58`." - required: true - type: string {% endconfiguration_basic %} {% include integrations/option_flow.md %} + {% configuration_basic %} sync_time: description: Sync the Spa's internal clock with Home Assistant daily - type: boolean - default: false {% endconfiguration_basic %} ## Known limitations diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown index 099948bddd0..584cdad1fb0 100644 --- a/source/_integrations/bang_olufsen.markdown +++ b/source/_integrations/bang_olufsen.markdown @@ -40,12 +40,8 @@ and any other [Mozart](https://support.bang-olufsen.com/hc/en-us/articles/247669 {% configuration_basic %} IP Address: description: The IP address of your device. Can be found by navigating to the device on the [Bang & Olufsen app](https://www.bang-olufsen.com/en/dk/story/apps) and selecting `Settings` → `About` → `IP address`. - required: true - type: string Device model: description: The model name of your Bang & Olufsen device. This is used to determine some capabilities of the device. If the device is not in the list yet, choose a product similar to yours. - required: true - type: string {% endconfiguration_basic %} ## Data updates diff --git a/source/_integrations/cambridge_audio.markdown b/source/_integrations/cambridge_audio.markdown index 26a991535f4..a52567c4825 100644 --- a/source/_integrations/cambridge_audio.markdown +++ b/source/_integrations/cambridge_audio.markdown @@ -46,9 +46,7 @@ use a different protocol and are not currently supported. {% configuration_basic %} Host: - description: The IP address of your device can be found by navigating to the device on the [StreamMagic app](https://www.cambridgeaudio.com/usa/en/products/streammagic) and selecting `Settings` → `IP address`. - required: true - type: string + description: The IP address of your device can be found by navigating to the device on the [StreamMagic app](https://www.cambridgeaudio.com/usa/en/products/streammagic) and selecting `Settings` → `IP address`. {% endconfiguration_basic %} ## Data updates diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 4a11ba7d9fd..f3ed085c50c 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -134,14 +134,8 @@ zone3: description: Specifies if zone 3 should be activated. Zones are displayed as additional media players with the same functionality as the Main Zone of the device supports. Some receivers do not support a second zone. update_audyssey: description: Specifies if Audyssey settings should be updated. This can take up to 10 seconds for some receivers. - required: false - default: false - type: boolean use_telnet: description: Specifies if a telnet connection should be used to receive device status updates. Using telnet provides realtime updates (local push) for many values but each receiver is limited to a single connection. If you enable this setting, no other connection to your device can be made via telnet. This will be set to true for new installations of the integration but false for existing installs to prevent compatibility issues. - required: false - default: true - type: boolean {% endconfiguration_basic %} A few notes: diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 89a13a01ca8..6dbee7dce1b 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -63,17 +63,11 @@ If you still want to use the predefined user, please note that as of FRITZ!OS 7. {% configuration_basic %} Host: - description: "The hostname or IP address of your FRITZ!Box router." - required: true - type: string + description: "The hostname or IP address of your FRITZ!Box router." Username: - description: "Name of the user to connect Home Assistant to your FRITZ!Box (_see [prerequisites](#prerequisites)_)" - required: true - type: string + description: "Name of the user to connect Home Assistant to your FRITZ!Box (_see [prerequisites](#prerequisites)_)" Password: - description: "Password for the user to connect Home Assistant to your FRITZ!Box (_see [prerequisites](#prerequisites)_)" - required: true - type: string + description: "Password for the user to connect Home Assistant to your FRITZ!Box (_see [prerequisites](#prerequisites)_)" {% endconfiguration_basic %} ## Data fetching and limitations diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown index 065c535ca09..f4d1addc39e 100644 --- a/source/_integrations/ifttt.markdown +++ b/source/_integrations/ifttt.markdown @@ -87,20 +87,12 @@ You can use **Developer Tools** to test your [Webhooks](https://ifttt.com/maker_ {% configuration_basic %} event: description: The name of the event to send. - required: true - type: string value1: description: Generic field to send data via the event. - required: false - type: string value2: description: Generic field to send data via the event. - required: false - type: string value3: description: Generic field to send data via the event. - required: false - type: string {% endconfiguration_basic %} When your screen looks like this, select the **Perform action** button. diff --git a/source/_integrations/jellyfin.markdown b/source/_integrations/jellyfin.markdown index 0804c2b9cce..378ceed096a 100644 --- a/source/_integrations/jellyfin.markdown +++ b/source/_integrations/jellyfin.markdown @@ -64,5 +64,4 @@ Password: {% configuration_basic %} Audio Codec: description: Sets the audio encoding codec to a Jellyfin API supported codec (aac, mp3, vorbis, wma) - required: false {% endconfiguration_basic %} diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index 6f295c38b6a..1a914b71732 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -46,16 +46,10 @@ By default, this integration will query your machine every 30 seconds for an upd {% configuration_basic %} Username: description: "Your username you use to log into the La Marzocco app." - required: true - type: string Password: description: "Password you use to log into the La Marzocco app." - required: true - type: string Host: description: "IP address of your machine in your local network. If not set, no local connections will be used." - required: false - type: boolean {% endconfiguration_basic %} {% include integrations/option_flow.md %} diff --git a/source/_integrations/laundrify.markdown b/source/_integrations/laundrify.markdown index 593e412f9fb..338e6c3a182 100644 --- a/source/_integrations/laundrify.markdown +++ b/source/_integrations/laundrify.markdown @@ -40,8 +40,6 @@ Your code will expire within 60 minutes after activation. Make sure to configure {% include integrations/config_flow.md %} {% configuration_basic %} -code: +Code: description: "Auth Code that can be obtained in the laundrify App (see above), e.g., `123-456`." - required: true - type: string {% endconfiguration_basic %} diff --git a/source/_integrations/motioneye.markdown b/source/_integrations/motioneye.markdown index 512fb2cbc09..f3d00f908b7 100644 --- a/source/_integrations/motioneye.markdown +++ b/source/_integrations/motioneye.markdown @@ -27,24 +27,14 @@ and visualization of multiple types of cameras. {% configuration_basic %} url: description: The URL of the motionEye server itself -- **not** the URL for the camera stream(s) that it makes available. - required: true - type: string admin_username: description: The username of the motionEye administrative account, used for changing camera settings. - required: true - type: string admin_password: description: The password of the motionEye administrative account. - required: true - type: string surveillance_username: description: The username of the motionEye surveillance user, used to authenticate video streams. - required: true - type: string surveillance_password: description: The password of the motionEye surveillance account. - required: true - type: string {% endconfiguration_basic %} {% include integrations/option_flow.md %} diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index 249202270a9..82073194858 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -32,21 +32,12 @@ An example of how the Nmap scanner can be customized: {% configuration_basic %} Network addresses to scan: description: Network range to scan using [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). In the example above it will scan addresses from `192.168.1.1` to `192.168.1.254`. - required: true - type: string Minimum number of minutes between scans of active devices: description: Frequency of the scans. The lower the number, the quicker it will detect devices connected and disconnected usually at the cost of the devices battery life. The example above will scan every minute. - required: true - type: integer Network addresses to exclude from scanning: description: A comma-separated list of IP addresses not to scan. The above example will skip `192.168.1.8`. - required: false - type: string Raw configurable scan options for Nmap: description: Nmap command line parameters which can be used to configure how Nmap scans the network. For more details see [Nmap reference guide](https://nmap.org/book/man.html). - required: false - type: string - default: -F T4 --min-rate 10 --host-timeout 5s {% endconfiguration_basic %} See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/octoprint.markdown b/source/_integrations/octoprint.markdown index abbe2801372..03893304c7c 100644 --- a/source/_integrations/octoprint.markdown +++ b/source/_integrations/octoprint.markdown @@ -29,35 +29,20 @@ ha_integration_type: integration {% configuration_basic %} username: description: Username for the server. - required: true - type: string host: - description: Address of the server, e.g., 192.168.1.32. - required: true - type: string + description: Address of the server, e.g., `192.168.1.32`. port: description: Port of the server. - required: false - type: string - default: 80 path: description: URL path of the server - required: false - type: string - default: / ssl: description: Whether to use SSL or not when communicating. - required: false - type: boolean - default: false verify ssl: description: Should the SSL certificate be validated. - required: false - type: boolean - default: false {% endconfiguration_basic %} ### API key + 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, log in to Octoprint as the user whose credentials you just entered in Home Assistant, and select **Allow** on the prompt. diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index 7356985af33..d38700f9472 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -25,13 +25,10 @@ Please be aware that you need to enable "Network Standby" for this integration t {% configuration_basic %} Host: description: Hostname or IP address of the device, for example:`192.168.1.2`. - type: string Volume Resolution: description: Number of steps it takes for the receiver to go from the lowest to the highest possible volume. Possible values are 50, 80, 100, 200. For older Onkyo receivers, this typically is 80; newer Onkyo receivers use 200. - type: integer Input sources: description: List of input sources supported by the receiver. - type: list {% endconfiguration_basic %} The above settings can also be adjusted later. To do this, click the three-dot menu on the integration entry and select **Reconfigure**. @@ -41,11 +38,8 @@ The above settings can also be adjusted later. To do this, click the three-dot m {% configuration_basic %} Max Volume: description: Maximum volume limit as a percentage. Often the maximum volume of the receiver is far too loud. Setting this will set Home Assistant's 100% volume to be this setting on the amp, i.e., if you set this to 50%, when you set Home Assistant to be 100%, then your receiver will be set to 50% of its maximum volume. - default: 100 - type: integer Input sources: description: Mappings of input sources to their names. - type: list {% endconfiguration_basic %} ### Zones diff --git a/source/_integrations/rabbitair.markdown b/source/_integrations/rabbitair.markdown index 3f449eabcbe..df444f3d367 100644 --- a/source/_integrations/rabbitair.markdown +++ b/source/_integrations/rabbitair.markdown @@ -49,11 +49,7 @@ In some cases the access token may not be available right away, then you will se {% configuration_basic %} host: - description: "Hostname or IP address of the device." - required: true - type: string + description: Hostname or IP address of the device. access_token: - description: "Access Token that can be obtained in the Rabbit Air app." - required: true - type: string + description: Access Token that can be obtained in the Rabbit Air app. {% endconfiguration_basic %} diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index aff92f3dd49..0e8c82d7555 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -43,22 +43,18 @@ A brand new Reolink camera needs to be connected to the network and initialized. - The password used for the Reolink device can only contain characters `a-z, A-Z, 0-9 or @$*~_-+=!?.,:;'()[]`. Other special characters will cause encoding issues in the video streams used by this integration and are, therefore, not allowed. When using an incompatible special character in the password, the integration will prompt you to change the password. {% include integrations/config_flow.md %} + {% configuration_basic %} Host: - description: "The hostname or IP address of your Reolink device. For example: '192.168.1.25'. You can find it in your router or in the Reolink app under **Settings** -> **Device** (top icon) -> **Networkinformation** -> **IP-address**. Normally, the Reolink device is automatically discovered, and you do not need to provide this." - required: false - type: string + description: "The hostname or IP address of your Reolink device. For example: '192.168.1.25'. You can find it in your router or in the Reolink app under **Settings** -> **Device** (top icon) -> **Networkinformation** -> **IP-address**. Normally, the Reolink device is automatically discovered, and you do not need to provide this." Username: - description: "Username to log in to the Reolink device itself. Not the Reolink cloud account." - required: true - type: string + description: "Username to log in to the Reolink device itself. Not the Reolink cloud account." Password: - description: "Password to log in to the Reolink device itself. Not the Reolink cloud account." - required: true - type: string + description: "Password to log in to the Reolink device itself. Not the Reolink cloud account." {% endconfiguration_basic %} {% include integrations/option_flow.md %} + {% configuration_basic %} Protocol: description: Switch between RTSP, RTMP, or FLV streaming protocol. RTSP supports 4K streams (h265 encoding) while RTMP and FLV do not. FLV is the least demanding on the camera. diff --git a/source/_integrations/tedee.markdown b/source/_integrations/tedee.markdown index 3597d886986..0c254a7385b 100644 --- a/source/_integrations/tedee.markdown +++ b/source/_integrations/tedee.markdown @@ -40,12 +40,8 @@ The integration will try to configure webhooks to receive near-real-time push up {% configuration_basic %} Host: description: "The IP address of your bridge. You can find it in your router or in the Tedee app under **Bridge Settings** -> **Local API**." - required: false - type: string Local Access Token: description: "The local access token for your bridge. You can find it in the Tedee app under **Bridge Settings** -> **Local API**." - required: false - type: string {% endconfiguration_basic %} ## Supported devices diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index f65443755f8..02b395010fc 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -79,24 +79,13 @@ If the local API is successfully enabled on the thermostat, you should see some {% configuration_basic %} host: - description: Address of your thermostat, e.g., 192.168.1.32. - required: true - type: string + description: Address of your thermostat, e.g., `192.168.1.32`. username: description: Username for the thermostat. - required: false - type: string password: description: Password for the thermostat. - required: false - type: string pin: description: Pin for Lockscreen (required if lock screen enabled) - required: false - type: string ssl: description: Whether to use SSL or not when communicating. - required: false - type: boolean - default: false {% endconfiguration_basic %} diff --git a/source/_integrations/zwave_me.markdown b/source/_integrations/zwave_me.markdown index ad4d306c0d6..79f88938ce0 100644 --- a/source/_integrations/zwave_me.markdown +++ b/source/_integrations/zwave_me.markdown @@ -43,16 +43,10 @@ This integration allows you to control a Z-Wave network via the [Z-Wave.Me Z-Way {% include integrations/config_flow.md %} {% configuration_basic %} - URL: description: The IP address with the port of the Z-Way server. The IP address can be prefixed with wss:// if HTTPS should be used instead of HTTP (when using find.z-wave.me remote access service or public IP with SSL). - required: true - type: string API Token: description: Z-Way API access token of the Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token. - required: true - type: string - {% endconfiguration_basic %} When connecting via find.z-wave.me remote access service you need to use a token with a global scope (log-in to Z-Way via [find.z-wave.me](https://find.z-wave.me) for this). From dae9ef56e379acc215c80c398ab1764cfb6a3e41 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 2 Dec 2024 08:02:00 +0100 Subject: [PATCH 029/169] Convert to details block for troubleshootings (#36091) --- source/_integrations/keymitt_ble.markdown | 13 +++++++------ source/_integrations/switchbot.markdown | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/source/_integrations/keymitt_ble.markdown b/source/_integrations/keymitt_ble.markdown index eba82277308..eacc4a1682b 100644 --- a/source/_integrations/keymitt_ble.markdown +++ b/source/_integrations/keymitt_ble.markdown @@ -53,9 +53,10 @@ The integration will automatically discover devices once the [Bluetooth](/integr Due to the device going into deep sleep after extended periods of no activity, the response time can be up to a minute in extreme cases. On average it will be much quicker. -{% configuration_basic %} -"Failed to pair": - description: Make sure your devices are powered on, in range, and in pairing mode. Pressing the button on the MicroBot Push to take it out of deep sleep may also be beneficial. -"No unconfigured devices found": - description: Make sure your devices are powered on, in range, and in pairing mode. Pressing the button on the MicroBot Push to take it out of deep sleep may also be beneficial. -{% endconfiguration_basic %} +{% details "Failed to pair" %} +Make sure your devices are powered on, in range, and in pairing mode. Pressing the button on the MicroBot Push to take it out of deep sleep may also be beneficial. +{% enddetails %} + +{% details "No unconfigured devices found" %} +Make sure your devices are powered on, in range, and in pairing mode. Pressing the button on the MicroBot Push to take it out of deep sleep may also be beneficial. +{% enddetails %} diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 60921459d41..9e6f2e2aa00 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -166,12 +166,13 @@ cover: The SwitchBot integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. -{% configuration_basic %} -"Config flow could not be loaded": - description: Possible custom integration conflict, using a different version of PySwitchbot; Try uninstalling the custom integration. -"No unconfigured devices found": - description: Make sure your devices are powered on and are in range. -{% endconfiguration_basic %} +{% details "Config flow could not be loaded" %} +Possible custom integration conflict, using a different version of PySwitchbot; Try uninstalling the custom integration. +{% enddetails %} + +{% details "No unconfigured devices found" %} +Make sure your devices are powered on and are in range. +{% enddetails %} ### Slow connection times From c16c8a889ca9b21c355fd2f3a33690deb4615323 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 2 Dec 2024 08:14:56 +0100 Subject: [PATCH 030/169] Add known limitation section to Autarco integration (#36092) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/autarco.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/autarco.markdown b/source/_integrations/autarco.markdown index 4236de63216..5514cc71f7d 100644 --- a/source/_integrations/autarco.markdown +++ b/source/_integrations/autarco.markdown @@ -66,6 +66,10 @@ If you have a battery connected to your system, you can monitor the battery stat - Charged energy this month (kWh) - Charged energy total (kWh) +## Known limitations + +The integration does not show data about your self-sufficiency or CO2 savings. + ## Removing the integration This integration follows standard integration removal. No extra steps are required. From 1e3c20583c6addda05b5e386a8423740ae25562c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 08:43:29 +0100 Subject: [PATCH 031/169] build(deps-dev): bump webrick from 1.9.0 to 1.9.1 (#36094) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9ea94ce523b..1b354bf4738 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -161,7 +161,7 @@ GEM tzinfo-data (1.2024.2) tzinfo (>= 1.0.0) unicode-display_width (2.6.0) - webrick (1.9.0) + webrick (1.9.1) PLATFORMS arm64-darwin-23 From 0d46fe529a0ca7c575a70ba913609cea52470831 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 08:47:55 +0100 Subject: [PATCH 032/169] build(deps-dev): bump textlint from 14.3.0 to 14.4.0 (#36096) --- package-lock.json | 224 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 113 insertions(+), 113 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9c831732bf4..f3f4f98e859 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.0", "remark-stringify": "^11.0.0", - "textlint": "^14.3.0", + "textlint": "^14.4.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^5.0.13" @@ -416,66 +416,66 @@ "dev": true }, "node_modules/@textlint/ast-tester": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.3.0.tgz", - "integrity": "sha512-K1TbF1Kko1XAKCWuFY/TkZO521ZWv2DAHu4JYsqqY/PnqqySHZorjSG78EfYBhkVq1E3ktprlAJmp8GNmpoYWQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.4.0.tgz", + "integrity": "sha512-pCKEUDaZVvvj/uZOTTUgU1tTkNsK+ufNs4Xx5BsBAqy+E0aAJJ47c8h2WIoL/MJniK6ZLctsDIwaZ4z9rUvrsQ==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0", + "@textlint/ast-node-types": "^14.4.0", "debug": "^4.3.4" } }, "node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/@textlint/ast-traverse": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.3.0.tgz", - "integrity": "sha512-1YA5M2T+KeIHC0br5FwhkTwuLEUxkf5K5QtXJmXSF0Mf06ZlLfZ44RMlKYD3ElmzG+TmpmFdKIs4FzFSJRtslw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.4.0.tgz", + "integrity": "sha512-P6UrqKlXd9Lm0kJ1O8vyQU0/btXULiUHhE5nLZMnTNfgZYG3VasQ9BUyDHJn19O4PhUrIzZJusMi1XFcb3Y46Q==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0" + "@textlint/ast-node-types": "^14.4.0" } }, "node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/@textlint/config-loader": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.3.0.tgz", - "integrity": "sha512-z7g3dArU7EhWHHy0lvMDQF+6TWDppvqkXh7J6YRTXnq00ftEC1MbHGfrsZNJF1av6rBJ8r8nquKyCoeYZBz7cw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.4.0.tgz", + "integrity": "sha512-TCYVhQ+wP/Gs7P5BDAfyRpLJ5tohicTSwQapd/xPjByXFtGx8xlsbLQHTWcodFFpty1O57KRPRsRDhvuTAA2bQ==", "dev": true, "dependencies": { - "@textlint/kernel": "^14.3.0", - "@textlint/module-interop": "^14.3.0", - "@textlint/resolver": "^14.3.0", - "@textlint/types": "^14.3.0", - "@textlint/utils": "^14.3.0", + "@textlint/kernel": "^14.4.0", + "@textlint/module-interop": "^14.4.0", + "@textlint/resolver": "^14.4.0", + "@textlint/types": "^14.4.0", + "@textlint/utils": "^14.4.0", "debug": "^4.3.4", "rc-config-loader": "^4.1.3" } }, "node_modules/@textlint/feature-flag": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.3.0.tgz", - "integrity": "sha512-wWKbyHpmwxEEcyoBMd2u6GB5bw7vJ2a68HmBRknUABFL7vvp8JAzf4D/I2cLXgV06OoMbWE+hnV2CInayJiCpA==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.4.0.tgz", + "integrity": "sha512-aSphE9jw4QTjiCOe1tbtZ2NZpMRbYoUTi2E62KQ/mcVnwGC+Jk671wNSoUJzR/YNaLo63cQ7OKhHrBEb55t+Iw==", "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.3.0.tgz", - "integrity": "sha512-xbSH4vb1wdjJngHxpfBu65Y+uTZdU/w0b7Hd6TJ7Q5FaZD1pftyUHGisLMN+xX3V56t28e+qAkSBTQ4Mq4UdYQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.4.0.tgz", + "integrity": "sha512-DijDPVZgHkHKAEsYVXFZaP0TJGLDtirok/hgi1N1N3MW5ZtQpIHOW8DgKaJcmDZvPQjkTxzBaUp8rzBxHG8MaQ==", "dev": true, "dependencies": { - "@textlint/module-interop": "^14.3.0", - "@textlint/resolver": "^14.3.0", - "@textlint/types": "^14.3.0", + "@textlint/module-interop": "^14.4.0", + "@textlint/resolver": "^14.4.0", + "@textlint/types": "^14.4.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^5.2.0", @@ -485,40 +485,40 @@ } }, "node_modules/@textlint/kernel": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.3.0.tgz", - "integrity": "sha512-RLkIJjP+GtrLmjLtAYSCORKF55z5wtw2E9Vb4h3RSQLjzYopQ3s9N1LbUwLJDr8tz0AphtOb6t1efF3d+NIemw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.4.0.tgz", + "integrity": "sha512-zH19vQ0ns4n8kPr+csjPnV5yPip6gKs08GvDJBQlX3AEbRQkaSw4H5kBCE+R0D9qDkuqt7xe8Z8Tdm7E7aUvGw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0", - "@textlint/ast-tester": "^14.3.0", - "@textlint/ast-traverse": "^14.3.0", - "@textlint/feature-flag": "^14.3.0", - "@textlint/source-code-fixer": "^14.3.0", - "@textlint/types": "^14.3.0", - "@textlint/utils": "^14.3.0", + "@textlint/ast-node-types": "^14.4.0", + "@textlint/ast-tester": "^14.4.0", + "@textlint/ast-traverse": "^14.4.0", + "@textlint/feature-flag": "^14.4.0", + "@textlint/source-code-fixer": "^14.4.0", + "@textlint/types": "^14.4.0", + "@textlint/utils": "^14.4.0", "debug": "^4.3.4", "fast-equals": "^4.0.3", "structured-source": "^4.0.0" } }, "node_modules/@textlint/kernel/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/@textlint/linter-formatter": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.3.0.tgz", - "integrity": "sha512-9Rzq0y9Qi6L43To9GIUd1kh/7Pq202qU9nQ15atyK5BlvPFlzJnc98X/hCE1tN+uDriZnxu4v4Vs7+mHFT9VPw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.4.0.tgz", + "integrity": "sha512-rnFwSSXDdsQHGVaRoJJYocVSYn4ZEPUFj78JYDZcR+TRYVDzRJEblFhwsiXl/gHD3L5g2RnBcLbxwZIW+xwtIA==", "dev": true, "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "^14.3.0", - "@textlint/resolver": "^14.3.0", - "@textlint/types": "^14.3.0", + "@textlint/module-interop": "^14.4.0", + "@textlint/resolver": "^14.4.0", + "@textlint/types": "^14.4.0", "chalk": "^4.1.2", "debug": "^4.3.4", "js-yaml": "^3.14.1", @@ -531,12 +531,12 @@ } }, "node_modules/@textlint/markdown-to-ast": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.3.0.tgz", - "integrity": "sha512-z4UMKFh3r5KtylPt5OO6su7DScU+fMZ7Qv5LTrJNaOqcmOzFho64Y1I26BJv86f8BC+MUYP0kza5MZGaR2LYQA==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.4.0.tgz", + "integrity": "sha512-y6UxfRZ00w8XQ1jfKhR0jcQd7qbYaQgo3aERWbJR0Gxxl0T+G+TKBS12pdnUFOTshgSTEgqlvrE+Zt3lTl0e1A==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0", + "@textlint/ast-node-types": "^14.4.0", "debug": "^4.3.4", "mdast-util-gfm-autolink-literal": "^0.1.3", "neotraverse": "^0.6.15", @@ -548,9 +548,9 @@ } }, "node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/@textlint/markdown-to-ast/node_modules/bail": { @@ -780,79 +780,79 @@ } }, "node_modules/@textlint/module-interop": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.3.0.tgz", - "integrity": "sha512-Adxkx8GSFVPhCZiveTD/u66f5T3W6yIlPUsKi7ZLar7ahYI/D4P/XfA0RNhgMF3xM4uw+vNrer2LcY4KY7cUfw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.4.0.tgz", + "integrity": "sha512-QdtNDJc+XqDIbP9bwt7DryqE+vFbbIB28462VFWtXcHCJJoFTlmCJ1133SXLe14IOT9P04T9LMNhgv4d2v31gg==", "dev": true }, "node_modules/@textlint/resolver": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.3.0.tgz", - "integrity": "sha512-v17n8eUJPNaE9SblemmEnAeIcGHBfn/hEMuZe0iSl3hLyJueDM7zP3GP54FoWyuTIMyQqPt21l6+48+BjJ9tfQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.4.0.tgz", + "integrity": "sha512-4jNO6Lbyiqtf22205XPpSYG4BNCZrvpmLzO2JUpYMe5C5g0z4l06Yqei3gJWYjdBLlL+fIxDcdW0hyIvvSFpUg==", "dev": true }, "node_modules/@textlint/source-code-fixer": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.3.0.tgz", - "integrity": "sha512-KJJoiN1Ha9R6tJrg3KHnYkq0s86D53PUjYxxCYJxo9Q8yTcXx+aXPspvgW+qGD+qcQxjarqbLl6m8uRlbyrg3Q==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.4.0.tgz", + "integrity": "sha512-S2QBZ3pUQQeH01kgfKa1Tmusz0A2/sm3QkW1Uhag9x5v5OKYC4W3070eliY+p0I88nxmqy72M/j+78sDutUcuw==", "dev": true, "dependencies": { - "@textlint/types": "^14.3.0", + "@textlint/types": "^14.4.0", "debug": "^4.3.4" } }, "node_modules/@textlint/text-to-ast": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.3.0.tgz", - "integrity": "sha512-wCjJmpwlff/wPsGaECBbNn0hPfiCnbr4mPJKFE59M3aeISoH3zqITCx9RCVPBYbYHzqTWmHPNLYI7egVIbZgrA==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.4.0.tgz", + "integrity": "sha512-MA3z7cksYpjXRPIFFcbB6CM5UbNFD53GJ823qo74ImU2MRlIrs9dcR9yQ76YxbYZ9OazPzUNGg5AS9tbp3Exbg==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0" + "@textlint/ast-node-types": "^14.4.0" } }, "node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.3.0.tgz", - "integrity": "sha512-0lyYK/SUOgww+sxBtvjjsinHKMvFZUpLKvxCepymGlTyuOTYo7QmjmfhLc5G97PChOpUG41dpQoZt9miohQT1A==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.4.0.tgz", + "integrity": "sha512-J6RoZSC7MOr9WYqyG4s1BZxExiHfS6fMmiQuWGJB133vDDrY+wmiaFm/C6Li59YPdPivddxSDo7v8z2zyayW1A==", "dev": true, "dependencies": { - "@textlint/markdown-to-ast": "^14.3.0" + "@textlint/markdown-to-ast": "^14.4.0" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.3.0.tgz", - "integrity": "sha512-XpgyWTy2CqoKGuBrEsBJOVJqoXREAB6RFjPaa5bHvdvjwzU+EFqCNR9RXXs3Iov1ip/AaXDz/JeB4IYk6zj8GQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.4.0.tgz", + "integrity": "sha512-ut3+MhOh9taPUKLaTT4nyil3MLnAbo60BYGWIz6cPrv3YMyvN/eCw4jW4VscvV1WTik19lzmDCBfSpfnmz/PiA==", "dev": true, "dependencies": { - "@textlint/text-to-ast": "^14.3.0" + "@textlint/text-to-ast": "^14.4.0" } }, "node_modules/@textlint/types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.3.0.tgz", - "integrity": "sha512-zvPCQUpK1hOQA6Bg4XLYvKbOvFcQT65Nm25wsDdOGRgOvZbUzA+DJkiaH9Z8DAaJx83tTknIeLl4qwu97Hw1Ew==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.4.0.tgz", + "integrity": "sha512-ZxZkiFxaXfjoaa/gzbGyUWR0mSMLChDaQrYJ0sPToCQ0QXUG3w5sIT2hCGZyBfNRc8/g0eH+KbDejD014oBPBQ==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0" + "@textlint/ast-node-types": "^14.4.0" } }, "node_modules/@textlint/types/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/@textlint/utils": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.3.0.tgz", - "integrity": "sha512-Q7bKiPobKCDXM5z+xByLZzSjcOBhvlDufQGHNgHR8EFie2/AFc68cN8RYCY0MmwCMBMuHuYaOzfIOpQpK9oTcQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.4.0.tgz", + "integrity": "sha512-/5QSdYa042z0SX+10+UPzHlMT2nWuRBkouf90/P60nycpFmWn0waIbVoARDlekzmaqB4BitbP7NGjjPmEju4bA==", "dev": true }, "node_modules/@types/concat-stream": { @@ -6036,24 +6036,24 @@ "dev": true }, "node_modules/textlint": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-14.3.0.tgz", - "integrity": "sha512-oarGVGz7KwRd08QOvNDSffzjEyfS5mnGp7ZAxr799QC0HDBp0VM358WGyxdaboDXav1RlkQ3TWkvOvHBBMXCXw==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-14.4.0.tgz", + "integrity": "sha512-OutNGN573fI48bRdikgz+PAjCN/P4DRK9dLGxkNkqBlWmwbxLpvBxw1qspZEFVVLoNH94ra65NDfCwMvCosvdA==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^14.3.0", - "@textlint/ast-traverse": "^14.3.0", - "@textlint/config-loader": "^14.3.0", - "@textlint/feature-flag": "^14.3.0", - "@textlint/fixer-formatter": "^14.3.0", - "@textlint/kernel": "^14.3.0", - "@textlint/linter-formatter": "^14.3.0", - "@textlint/module-interop": "^14.3.0", - "@textlint/resolver": "^14.3.0", - "@textlint/textlint-plugin-markdown": "^14.3.0", - "@textlint/textlint-plugin-text": "^14.3.0", - "@textlint/types": "^14.3.0", - "@textlint/utils": "^14.3.0", + "@textlint/ast-node-types": "^14.4.0", + "@textlint/ast-traverse": "^14.4.0", + "@textlint/config-loader": "^14.4.0", + "@textlint/feature-flag": "^14.4.0", + "@textlint/fixer-formatter": "^14.4.0", + "@textlint/kernel": "^14.4.0", + "@textlint/linter-formatter": "^14.4.0", + "@textlint/module-interop": "^14.4.0", + "@textlint/resolver": "^14.4.0", + "@textlint/textlint-plugin-markdown": "^14.4.0", + "@textlint/textlint-plugin-text": "^14.4.0", + "@textlint/types": "^14.4.0", + "@textlint/utils": "^14.4.0", "debug": "^4.3.4", "file-entry-cache": "^5.0.1", "get-stdin": "^5.0.1", @@ -6178,9 +6178,9 @@ } }, "node_modules/textlint/node_modules/@textlint/ast-node-types": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz", - "integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==", + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz", + "integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==", "dev": true }, "node_modules/textlint/node_modules/brace-expansion": { diff --git a/package.json b/package.json index 24acdf23c50..f9746eb2853 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.0", "remark-stringify": "^11.0.0", - "textlint": "^14.3.0", + "textlint": "^14.4.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^5.0.13" From e5be9f356fd75e53f9c1d54f7baf2d31cbcc27e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 08:49:04 +0100 Subject: [PATCH 033/169] build(deps-dev): bump regexp_parser from 2.9.2 to 2.9.3 (#36095) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1b354bf4738..0a22db986af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,7 +110,7 @@ GEM ffi (~> 1.0) rbs (3.6.1) logger - regexp_parser (2.9.2) + regexp_parser (2.9.3) rexml (3.3.9) rouge (4.5.1) rubocop (1.69.0) From 416843eb996302d25174a66d6f8ad2670431208d Mon Sep 17 00:00:00 2001 From: Josef Zweck <24647999+zweckj@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:02:07 +0100 Subject: [PATCH 034/169] Update lamarzocco.markdown (#36098) --- source/_integrations/lamarzocco.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index 1a914b71732..c096299d6c7 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -76,7 +76,7 @@ Use Bluetooth: | Number name | Description | Available for machines | Controllable through | Remarks | |-------------|-------------| ---------------------- |--------------------- | ------- | -| **Coffee target temperature** | Temperature the coffee boiler is set to | `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | +| **Coffee target temperature** | Temperature the coffee boiler is set to | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Steam target temperature** | Temperature the steam boiler is set to | `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Tea water duration** | Dose hot water (in seconds) | `GS3 AV`, `GS3 MP` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Dose** | Doseage (in ticks) for each key | `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | `GS3` has this multiple times, one for each physical key (1-4), and the entities are disabled by default | From c2501adab9d7f2878512234deb3bfd585a485b3a Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 2 Dec 2024 14:46:25 +0100 Subject: [PATCH 035/169] Plugwise Add update and removal information (#36055) --- source/_integrations/plugwise.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 56eff11e16a..87f7944c70c 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -57,6 +57,22 @@ For example, if you have an Adam setup with a Lisa named 'Living' and a Tom name Centralized measurements such as 'power' for a P1, 'outdoor_temperature' on Anna or Adam will be assigned to your gateway entity. Heating/cooling device measurements such as 'boiler_temperature' will be assigned to the OpenTherm/OnOff entity. +## Data updates + +The interval which the integration fetches data from the Smile depends on the device: + +- Power entities, such as the P1, will be refreshed every 10 seconds. +- Climate entities will be refreshed every 60 seconds. +- Stretch entities will be refreshed every 60 seconds. + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required within Home Assistant or on your Plugwise devices. + +{% include integrations/remove_device_service.md %} + +This will also remove all connected Adam devices (such as Anna, Tom or Lisa) or connected Adam/Stretch plugs. + ## Configuration The Plugwise Smile(s) present in your network will be automatically detected via Zeroconf discovery and will be shown on the Integrations-page. To set up an integration, click the "CONFIGURATION" button on the discovered integration and you will be presented with a dialog requesting your Smile password. After you click submit, you will have the opportunity to select the area(s) where individual Smile appliances are located. The username `smile` is shown as a default, when configuring your Stretch change this to `stretch` accordingly. From 00eef482d84ce106df2676af13a485d6dde8e4d5 Mon Sep 17 00:00:00 2001 From: omettam Date: Mon, 2 Dec 2024 09:56:04 -0500 Subject: [PATCH 036/169] Update cisco_webex_teams.markdown (#36100) --- source/_integrations/cisco_webex_teams.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index 08f8a50f808..b9a8f36da51 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -16,7 +16,7 @@ related: title: Configuration file --- -The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark or Cisco Webex Teams). +The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex](https://www.webex.com/suite/messaging.html) (formerly known as Cisco Spark or Cisco Webex Teams). To use this notification platform you will need an app (bot) token. To obtain a token visit [Cisco Webex for Developers](https://developer.webex.com/). @@ -25,7 +25,7 @@ To use this notification platform you will need an app (bot) token. To obtain a You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of two ways: 1. Logging in at [Cisco Webex for Developers](https://developer.webex.com/) and navigate to `Documentation`>`API Reference`>`Messages` and select List Messages, or -2. Log into the web client at [teams.webex.com](https://teams.webex.com/), +2. Log into the web client at [web.webex.com](https://web.webex.com/), - select the room (or create a new room), - then copying the room ID from the URL. 3. Within the Webex Client, press Control+Shift+K (Windows) or Command+Shift+K (macOS), which will automatically copy the space information to your clipboard, which you From 428ce019cd50721cab45efce2c22c7072708bacb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:35:01 +0100 Subject: [PATCH 037/169] build(deps-dev): bump sorbet-runtime from 0.5.11670 to 0.5.11672 (#36114) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0a22db986af..9483a06d227 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -151,7 +151,7 @@ GEM rack-protection (= 4.1.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11670) + sorbet-runtime (0.5.11672) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From f8ea979dadcb353b34cc1f96ac59ffbcffadd130 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:35:16 +0100 Subject: [PATCH 038/169] build(deps): bump nokogiri from 1.16.7 to 1.16.8 (#36115) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index e3070db77ee..9639bc53084 100644 --- a/Gemfile +++ b/Gemfile @@ -24,7 +24,7 @@ group :jekyll_plugins do end gem 'sinatra', '4.1.1' -gem 'nokogiri', '1.16.7' +gem 'nokogiri', '1.16.8' # 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 9483a06d227..157d1343003 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -81,9 +81,9 @@ GEM multi_json (1.15.0) mustermann (3.0.3) ruby2_keywords (~> 0.0.1) - nokogiri (1.16.7-arm64-darwin) + nokogiri (1.16.8-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.7-x86_64-linux) + nokogiri (1.16.8-x86_64-linux) racc (~> 1.4) parallel (1.26.3) parser (3.3.6.0) @@ -174,7 +174,7 @@ DEPENDENCIES jekyll-paginate (= 1.1.0) jekyll-sitemap (= 1.4.0) jekyll-toc (= 0.19.0) - nokogiri (= 1.16.7) + nokogiri (= 1.16.8) rackup (= 2.2.1) rake (= 13.2.1) rubocop (= 1.69.0) From aac9076de0b7be601fbfd491253184c8f1f87f37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:35:28 +0100 Subject: [PATCH 039/169] build(deps): bump logger from 1.6.1 to 1.6.2 (#36116) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 157d1343003..55a4d7952ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - logger (1.6.1) + logger (1.6.2) mercenary (0.4.0) multi_json (1.15.0) mustermann (3.0.3) From 55606500a6e8c8376919644aefdcc487cfbea853 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:35:38 +0100 Subject: [PATCH 040/169] build(deps-dev): bump sass-embedded from 1.81.0 to 1.81.1 (#36117) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 9639bc53084..7bf2caa0544 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ group :development do gem 'stringex', '2.8.6' # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' - gem 'sass-embedded', '1.81.0' + gem 'sass-embedded', '1.81.1' gem 'rubocop', '1.69.0' gem 'ruby-lsp', '0.22.1' gem 'rackup', '2.2.1' diff --git a/Gemfile.lock b/Gemfile.lock index 55a4d7952ba..50a52d01d32 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -134,9 +134,9 @@ GEM ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.81.0-arm64-darwin) + sass-embedded (1.81.1-arm64-darwin) google-protobuf (~> 4.28) - sass-embedded (1.81.0-x86_64-linux-gnu) + sass-embedded (1.81.1-x86_64-linux-gnu) google-protobuf (~> 4.28) sass-globbing (1.1.5) sass (>= 3.1) @@ -179,7 +179,7 @@ DEPENDENCIES rake (= 13.2.1) rubocop (= 1.69.0) ruby-lsp (= 0.22.1) - sass-embedded (= 1.81.0) + sass-embedded (= 1.81.1) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 4.1.1) From 4e1f62d90ac9a800535498f24058081975c1ba10 Mon Sep 17 00:00:00 2001 From: robji Date: Tue, 3 Dec 2024 04:36:54 -0800 Subject: [PATCH 041/169] Update samsungtv.markdown (#36112) --- source/_integrations/samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 0603b7fe1f7..252f4129924 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -157,6 +157,7 @@ KEY_LEFT|NavigationLeft KEY_RIGHT|NavigationRight KEY_RETURN|NavigationReturn/Back KEY_ENTER|NavigationEnter +KEY_EXIT|NavigationExit ____________ **Media Keys** From c2086b6cd209ba2167c7913c33bde5f90ed1d772 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Mon, 2 Dec 2024 14:09:58 +0100 Subject: [PATCH 042/169] Remove Spotify sensors (#36099) --- source/_integrations/spotify.markdown | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index aceba7e21ee..3c928749ef0 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -14,7 +14,6 @@ ha_zeroconf: true ha_platforms: - diagnostics - media_player - - sensor ha_integration_type: service --- @@ -153,19 +152,3 @@ The `media_content_id` value can be obtained from the Spotify desktop app by cli ## Unsupported devices - **Sonos**: Although Sonos is a Spotify Connect device, it is not supported by the official Spotify API. - -## Sensors - -Spotify provides sensors that display information about the song that is currently being played. The following sensors are available: - -- **Song acousticness**: Indicates how much the sound is free from electronic modification. 100% indicates it not electronically modified. -- **Song danceability**. In percent. Describes how suitable a track is for dancing based on a combination of musical elements including tempo, rhythm stability, beat strength, and overall regularity. The higher the value, the more danceable. -- **Song energy**. In percent. A measure of intensity and activity. Typically, energetic tracks feel fast, loud, and noisy. For example, death metal has high energy, while a Bach prelude scores low on the scale. Perceptual features contributing to this attribute include dynamic range, perceived loudness, timbre, onset rate, and general entropy. A higher number means more energetic. -- **Song instrumentalness**: In percent. Describes whether a track contains no vocals. “Ooh” and “aah” sounds are treated as instrumental in this context. Rap or spoken word tracks are clearly “vocal”. The higher the value the more instrumental the song is. -- **Song key**: The estimated overall key of the track. If no key was detected, the value is unknown. For example, C sharp or E flat. -- **Song liveness**: In percent. Describes the presence of an audience in the recording. Higher liveness values represent an increased probability that the track was performed live. -- **Song mode**: The modality (major or minor) of a song. -- **Song speechiness**: In percent. Describes the presence of spoken words in a song. The more exclusively speech-like the recording (for example, talk show, audio book, poetry), the higher the value. -- **Song tempo**: The speed of the piece of music that is currently playing, in beats per minute (bpm). -- **Song time signature**: The time signature (meter) is a notational convention to specify how many beats are in each bar (or measure). For example: 4/4, 6/8. -- **Song valence**. In percent. Tracks with high valence sound more positive (happy, cheerful, euphoric), while tracks with low valence sound more negative (sad, depressed, angry). From fa259e3dca04aec7ebf7fe1031dce4e006c35656 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 Dec 2024 18:41:18 +0100 Subject: [PATCH 043/169] 2024.12: Fix nasweb version --- source/_integrations/nasweb.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/nasweb.markdown b/source/_integrations/nasweb.markdown index 3aec35dffc7..3b3c9f01bed 100644 --- a/source/_integrations/nasweb.markdown +++ b/source/_integrations/nasweb.markdown @@ -3,7 +3,7 @@ title: NASweb description: Integrate NASweb devices ha_category: - Switch -ha_release: '2024.11' +ha_release: '2024.12' ha_codeowners: - '@nasWebio' ha_iot_class: Local Push From 4ad93534821439fe4fce071eaf65db24e1244414 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 Dec 2024 19:01:02 +0100 Subject: [PATCH 044/169] 2024.12: Update dev blogs --- source/_posts/2024-12-04-release-202412.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_posts/2024-12-04-release-202412.markdown b/source/_posts/2024-12-04-release-202412.markdown index 59f32b0c10f..f3e37b83c7b 100644 --- a/source/_posts/2024-12-04-release-202412.markdown +++ b/source/_posts/2024-12-04-release-202412.markdown @@ -553,9 +553,11 @@ If you are a custom integration developer and want to learn about 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: +- [Camera API changes](https://developers.home-assistant.io/blog/2024/11/26/camera-deprecations) - [Integration quality scale](https://developers.home-assistant.io/blog/2024/11/20/integration-quality-scale) - [New options flow properties](https://developers.home-assistant.io/blog/2024/11/12/options-flow/) - [Translating units of measurement](https://developers.home-assistant.io/blog/2024/11/21/unit-of-measurement-translations) +- [Utility function homeassistant.util.dt.utc_to_timestamp is deprecated](https://developers.home-assistant.io/blog/2024/11/28/dt-util-utc-to-timestamp-deprecation/) [devblog]: https://developers.home-assistant.io/blog/ From d34a6f3a7840b684fd52cc57ce0e3817569d1527 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 Dec 2024 19:01:17 +0100 Subject: [PATCH 045/169] 2024.12: Update changelog --- source/changelogs/core-2024.12.markdown | 172 ++++++++++++++++++++++++ 1 file changed, 172 insertions(+) diff --git a/source/changelogs/core-2024.12.markdown b/source/changelogs/core-2024.12.markdown index 4651543b8de..717a8dcf982 100644 --- a/source/changelogs/core-2024.12.markdown +++ b/source/changelogs/core-2024.12.markdown @@ -746,6 +746,87 @@ For a summary in a more readable format: - Do not double expose scripts in LLM tools ([@balloob] - [#131726]) - Update hash regex for frontend file in tests ([@piitaya] - [#131742]) - Create MQTT device referenced by via device ([@jbouwh] - [#131588]) +- Add quality scale hassfest check for config-entry-unload ([@epenet] - [#131720]) +- Add missing data_description for lamarzocco OptionsFlow ([@zweckj] - [#131708]) +- Bump music assistant client 1.0.8 ([@marcelveldt] - [#131739]) +- Add a missing rainbird data description ([@allenporter] - [#131740]) +- Bump aiohttp to 3.11.8 ([@bdraco] - [#131744]) +- Bump orjson to 3.10.12 ([@bdraco] - [#131752]) +- Remove Spotify audio feature sensors ([@joostlek] - [#131754]) +- Bump uiprotect to 6.6.3 ([@bdraco] - [#131764]) +- Bump pylamarzocco to 1.2.12 ([@zweckj] - [#131765]) +- Fix rounding of attributes in Habitica integration ([@tr4nt0r] - [#131772]) +- Bump aioesphomeapi to 27.0.3 ([@bdraco] - [#131773]) +- Bump ZHA to 0.0.41 ([@puddly] - [#131776]) +- Fix Home Connect microwave programs ([@TheJulianJES] - [#131782]) +- Bump bimmer_connected to 0.17.0 ([@rikroe] - [#131352]) +- Improve recorder history queries ([@emontnemery] - [#131702]) +- Remove Spotify featured playlists and categories from media browser ([@joostlek] - [#131758]) +- Bump samsungtvws to 2.7.1 ([@epenet] - [#131784]) +- Ensure custom integrations are assigned the custom IQS scale ([@frenck] - [#131795]) +- Remove wrong plural "s" in 'todo.remove_item' action ([@NoRi2909] - [#131814]) +- Fix more flaky translation checks ([@epenet] - [#131824]) +- Bump spotifyaio to 0.8.10 ([@joostlek] - [#131827]) +- Make wake word selection part of configuration ([@joostlek] - [#131832]) +- Allow empty trigger sentence responses in conversations ([@mib1185] - [#131849]) +- Bump pyatv to 0.16.0 ([@joostlek] - [#131852]) +- Update frontend to 20241127.1 ([@bramkragten] - [#131855]) +- Bump PyMetEireann to 2024.11.0 ([@varadhodiyil] - [#131860]) +- Only download translation strings we have defined ([@joostlek] - [#131864]) +- Fix flaky test in history stats ([@karwosts] - [#131869]) +- Add captcha to BMW ConfigFlow ([@rikroe] - [#131351]) +- Bump SQLAlchemy to 2.0.36 ([@bdraco] - [#126683]) +- Fix modbus state not dumped on restart ([@VandeurenGlenn] - [#131319]) +- Fix history stats count update immediately after change ([@karwosts] - [#131856]) +- Guard against hostname change in lamarzocco discovery ([@zweckj] - [#131873]) +- Bump denonavr to v1.0.1 ([@ol-iver] - [#131882]) +- Bump aioacaia to 0.1.10 ([@zweckj] - [#131906]) +- Fix media player join action for Music Assistant integration ([@marcelveldt] - [#131910]) +- Bump aiohomekit to 3.2.7 ([@Jc2k] - [#131924]) +- Bump uiprotect to 6.6.4 ([@RaHehl] - [#131931]) +- Fix KNX IP Secure tunnelling endpoint selection with keyfile ([@farmio] - [#131941]) +- Bump aiomealie to 0.9.4 ([@andrew-codechimp] - [#131951]) +- Bump reolink_aio to 0.11.4 ([@starkillerOG] - [#131957]) +- Strip trailing spaces from HomeKit names ([@bdraco] - [#131971]) +- Reduce precision loss when converting HomeKit temperature ([@bdraco] - [#131973]) +- Bugfix for Plugwise, small code optimization ([@bouwew] - [#131990]) +- Freeze integration setup timeout for recorder during non-live data migration ([@emontnemery] - [#131998]) +- Bump bimmer_connected to 0.17.2 ([@rikroe] - [#132005]) +- Bump propcache to 0.2.1 ([@bdraco] - [#132022]) +- Bump yarl to 1.18.3 ([@bdraco] - [#132025]) +- Bump yt-dlp to 2024.11.18 ([@joostlek] - [#132026]) +- Bump spotifyaio to 0.8.11 ([@joostlek] - [#132032]) +- Handle not found playlists in Spotify ([@joostlek] - [#132033]) +- Bump aiohttp to 3.11.9 ([@bdraco] - [#132036]) +- Bump psymlight v0.1.4 ([@tl-sl] - [#132045]) +- Bump refoss to v1.2.5 ([@ashionky] - [#132051]) +- Use format_mac correctly for acaia ([@zweckj] - [#132062]) +- Add support for features changing at runtime in Matter integration ([@marcelveldt] - [#129426]) +- Update buienradar sensors only after being added to HA ([@abmantis] - [#131830]) +- Add translated native unit of measurement - squeezebox ([@andrew-codechimp] - [#131912]) +- Add translated native unit of measurement - Transmission ([@andrew-codechimp] - [#131913]) +- Add translated native unit of measurement - PiHole ([@andrew-codechimp] - [#131915]) +- Add translated native unit of measurement - QBitTorrent ([@andrew-codechimp] - [#131918]) +- Catch InverterReturnedError in APSystems ([@Thomas55555] - [#131930]) +- Fix Reolink dispatcher ID for onvif fallback ([@starkillerOG] - [#131953]) +- Instantiate new httpx client for lamarzocco ([@zweckj] - [#132016]) +- Add translated native unit of measurement to Jellyfin ([@jrieger] - [#132055]) +- Bump pyezviz to 0.2.2.3 ([@srescio] - [#132060]) +- Set connections on device for acaia ([@zweckj] - [#132064]) +- Round status light brightness number in HomeWizard ([@DCSBL] - [#132069]) +- Mark trend sensor unavailable when source entity is unknown/unavailable ([@jpbede] - [#132080]) +- Fix imap sensor in case of alternative empty search response ([@jbouwh] - [#132081]) +- Bump hassil and intents ([@synesthesiam] - [#132092]) +- Use translations on NumberEntity unit_of_measurement property ([@abmantis] - [#132095]) +- Bump PyJWT to 2.10.1 ([@bdraco] - [#132100]) +- Update frontend to 20241127.2 ([@bramkragten] - [#132109]) +- Bump unifi_ap to 0.0.2 ([@tofuSCHNITZEL] - [#132125]) +- Fix bad hassil tests on CI ([@balloob] - [#132132]) +- Improve error logging for unifi-ap ([@tofuSCHNITZEL] - [#132141]) +- Bump uiprotect to 6.6.5 ([@RaHehl] - [#132147]) +- Bump pytouchlinesl to 0.3.0 ([@jnsgruk] - [#132157]) +- Pin rpds-py to 0.21.0 to fix CI ([@epenet] - [#132170]) +- Update frontend to 20241127.3 ([@bramkragten] - [#132176]) [#113438]: https://github.com/home-assistant/core/pull/113438 [#120357]: https://github.com/home-assistant/core/pull/120357 @@ -762,6 +843,7 @@ For a summary in a more readable format: [#126294]: https://github.com/home-assistant/core/pull/126294 [#126393]: https://github.com/home-assistant/core/pull/126393 [#126470]: https://github.com/home-assistant/core/pull/126470 +[#126683]: https://github.com/home-assistant/core/pull/126683 [#126768]: https://github.com/home-assistant/core/pull/126768 [#127007]: https://github.com/home-assistant/core/pull/127007 [#127103]: https://github.com/home-assistant/core/pull/127103 @@ -796,6 +878,7 @@ For a summary in a more readable format: [#129421]: https://github.com/home-assistant/core/pull/129421 [#129424]: https://github.com/home-assistant/core/pull/129424 [#129425]: https://github.com/home-assistant/core/pull/129425 +[#129426]: https://github.com/home-assistant/core/pull/129426 [#129427]: https://github.com/home-assistant/core/pull/129427 [#129442]: https://github.com/home-assistant/core/pull/129442 [#129450]: https://github.com/home-assistant/core/pull/129450 @@ -1327,6 +1410,7 @@ For a summary in a more readable format: [#131313]: https://github.com/home-assistant/core/pull/131313 [#131315]: https://github.com/home-assistant/core/pull/131315 [#131316]: https://github.com/home-assistant/core/pull/131316 +[#131319]: https://github.com/home-assistant/core/pull/131319 [#131324]: https://github.com/home-assistant/core/pull/131324 [#131331]: https://github.com/home-assistant/core/pull/131331 [#131332]: https://github.com/home-assistant/core/pull/131332 @@ -1335,6 +1419,8 @@ For a summary in a more readable format: [#131343]: https://github.com/home-assistant/core/pull/131343 [#131345]: https://github.com/home-assistant/core/pull/131345 [#131346]: https://github.com/home-assistant/core/pull/131346 +[#131351]: https://github.com/home-assistant/core/pull/131351 +[#131352]: https://github.com/home-assistant/core/pull/131352 [#131356]: https://github.com/home-assistant/core/pull/131356 [#131366]: https://github.com/home-assistant/core/pull/131366 [#131368]: https://github.com/home-assistant/core/pull/131368 @@ -1474,15 +1560,91 @@ For a summary in a more readable format: [#131690]: https://github.com/home-assistant/core/pull/131690 [#131691]: https://github.com/home-assistant/core/pull/131691 [#131701]: https://github.com/home-assistant/core/pull/131701 +[#131702]: https://github.com/home-assistant/core/pull/131702 +[#131708]: https://github.com/home-assistant/core/pull/131708 [#131714]: https://github.com/home-assistant/core/pull/131714 [#131719]: https://github.com/home-assistant/core/pull/131719 +[#131720]: https://github.com/home-assistant/core/pull/131720 [#131722]: https://github.com/home-assistant/core/pull/131722 [#131724]: https://github.com/home-assistant/core/pull/131724 [#131725]: https://github.com/home-assistant/core/pull/131725 [#131726]: https://github.com/home-assistant/core/pull/131726 [#131727]: https://github.com/home-assistant/core/pull/131727 [#131736]: https://github.com/home-assistant/core/pull/131736 +[#131739]: https://github.com/home-assistant/core/pull/131739 +[#131740]: https://github.com/home-assistant/core/pull/131740 [#131742]: https://github.com/home-assistant/core/pull/131742 +[#131744]: https://github.com/home-assistant/core/pull/131744 +[#131752]: https://github.com/home-assistant/core/pull/131752 +[#131754]: https://github.com/home-assistant/core/pull/131754 +[#131758]: https://github.com/home-assistant/core/pull/131758 +[#131764]: https://github.com/home-assistant/core/pull/131764 +[#131765]: https://github.com/home-assistant/core/pull/131765 +[#131772]: https://github.com/home-assistant/core/pull/131772 +[#131773]: https://github.com/home-assistant/core/pull/131773 +[#131776]: https://github.com/home-assistant/core/pull/131776 +[#131782]: https://github.com/home-assistant/core/pull/131782 +[#131784]: https://github.com/home-assistant/core/pull/131784 +[#131795]: https://github.com/home-assistant/core/pull/131795 +[#131814]: https://github.com/home-assistant/core/pull/131814 +[#131824]: https://github.com/home-assistant/core/pull/131824 +[#131827]: https://github.com/home-assistant/core/pull/131827 +[#131830]: https://github.com/home-assistant/core/pull/131830 +[#131832]: https://github.com/home-assistant/core/pull/131832 +[#131849]: https://github.com/home-assistant/core/pull/131849 +[#131852]: https://github.com/home-assistant/core/pull/131852 +[#131855]: https://github.com/home-assistant/core/pull/131855 +[#131856]: https://github.com/home-assistant/core/pull/131856 +[#131860]: https://github.com/home-assistant/core/pull/131860 +[#131864]: https://github.com/home-assistant/core/pull/131864 +[#131869]: https://github.com/home-assistant/core/pull/131869 +[#131873]: https://github.com/home-assistant/core/pull/131873 +[#131882]: https://github.com/home-assistant/core/pull/131882 +[#131906]: https://github.com/home-assistant/core/pull/131906 +[#131910]: https://github.com/home-assistant/core/pull/131910 +[#131912]: https://github.com/home-assistant/core/pull/131912 +[#131913]: https://github.com/home-assistant/core/pull/131913 +[#131915]: https://github.com/home-assistant/core/pull/131915 +[#131918]: https://github.com/home-assistant/core/pull/131918 +[#131924]: https://github.com/home-assistant/core/pull/131924 +[#131930]: https://github.com/home-assistant/core/pull/131930 +[#131931]: https://github.com/home-assistant/core/pull/131931 +[#131941]: https://github.com/home-assistant/core/pull/131941 +[#131951]: https://github.com/home-assistant/core/pull/131951 +[#131953]: https://github.com/home-assistant/core/pull/131953 +[#131957]: https://github.com/home-assistant/core/pull/131957 +[#131971]: https://github.com/home-assistant/core/pull/131971 +[#131973]: https://github.com/home-assistant/core/pull/131973 +[#131990]: https://github.com/home-assistant/core/pull/131990 +[#131998]: https://github.com/home-assistant/core/pull/131998 +[#132005]: https://github.com/home-assistant/core/pull/132005 +[#132016]: https://github.com/home-assistant/core/pull/132016 +[#132022]: https://github.com/home-assistant/core/pull/132022 +[#132025]: https://github.com/home-assistant/core/pull/132025 +[#132026]: https://github.com/home-assistant/core/pull/132026 +[#132032]: https://github.com/home-assistant/core/pull/132032 +[#132033]: https://github.com/home-assistant/core/pull/132033 +[#132036]: https://github.com/home-assistant/core/pull/132036 +[#132045]: https://github.com/home-assistant/core/pull/132045 +[#132051]: https://github.com/home-assistant/core/pull/132051 +[#132055]: https://github.com/home-assistant/core/pull/132055 +[#132060]: https://github.com/home-assistant/core/pull/132060 +[#132062]: https://github.com/home-assistant/core/pull/132062 +[#132064]: https://github.com/home-assistant/core/pull/132064 +[#132069]: https://github.com/home-assistant/core/pull/132069 +[#132080]: https://github.com/home-assistant/core/pull/132080 +[#132081]: https://github.com/home-assistant/core/pull/132081 +[#132092]: https://github.com/home-assistant/core/pull/132092 +[#132095]: https://github.com/home-assistant/core/pull/132095 +[#132100]: https://github.com/home-assistant/core/pull/132100 +[#132109]: https://github.com/home-assistant/core/pull/132109 +[#132125]: https://github.com/home-assistant/core/pull/132125 +[#132132]: https://github.com/home-assistant/core/pull/132132 +[#132141]: https://github.com/home-assistant/core/pull/132141 +[#132147]: https://github.com/home-assistant/core/pull/132147 +[#132157]: https://github.com/home-assistant/core/pull/132157 +[#132170]: https://github.com/home-assistant/core/pull/132170 +[#132176]: https://github.com/home-assistant/core/pull/132176 [#98118]: https://github.com/home-assistant/core/pull/98118 [@ALERTua]: https://github.com/ALERTua [@Anonym-tsk]: https://github.com/Anonym-tsk @@ -1496,6 +1658,7 @@ For a summary in a more readable format: [@EuleMitKeule]: https://github.com/EuleMitKeule [@FedDam]: https://github.com/FedDam [@JakeMartin-ICL]: https://github.com/JakeMartin-ICL +[@Jc2k]: https://github.com/Jc2k [@Khabi]: https://github.com/Khabi [@LG-ThinQ-Integration]: https://github.com/LG-ThinQ-Integration [@Lash-L]: https://github.com/Lash-L @@ -1518,12 +1681,14 @@ For a summary in a more readable format: [@Shutgun]: https://github.com/Shutgun [@TheJulianJES]: https://github.com/TheJulianJES [@Thomas55555]: https://github.com/Thomas55555 +[@VandeurenGlenn]: https://github.com/VandeurenGlenn [@YogevBokobza]: https://github.com/YogevBokobza [@abmantis]: https://github.com/abmantis [@alengwenus]: https://github.com/alengwenus [@alexandrecuer]: https://github.com/alexandrecuer [@allenporter]: https://github.com/allenporter [@andrew-codechimp]: https://github.com/andrew-codechimp +[@ashionky]: https://github.com/ashionky [@autinerd]: https://github.com/autinerd [@avee87]: https://github.com/avee87 [@balloob]: https://github.com/balloob @@ -1570,6 +1735,7 @@ For a summary in a more readable format: [@joostlek]: https://github.com/joostlek [@jozefKruszynski]: https://github.com/jozefKruszynski [@jpbede]: https://github.com/jpbede +[@jrieger]: https://github.com/jrieger [@jschlyter]: https://github.com/jschlyter [@jwillemsen]: https://github.com/jwillemsen [@karlbeecken]: https://github.com/karlbeecken @@ -1599,6 +1765,7 @@ For a summary in a more readable format: [@nasWebio]: https://github.com/nasWebio [@noahhusby]: https://github.com/noahhusby [@nromyn]: https://github.com/nromyn +[@ol-iver]: https://github.com/ol-iver [@oltdaniel]: https://github.com/oltdaniel [@peroo]: https://github.com/peroo [@piitaya]: https://github.com/piitaya @@ -1606,16 +1773,21 @@ For a summary in a more readable format: [@puddly]: https://github.com/puddly [@rappenze]: https://github.com/rappenze [@reey]: https://github.com/reey +[@rikroe]: https://github.com/rikroe [@rytilahti]: https://github.com/rytilahti [@scop]: https://github.com/scop [@sdb9696]: https://github.com/sdb9696 [@silamon]: https://github.com/silamon [@squishykid]: https://github.com/squishykid +[@srescio]: https://github.com/srescio [@starkillerOG]: https://github.com/starkillerOG [@synesthesiam]: https://github.com/synesthesiam [@tdfountain]: https://github.com/tdfountain [@tetienne]: https://github.com/tetienne [@thecode]: https://github.com/thecode +[@tl-sl]: https://github.com/tl-sl +[@tofuSCHNITZEL]: https://github.com/tofuSCHNITZEL [@tr4nt0r]: https://github.com/tr4nt0r [@tsvi]: https://github.com/tsvi +[@varadhodiyil]: https://github.com/varadhodiyil [@zweckj]: https://github.com/zweckj From fc815e95d9d7e65a106583a6d9861e6f30f0612b Mon Sep 17 00:00:00 2001 From: Madelena Mak Date: Tue, 3 Dec 2024 13:09:51 -0500 Subject: [PATCH 046/169] Fancy homepage (#35945) --- sass/homeassistant/_overrides.scss | 252 ++++++++++++-- sass/homeassistant/homepage/_features.scss | 69 +++- sass/homeassistant/homepage/_hero_unit.scss | 239 ++++++++++--- source/_includes/custom/features.html | 79 +++++ source/_includes/custom/getting-started.html | 52 +++ source/_includes/custom/news.html | 170 +++++++++ source/_includes/custom/press.html | 101 ++++++ source/_includes/custom/welcome.html | 49 ++- source/_includes/site/hero_unit.html | 23 +- source/connectzbt1/index.html | 2 +- source/green/index.html | 2 +- .../frontpage/feature-githubnnumberone.jpg | Bin 0 -> 62362 bytes source/images/frontpage/feature-sotoh2024.jpg | Bin 0 -> 65045 bytes source/images/frontpage/feature-voice.jpg | Bin 0 -> 46602 bytes source/images/frontpage/feature-zbt1.jpg | Bin 0 -> 25305 bytes source/images/frontpage/green-frontpage.jpg | Bin 0 -> 31088 bytes source/images/frontpage/ha-green.png | Bin 0 -> 258153 bytes source/images/frontpage/ha-yellow.png | Bin 0 -> 319046 bytes source/images/frontpage/hero-github-logo.svg | 23 ++ .../hero-socialproof-arstechnica.svg | 33 ++ .../frontpage/hero-socialproof-theverge.svg | 10 + source/images/frontpage/hero-trophy.svg | 6 + source/images/frontpage/hero_screenshot.png | Bin 0 -> 164802 bytes source/images/frontpage/raspberry-pi.png | Bin 0 -> 270085 bytes source/images/frontpage/yellow-frontpage.jpg | Bin 60337 -> 37529 bytes source/images/hero_screenshot.png | Bin 18012 -> 0 bytes source/index.html | 323 +----------------- 27 files changed, 989 insertions(+), 444 deletions(-) create mode 100644 source/_includes/custom/getting-started.html create mode 100644 source/_includes/custom/news.html create mode 100644 source/_includes/custom/press.html create mode 100644 source/images/frontpage/feature-githubnnumberone.jpg create mode 100644 source/images/frontpage/feature-sotoh2024.jpg create mode 100644 source/images/frontpage/feature-voice.jpg create mode 100644 source/images/frontpage/feature-zbt1.jpg create mode 100644 source/images/frontpage/green-frontpage.jpg create mode 100644 source/images/frontpage/ha-green.png create mode 100644 source/images/frontpage/ha-yellow.png create mode 100644 source/images/frontpage/hero-github-logo.svg create mode 100644 source/images/frontpage/hero-socialproof-arstechnica.svg create mode 100644 source/images/frontpage/hero-socialproof-theverge.svg create mode 100644 source/images/frontpage/hero-trophy.svg create mode 100644 source/images/frontpage/hero_screenshot.png create mode 100644 source/images/frontpage/raspberry-pi.png delete mode 100644 source/images/hero_screenshot.png diff --git a/sass/homeassistant/_overrides.scss b/sass/homeassistant/_overrides.scss index a186fb45e2e..d7ecf1f4585 100644 --- a/sass/homeassistant/_overrides.scss +++ b/sass/homeassistant/_overrides.scss @@ -444,16 +444,21 @@ header .breadcrumbs { h1 { font-family: $heading-font; -webkit-font-smoothing: antialiased; - font-size: 1.33rem; + font-size: 1.3125rem; font-weight: 600; letter-spacing: -0.012em; line-height: 40px; color: #212121; margin: -8px 0 0; + + iconify-icon { + margin-right: 8px; + } } &.text { padding: 24px; + font-size: 1rem; h1 { padding: 0px 0px 12px; @@ -517,7 +522,7 @@ a.material-card:hover { .img { background-color: $grayLighter; width: calc(100%-8px); - aspect-ratio: 120/63; + // aspect-ratio: 120/63; background-size: cover; background-position: center; border-radius: 8px; @@ -656,21 +661,34 @@ a.material-card:hover { .blog-date { white-space: nowrap; } + ol { + margin: 0; + } } .highlight-blog-post { - font-size: 2rem; - line-height: 1.15; - padding: 15px; - display: block; + padding: 24px; text-decoration: none; color: white; - transition: background-color 0.5s; - background-color: #038fc7; + transition: background-color 0.5s, box-shadow 0.5s; + background-color: $primary-color; + display: flex; + padding: 20px 12px 20px 24px; + align-items: center; + gap: 10px; + align-self: stretch; + + p { + font-size: 1rem; + margin: 10px 0 0 0; - &.large { - font-size: 2.25rem; - line-height: 1.33333; + &.lead { + font-family: $heading-font; + font-size: 1.5rem; + font-weight: 700; + line-height: 1.15; + margin-top: 0; + } } &:hover { @@ -682,6 +700,71 @@ a.material-card:hover { } } + .highlight-detail-post { + padding: 24px; + text-decoration: none; + color: white; + transition: background-color 0.5s, box-shadow 0.5s; + background-color: #006895; + box-shadow: inset 0 0 64px #038fc7; + font-size: 1.5rem; + + .caption { + padding-bottom: 24px; + + p { + font-family: $heading-font; + font-size: 1.25rem; + font-weight: 600; + margin: 0; + line-height: 1.2; + + strong { + font-size: 1.75rem; + font-weight: 800; + } + } + } + + .detail-feature { + display: flex; + align-items: flex-start; + gap: 16px; + align-self: stretch; + + p { + font-size: 0.875rem; + + &.lead { + font-size: 1rem; + margin-bottom: 4px; + font-weight: 500; + } + } + + iconify-icon { + padding: 8px; + border-radius: 50%; + background: rgba(0, 0, 0, 0.15); + color: white; + } + + } + animation-name: box-shadow-color; + animation-duration: 5s; + animation-iteration-count: infinite; + animation-direction: alternate; + + @keyframes box-shadow-color { + from { + box-shadow: inset 0 0 64px hsl(197, 97%, 40%); + } + to { + box-shadow: inset 0 0 64px hsl(159, 100%, 35%); + } + } + } + .events { padding: 16px; @@ -726,15 +809,16 @@ a.material-card:hover { .picture-promo { display: block; - padding-top: 30%; + padding-top: 33%; background-size: cover; background-position: center; text-decoration: none; border: none; .caption { - padding: 8px 12px 12px; - background-color: rgba(0, 0, 0, 0.54); + padding: 48px 24px 24px 24px; + background: rgb(0,0,0); + background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); color: white; border-bottom-left-radius: 16px; border-bottom-right-radius: 16px; @@ -743,16 +827,19 @@ a.material-card:hover { align-items: center; .title { - font-size: 20px; - font-weight: 400; - line-height: 1.2em; + font-family: $heading-font; + font-size: 1.5rem; + font-weight: 700; + line-height: normal; } .subtitle { - margin-top: 4px; - line-height: 1.4em; - font-size: 12px; + margin-top: 8px; + line-height: 1.5rem; + font-size: 1rem; font-weight: initial; + text-shadow: 0px 4px 16px rgba(0, 0, 0, 0.33); + opacity: .8; } svg { @@ -762,6 +849,21 @@ a.material-card:hover { min-width: 32px; } } + + &.picture-top { + padding-top: 0; + padding-bottom: 33%; + + .caption { + padding: 24px 24px 48px 24px; + background: rgb(0,0,0); + background: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); + border-top-left-radius: 16px; + border-top-right-radius: 16px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + } } .supported-brands { @@ -781,8 +883,101 @@ a.material-card:hover { } } + .getting-started { + text-align: center; + + .badge { + display: flex; + padding: 2px 8px 2px 8px; + align-items: flex-start; + gap: 8px; + border-radius: 4px; + background: #E8E6F0; + font-family: $heading-font; + font-size: 1rem; + font-weight: 700; + text-transform: uppercase; + } + + .getting-started-grid { + display: flex; + padding: 48px 0 48px 24px; + align-items: flex-start; + gap: 24px; + } + + .getting-started-device { + .content { + display: flex; + flex-direction: column; + align-items: center; + gap: 16px; + + img { + box-shadow: none; + border: 0; + } + + h3 { + font-size: 2rem; + font-weight: 700; + line-height: 133%; + text-transform: none; + letter-spacing: -.75px; + margin: 0; + } + + p { + font-size: 1rem; + line-height: 1.5; + opacity: .9; + margin: 0; + } + } + + .button { + padding: 6px 20px; + background: $primary-color; + color: white; + font-size: 1rem; + text-transform: uppercase; + } + } + + #HA_Yellow, #Raspberry_Pi { + padding-top: 96px; + } + + #HA_Yellow .badge { + color: $orange; + } + #HA_Green .badge { + color: $green; + } + #Raspberry_Pi .badge { + color: $primary-color; + } + + @media only screen and (max-width: $palm-end) { + .getting-started-grid { + flex-direction: column; + } + + .getting-started-device { + padding-bottom: 64px; + } + + #HA_Yellow, #Raspberry_Pi { + padding-top: 0; + order: 2; + } + } + } + + .sponsors-and-press { margin-top: 24px; + text-align: center; } .seen-press { @@ -791,12 +986,6 @@ a.material-card:hover { gap: 24px; margin: 48px 0; - h2 { - grid-column: 1/-1; - margin: 0; - text-align: center; - } - a { aspect-ratio: 1; } @@ -913,17 +1102,6 @@ dt:hover a.title-link { } } -.hero-buttons { - margin-bottom: 0; -} - -.hero-buttons a { - margin: 0 30px 10px 0; - - &:last-child { - margin: 0; - } -} // Article formatting diff --git a/sass/homeassistant/homepage/_features.scss b/sass/homeassistant/homepage/_features.scss index bc8e51dfbcc..d1f89e4a0c8 100644 --- a/sass/homeassistant/homepage/_features.scss +++ b/sass/homeassistant/homepage/_features.scss @@ -1,50 +1,85 @@ .feature-cards { display: grid; letter-spacing: normal; - grid-template-columns: repeat(2, 1fr); - gap: 32px; + grid-template-columns: repeat(3, 1fr); + gap: 24px; margin: auto; .card { - border-radius: 8px; + border-radius: 24px; + background: white; + padding: 24px; display: inline-block; - width: calc(100% - 16px); vertical-align: top; .card-header { - font-size: 1.4rem; - line-height: 1.6; + font-family: $heading-font; + font-size: 1.3125rem; + line-height: 1.625rem; display: flex; - align-items: center; - padding-bottom: 8px; - height: 62px; + flex-direction: column; + padding-bottom: 16px; + color: $primary-color; + font-weight: 600; iconify-icon { font-size: 2.5rem; margin-right: 8px; + border-radius: 64px; + background: var(--Light-primary-container, #CCEFFE); + align-self: flex-start; + padding: 16px; + margin-bottom: 12px; + color: rgba(0, 127, 168, 1); } } .card-content { padding-bottom: 24px; + font-size: 1rem; - p:last-of-type, - ul { - margin-bottom: 32px; + p { + margin-bottom: 12px; + } + p:last-of-type { + margin-bottom: 24px; + } + + .button { + float: right; + font-size: 1rem; + padding: 8px 16px; } } } } .sub-title { - letter-spacing: normal; - font-weight: bold; - font-size: 42px; - line-height: 49px; - margin: 32px; + font-family: $heading-font; + font-size: 6rem; + font-weight: 800; + line-height: normal; + letter-spacing: -1.92px; + margin: 96px 0 24px !important; text-align: center; } +.sub-title + p { + margin: -24px 0 48px 0; +} + +@media only screen and (max-width: $lap-end) { + .feature-cards { + grid-template-columns: repeat(2, 1fr); + } + + .sub-title { + font-size: 4rem; + line-height: 1.1 !important; + margin-bottom: 32px !important; + } +} + @media only screen and (max-width: $palm-end) { .feature-cards { width: 95%; diff --git a/sass/homeassistant/homepage/_hero_unit.scss b/sass/homeassistant/homepage/_hero_unit.scss index e288652a7c6..45cf9b4a780 100644 --- a/sass/homeassistant/homepage/_hero_unit.scss +++ b/sass/homeassistant/homepage/_hero_unit.scss @@ -4,10 +4,10 @@ .hero { position: relative; background: rgb(24,188,242); - background: linear-gradient(0deg, hsl(195, 89%, 52%) 0%, hsla(195, 89%, 52%, 0.8) 100%); + background: linear-gradient(340deg, hsl(200deg, 100%, 50%) 0%, hsl(195deg, 100%, 50%) 50%, hsl(185deg, 100%, 50%) 100%); padding-bottom: 0; margin-top: -88px; - margin-bottom: 24px; + margin-bottom: 48px; padding-top: 88px; overflow: hidden; border-bottom: 1px solid rgba(0, 0, 0, 0.1); @@ -24,14 +24,20 @@ } h1 { - font-size: 6em; - line-height: .8; - background: linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, hsl(174.86, 100%, 75%) 100%); + font-size: 8rem; + font-style: normal; + font-weight: 800; + line-height: 1; + letter-spacing: -2.56px; + background: linear-gradient(125deg, #FFF 29.3%, #80FFF4 89.99%); background-clip: text; - color: transparent; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; .line2 { line-height: 1.25; + margin-top: -1.75rem; + display: block; } } @@ -40,30 +46,103 @@ color: $grayLighter; font-size: .65em; } - .lead { - font-size: 1.25rem; + &.lead { + font-size: 1.5rem !important; margin-bottom: 24px; + line-height: 2.25rem !important; } } - .hero-buttons a { - font-family: $heading-font; - font-size: 1.1rem; - color: white; - text-transform: uppercase; - white-space: nowrap; - display: inline-block; - font-weight: 600; - padding: 8px 24px 8px 0; - margin: 0 4px 0 0; - border-radius: 32px; + .hero-buttons { + display: flex; + margin: 8px 0px 24px 0px; + align-items: center; + gap: 12px; - &.primary { - background-color: $link-color; - font-size: 2rem; + a { + font-size: 1.1rem; + color: white; + white-space: nowrap; + display: inline-block; + font-weight: 600; + padding: 8px 0 8px 0; + margin: 0 12px 0 12px; + border-radius: 32px; + + &.primary { + font-family: $heading-font; + background-color: $link-color; + text-transform: uppercase; + font-size: 1.5rem; + font-weight: 700; + padding: 8px 16px 8px 24px; + margin: 0; + } + } + } + + .hero-welcome { + padding-left: 64px; + } + + .hero-socialproof { + display: flex; + padding-top: 48px; + align-items: center; + gap: 32px; + + a { + opacity: 0.75; + transition: .5s opacity; + + &:hover { + opacity: 1; + } + } + + } + + .hero-github-top-project { + display: flex; + padding: 12px; + align-items: center; + gap: 10px; + border-radius: 12px; + border: 1px solid #F2F4F9; + width: 330px; + + p { + color: #FFF; + font-size: 1rem; + font-weight: 400; + line-height: 1.25rem; + margin: 0; + + strong { + font-weight: 600; + } + } + } + + .hero-socialproof-asseenon { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 4px; + + p { + margin: 8px 0 0 0; + align-self: stretch; + font-size: .875rem; font-weight: 700; - padding: 8px 20px 8px 28px; - margin-bottom: 16px; + opacity: .75; + } + + .logos { + display: flex; + align-items: center; + gap: 32px; } } @@ -81,10 +160,12 @@ border-radius: 48px; border: 12px double white; box-shadow: 24px 64px 64px hsla(220, 100%, 25%, .5); - // animation-name: box-shadow-color; - // animation-duration: 3s; + // animation-name: floaty-demo; + // animation-duration: 4s; // animation-iteration-count: infinite; // animation-direction: alternate; + // animation-timing-function: linear; + // transform: rotateY(346deg) skewY(3deg); @media only screen and (max-height: 840px) { border-bottom: 0; @@ -97,6 +178,15 @@ } } +@keyframes floaty-demo { + from { + transform: translateY(-25px) rotateY(346deg) skewY(3deg); + } + to { + transform: translateY(0) rotateY(346deg) skewY(3deg); + } +} + @keyframes box-shadow-color { from { box-shadow: 24px 64px 64px hsla(240, 100%, 25%, .5); @@ -106,10 +196,85 @@ } } -@media only screen and (max-width: $lap-end) { + +@media only screen and (max-width: 1280px) { + .hero .hero-socialproof, .hero .hero-buttons { + flex-direction: column; + align-items: flex-start; + gap: 8px; + } +} + + +@media only screen and (max-width: 1240px) { .hero { h1 { - font-size: 4rem; + font-size: 6rem; + letter-spacing: -1.92px; + + .line2 { + margin-top: -1rem; + } + } + + p.lead { + font-size: 1.25rem !important; + line-height: 1.75rem !important; + } + + .hero-buttons a { + font-size: 1rem; + } + } + .hero .hero-welcome { + padding-left: 48px; + } +} + + +@media only screen and (max-width: 1080px) { + .hero .hero-welcome { + padding-left: 24px; + } +} + +@media only screen and (max-width: 760px) { + .hero { + text-align: center; + + .hero-socialproof, .hero-buttons { + align-items: center; + } + + min-height: 940px; + .flex { + flex-direction: column; + } + + #HAdemo { + display: none; + } + + #HAdemoScreenshot { + display: inline-block; + text-align: center; + padding-top: 48px; + } + } +} + +@media only screen and (max-width: $lap-end) { + .hero { + img { + margin-bottom: 0 !important; + } + h1 { + font-size: 4.5rem; + letter-spacing: -1.92px; + + .line2 { + margin-top: -1rem; + } } .lead { @@ -123,21 +288,3 @@ } } } - -@media only screen and (max-width: 760px) { - .hero { - min-height: 940px; - .flex { - flex-direction: column; - } - - #HAdemo { - display: none; - } - - #HAdemoScreenshot { - display: block; - } - - } -} diff --git a/source/_includes/custom/features.html b/source/_includes/custom/features.html index 5a89e8f991b..f4d118a27e2 100644 --- a/source/_includes/custom/features.html +++ b/source/_includes/custom/features.html @@ -40,6 +40,43 @@ EXPLORE AUTOMATIONS + +

    +
    + {% icon "mdi:view-dashboard" %} + Versatile dashboards +
    +
    +

    + Home Assistant dashboards allow you to display information about your smart home. Dashboards are customizable and provide a powerful way to manage your home from your mobile or desktop. +

    + +
      +
    • Easily create and customize your dashboards with drag-and-drop.
    • +
    • Different card types to visualize your data and control your smart home devices.
    • +
    + EXPLORE DASHBOARDS +
    +
    + +
    +
    + {% icon "mdi:microphone" %} + Assist, our voice assistant +
    +
    +

    + Assist allows you to control Home Assistant using natural language. It is built on top of an open voice foundation and powered by knowledge provided by our community. +

    + +
      +
    • Customize your voice assistant and experiment with AI conversations.
    • +
    • Use Assist everywhere on your mobile phone, tablets, smartwatches, and even old-school telephones.
    • +
    + EXPLORE ASSIST +
    +
    +
    {% icon "mdi:puzzle" %} @@ -59,6 +96,7 @@ EXPLORE ADD-ONS
    +
    {% icon "mdi:shield-home-outline" %} @@ -74,6 +112,7 @@

    +
    {% icon "mdi:cellphone" %} @@ -122,6 +161,46 @@
    + +
    +
    + {% icon "mdi:cast-connected" %} + Home Assistant Cast +
    +
    +

    + Take over all the screens. Home Assistant Cast makes every TV a display for dashboards. +

    + + + LEARN MORE + +
    +
    + +
    +
    + {% icon "mdi:nfc-variant" %} + NFC Tags +
    +
    +

    + Use NFC to bring music to your life or automate the mundane. +

    + + + LEARN MORE + +
    +
    diff --git a/source/_includes/custom/getting-started.html b/source/_includes/custom/getting-started.html new file mode 100644 index 00000000000..fa92e799978 --- /dev/null +++ b/source/_includes/custom/getting-started.html @@ -0,0 +1,52 @@ +
    +
    +

    Let's get started.

    +

    A variety of options for pragmatists and tinkerers alike.

    +
    + +
    + +
    +
    +
    Easy
    + Raspberry Pi +
    +

    Raspberry Pi

    +

    A low-cost DIY solution to get started with Home Assistant

    +
    + Learn more +
    +
    + +
    +
    +
    Easiest
    + Home Assistant Green +
    +

    Home Assistant Green

    +

    The easiest way to get started with Home Assistant

    +
    + Learn more +
    +
    + +
    +
    +
    Intermediate
    + Home Assistant Yellow +
    +

    Home Assistant Yellow

    +

    The powerful way to run and customize Home Assistant to your needs

    +
    + Learn more +
    +
    +
    + +
    +

    Need more options?

    +

    Home Assistant can repurpose and be installed on various hardware, such as an Odroid or a generic x86-64 machine.

    +

    The Home Assistant Operating System allows you to install Home Assistant on these devices even if you have little to no Linux experience.

    + Get started +
    +
    \ No newline at end of file diff --git a/source/_includes/custom/news.html b/source/_includes/custom/news.html new file mode 100644 index 00000000000..f04939719e5 --- /dev/null +++ b/source/_includes/custom/news.html @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + diff --git a/source/_includes/custom/press.html b/source/_includes/custom/press.html new file mode 100644 index 00000000000..d95164b0122 --- /dev/null +++ b/source/_includes/custom/press.html @@ -0,0 +1,101 @@ +
    +
    +

    In the press

    +

    Trusted by home automation experts and more than a million households.

    +
    + +
    +
    The Verge logo
    + +
    ArsTechnica.com logo
    + +
    Tweakers.net logo
    + +
    Linus Tech Tips logo
    + +
    Troy Hunt logo
    + +
    Tom's Hardware logo
    + +
    ProductHunt.com logo
    + +
    Linux.com logo
    + +
    OpenSource.com logo
    + +
    Linux Magazine logo
    + +
    Ct logo
    +
    +
    \ No newline at end of file diff --git a/source/_includes/custom/welcome.html b/source/_includes/custom/welcome.html index b6e3a3ebe08..6c432c0dcb3 100644 --- a/source/_includes/custom/welcome.html +++ b/source/_includes/custom/welcome.html @@ -1,6 +1,6 @@

    Awaken
    your home

    - {{ site.description }} + Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.

    {%- assign tot = 0 -%} @@ -14,20 +14,33 @@ {%- endif %} {%- endfor -%} -

    - Get started
    - View live demos - Browse {{ tot | minus: 1 | divided_by: 100 | round | times: 100 }}+ integrations -

    - - GitHub's top open source project by contributors in 2024 - GitHub's top open source project by contributors in 2024 - \ No newline at end of file + + + + diff --git a/source/_includes/site/hero_unit.html b/source/_includes/site/hero_unit.html index 02b3eea513c..d509fb9821e 100644 --- a/source/_includes/site/hero_unit.html +++ b/source/_includes/site/hero_unit.html @@ -1,17 +1,32 @@
    -
    - {% include custom/welcome.html %} +
    + {% include custom/welcome.html %}
    -
    +
    - Home Assistant screenshot + Home Assistant screenshot + +
    diff --git a/source/connectzbt1/index.html b/source/connectzbt1/index.html index 1cbf81be443..970d60e3fa7 100644 --- a/source/connectzbt1/index.html +++ b/source/connectzbt1/index.html @@ -8,7 +8,7 @@ tagline_wide: false og_image: /images/connectzbt1/connectzbt1-cover.jpg hero_image: /images/connectzbt1/connectzbt1_horizontal.png frontpage: true -frontpage_image: /images/connectzbt1/connectzbt1-cover.jpg +frontpage_image: /images/frontpage/feature-zbt1.jpg --- logo-text \ No newline at end of file +logo-text \ No newline at end of file diff --git a/source/images/blog/2019-11-voice-assistant/overview.svg b/source/images/blog/2019-11-voice-assistant/overview.svg index 9862215b052..fb789d3fc40 100644 --- a/source/images/blog/2019-11-voice-assistant/overview.svg +++ b/source/images/blog/2019-11-voice-assistant/overview.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/source/images/docs/scripts/sun-conditions.svg b/source/images/docs/scripts/sun-conditions.svg index 34f38a142a6..80e6bd1a26e 100644 --- a/source/images/docs/scripts/sun-conditions.svg +++ b/source/images/docs/scripts/sun-conditions.svg @@ -1,586 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00:00 - 06:00 - 12:00 - 18:00 - 00:00 - - - - - - - - - Before Sunrise - Before Sunrise +1:00:00 - After Sunrise - After Sunrise -1:00:00 - Before Sunset - Before Sunset -1:00:00 - After Sunset - After Sunset +1:00:00After Sunrise - 1:00:00 /Before Sunset +1:00:00Before Sunrise +1:00:00 /After Sunset -1:00:00 - - - +00:0006:0012:0018:0000:00Before SunriseBefore Sunrise +1:00:00After SunriseAfter Sunrise -1:00:00Before SunsetBefore Sunset -1:00:00After SunsetAfter Sunset +1:00:00After Sunrise - 1:00:00 /Before Sunset +1:00:00Before Sunrise +1:00:00 /After Sunset -1:00:00 \ No newline at end of file diff --git a/source/images/footer-logo-text.svg b/source/images/footer-logo-text.svg index 5f06722ed50..60862321bae 100644 --- a/source/images/footer-logo-text.svg +++ b/source/images/footer-logo-text.svg @@ -1,20 +1 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/footer-skyline.svg b/source/images/footer-skyline.svg index 30218c777d7..79aa0c32e2f 100644 --- a/source/images/footer-skyline.svg +++ b/source/images/footer-skyline.svg @@ -1,39 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/frontpage/hero-github-logo.svg b/source/images/frontpage/hero-github-logo.svg index 95fa42367a3..5a2ef568785 100644 --- a/source/images/frontpage/hero-github-logo.svg +++ b/source/images/frontpage/hero-github-logo.svg @@ -1,23 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/source/images/frontpage/hero-socialproof-arstechnica.svg b/source/images/frontpage/hero-socialproof-arstechnica.svg index 678f4d789ba..71f5b56864b 100644 --- a/source/images/frontpage/hero-socialproof-arstechnica.svg +++ b/source/images/frontpage/hero-socialproof-arstechnica.svg @@ -1,33 +1 @@ - - - - - - - - + \ No newline at end of file diff --git a/source/images/frontpage/hero-socialproof-theverge.svg b/source/images/frontpage/hero-socialproof-theverge.svg index e9f13916bb2..a435e1cb451 100644 --- a/source/images/frontpage/hero-socialproof-theverge.svg +++ b/source/images/frontpage/hero-socialproof-theverge.svg @@ -1,10 +1 @@ - - - - - - - - - - + \ No newline at end of file diff --git a/source/images/frontpage/hero-trophy.svg b/source/images/frontpage/hero-trophy.svg index 95e833e7b3f..217d51d5c4b 100644 --- a/source/images/frontpage/hero-trophy.svg +++ b/source/images/frontpage/hero-trophy.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/source/images/frontpage/netlify.svg b/source/images/frontpage/netlify.svg index 25a6c275d31..fbdc82d9c8b 100644 --- a/source/images/frontpage/netlify.svg +++ b/source/images/frontpage/netlify.svg @@ -1,22 +1 @@ - - - - netlify-callout-vertical-color-bg - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file +netlify-callout-vertical-color-bgCreated with Sketch. \ No newline at end of file diff --git a/source/images/green/arrow-faq.svg b/source/images/green/arrow-faq.svg index ebc6b6a8220..86b7a7a1133 100644 --- a/source/images/green/arrow-faq.svg +++ b/source/images/green/arrow-faq.svg @@ -1,7 +1 @@ - - - Combined Shape - - - - \ No newline at end of file +Combined Shape \ No newline at end of file diff --git a/source/images/green/cta-arrow-white.svg b/source/images/green/cta-arrow-white.svg index aeec201131e..b342b98d060 100644 --- a/source/images/green/cta-arrow-white.svg +++ b/source/images/green/cta-arrow-white.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/source/images/green/diagram-migration-alexa.svg b/source/images/green/diagram-migration-alexa.svg index ea582f76526..cf967a0a977 100644 --- a/source/images/green/diagram-migration-alexa.svg +++ b/source/images/green/diagram-migration-alexa.svg @@ -1,96 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/diagram-migration-googlehome.svg b/source/images/green/diagram-migration-googlehome.svg index ebbf2e9652d..164b87bc56f 100644 --- a/source/images/green/diagram-migration-googlehome.svg +++ b/source/images/green/diagram-migration-googlehome.svg @@ -1,49 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/diagram-migration-homekit.svg b/source/images/green/diagram-migration-homekit.svg index d0bb650b038..b742c70d0be 100644 --- a/source/images/green/diagram-migration-homekit.svg +++ b/source/images/green/diagram-migration-homekit.svg @@ -1,49 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/diagram-migration-smartthings.svg b/source/images/green/diagram-migration-smartthings.svg index 10bd8a34399..ef144e7116d 100644 --- a/source/images/green/diagram-migration-smartthings.svg +++ b/source/images/green/diagram-migration-smartthings.svg @@ -1,47 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/ha-green-inthebox-booklet.svg b/source/images/green/ha-green-inthebox-booklet.svg index 7ead0617e4c..72dae237b5b 100644 --- a/source/images/green/ha-green-inthebox-booklet.svg +++ b/source/images/green/ha-green-inthebox-booklet.svg @@ -1,34 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/ha-green-inthebox-ethernet.svg b/source/images/green/ha-green-inthebox-ethernet.svg index d571e110fd1..056145e8bd2 100644 --- a/source/images/green/ha-green-inthebox-ethernet.svg +++ b/source/images/green/ha-green-inthebox-ethernet.svg @@ -1,37 +1 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/ha-green-inthebox-hub.svg b/source/images/green/ha-green-inthebox-hub.svg index 5d40844a003..e1d5b531495 100644 --- a/source/images/green/ha-green-inthebox-hub.svg +++ b/source/images/green/ha-green-inthebox-hub.svg @@ -1,246 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/ha-green-inthebox-power.svg b/source/images/green/ha-green-inthebox-power.svg index a696bc46dd5..5e198229216 100644 --- a/source/images/green/ha-green-inthebox-power.svg +++ b/source/images/green/ha-green-inthebox-power.svg @@ -1,34 +1 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-apps-android.svg b/source/images/green/icons-apps-android.svg index 4c7b5e572cd..13ecbbb3700 100644 --- a/source/images/green/icons-apps-android.svg +++ b/source/images/green/icons-apps-android.svg @@ -1,27 +1 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-apps-phonewatch.svg b/source/images/green/icons-apps-phonewatch.svg index e001e349424..980c54979b2 100644 --- a/source/images/green/icons-apps-phonewatch.svg +++ b/source/images/green/icons-apps-phonewatch.svg @@ -1,26 +1 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-apps-web.svg b/source/images/green/icons-apps-web.svg index b6096cc94df..2913718d5ba 100644 --- a/source/images/green/icons-apps-web.svg +++ b/source/images/green/icons-apps-web.svg @@ -1,25 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-blinds.svg b/source/images/green/icons-devices-blinds.svg index e1442115f53..5bd29f54ea8 100644 --- a/source/images/green/icons-devices-blinds.svg +++ b/source/images/green/icons-devices-blinds.svg @@ -1,25 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-bulb.svg b/source/images/green/icons-devices-bulb.svg index c685560134a..8385f6334c7 100644 --- a/source/images/green/icons-devices-bulb.svg +++ b/source/images/green/icons-devices-bulb.svg @@ -1,23 +1 @@ - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-chip.svg b/source/images/green/icons-devices-chip.svg index 5c93b7a718c..9adb7797b37 100644 --- a/source/images/green/icons-devices-chip.svg +++ b/source/images/green/icons-devices-chip.svg @@ -1,25 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-climate.svg b/source/images/green/icons-devices-climate.svg index 9c7894ab6fb..97fdcad535a 100644 --- a/source/images/green/icons-devices-climate.svg +++ b/source/images/green/icons-devices-climate.svg @@ -1,23 +1 @@ - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-energy.svg b/source/images/green/icons-devices-energy.svg index e990b494889..3e580bdaef9 100644 --- a/source/images/green/icons-devices-energy.svg +++ b/source/images/green/icons-devices-energy.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-lock.svg b/source/images/green/icons-devices-lock.svg index dd460f8a0ed..736cede6ef8 100644 --- a/source/images/green/icons-devices-lock.svg +++ b/source/images/green/icons-devices-lock.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-plug.svg b/source/images/green/icons-devices-plug.svg index 702e6528baa..37c6b64cd47 100644 --- a/source/images/green/icons-devices-plug.svg +++ b/source/images/green/icons-devices-plug.svg @@ -1,23 +1 @@ - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-devices-speaker.svg b/source/images/green/icons-devices-speaker.svg index 4941ecd9fb6..3c557c5df3e 100644 --- a/source/images/green/icons-devices-speaker.svg +++ b/source/images/green/icons-devices-speaker.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-bluetooth.svg b/source/images/green/icons-integrations-bluetooth.svg index a6051d5ab1d..230cee5edbc 100644 --- a/source/images/green/icons-integrations-bluetooth.svg +++ b/source/images/green/icons-integrations-bluetooth.svg @@ -1,40 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-dlna.svg b/source/images/green/icons-integrations-dlna.svg index addbf63cc0c..bcd27d740c7 100644 --- a/source/images/green/icons-integrations-dlna.svg +++ b/source/images/green/icons-integrations-dlna.svg @@ -1,25 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-hue.svg b/source/images/green/icons-integrations-hue.svg index e0f80b76ed1..7dbac673b95 100644 --- a/source/images/green/icons-integrations-hue.svg +++ b/source/images/green/icons-integrations-hue.svg @@ -1,86 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-ikea.svg b/source/images/green/icons-integrations-ikea.svg index ae7295d8fe4..4450441f9e5 100644 --- a/source/images/green/icons-integrations-ikea.svg +++ b/source/images/green/icons-integrations-ikea.svg @@ -1,45 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-knx.svg b/source/images/green/icons-integrations-knx.svg index fa07a4a5632..53f6c13107b 100644 --- a/source/images/green/icons-integrations-knx.svg +++ b/source/images/green/icons-integrations-knx.svg @@ -1,39 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-lutron.svg b/source/images/green/icons-integrations-lutron.svg index c398e0bba1b..a115f6cf98f 100644 --- a/source/images/green/icons-integrations-lutron.svg +++ b/source/images/green/icons-integrations-lutron.svg @@ -1,39 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-matter.svg b/source/images/green/icons-integrations-matter.svg index 61c254a668a..c5a84441940 100644 --- a/source/images/green/icons-integrations-matter.svg +++ b/source/images/green/icons-integrations-matter.svg @@ -1,26 +1 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-mqtt.svg b/source/images/green/icons-integrations-mqtt.svg index d224d4a0915..cb6780ff2e3 100644 --- a/source/images/green/icons-integrations-mqtt.svg +++ b/source/images/green/icons-integrations-mqtt.svg @@ -1,34 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-plex.svg b/source/images/green/icons-integrations-plex.svg index 049c1298891..3ee52781cbc 100644 --- a/source/images/green/icons-integrations-plex.svg +++ b/source/images/green/icons-integrations-plex.svg @@ -1,29 +1 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-shelly.svg b/source/images/green/icons-integrations-shelly.svg index 6909267f39c..42cf1320099 100644 --- a/source/images/green/icons-integrations-shelly.svg +++ b/source/images/green/icons-integrations-shelly.svg @@ -1,51 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-sonos.svg b/source/images/green/icons-integrations-sonos.svg index fd9bec4f989..4fed43b6a3a 100644 --- a/source/images/green/icons-integrations-sonos.svg +++ b/source/images/green/icons-integrations-sonos.svg @@ -1,25 +1 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-thread.svg b/source/images/green/icons-integrations-thread.svg index 3929b322fa0..0b0a2298830 100644 --- a/source/images/green/icons-integrations-thread.svg +++ b/source/images/green/icons-integrations-thread.svg @@ -1,25 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-tuya.svg b/source/images/green/icons-integrations-tuya.svg index c75c462f447..0e7006182af 100644 --- a/source/images/green/icons-integrations-tuya.svg +++ b/source/images/green/icons-integrations-tuya.svg @@ -1,34 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-zigbee.svg b/source/images/green/icons-integrations-zigbee.svg index 2de98f3041a..a27461ebbc7 100644 --- a/source/images/green/icons-integrations-zigbee.svg +++ b/source/images/green/icons-integrations-zigbee.svg @@ -1,100 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-integrations-zwave.svg b/source/images/green/icons-integrations-zwave.svg index e4b553e600a..30647f7b7c6 100644 --- a/source/images/green/icons-integrations-zwave.svg +++ b/source/images/green/icons-integrations-zwave.svg @@ -1,29 +1 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-trust-privacy.svg b/source/images/green/icons-trust-privacy.svg index b130ef888fa..fd0ac2f9e5a 100644 --- a/source/images/green/icons-trust-privacy.svg +++ b/source/images/green/icons-trust-privacy.svg @@ -1,13 +1 @@ - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/green/icons-trust-updates.svg b/source/images/green/icons-trust-updates.svg index d866a0e2c14..6f4eedcba45 100644 --- a/source/images/green/icons-trust-updates.svg +++ b/source/images/green/icons-trust-updates.svg @@ -1,13 +1 @@ - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/home-assistant-logo-vertical.svg b/source/images/home-assistant-logo-vertical.svg index 9fcba2b6fdf..69fea72b22c 100644 --- a/source/images/home-assistant-logo-vertical.svg +++ b/source/images/home-assistant-logo-vertical.svg @@ -1,67 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/home-assistant-logo-white.svg b/source/images/home-assistant-logo-white.svg index df7045ba9f5..58590f5195a 100644 --- a/source/images/home-assistant-logo-white.svg +++ b/source/images/home-assistant-logo-white.svg @@ -1,16 +1 @@ - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/source/images/home-assistant-logo.svg b/source/images/home-assistant-logo.svg index 742b2124457..ba8330227cc 100644 --- a/source/images/home-assistant-logo.svg +++ b/source/images/home-assistant-logo.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/source/images/improv-logo.svg b/source/images/improv-logo.svg index c44bc0144d5..8c1b810241d 100644 --- a/source/images/improv-logo.svg +++ b/source/images/improv-logo.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/source/images/installation/linux.svg b/source/images/installation/linux.svg index 6e31c9cdc98..d3c2546d4cb 100644 --- a/source/images/installation/linux.svg +++ b/source/images/installation/linux.svg @@ -1,1577 +1 @@ - - - - Tux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Tux - 20 June 2012 - - - Garrett LeSage - - - - - - Larry Ewing, the creator of the original Tux graphic - - - - - tux - Linux - penguin - logo - - - - - Larry Ewing, Garrett LeSage - - - https://github.com/garrett/Tux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Tux \ No newline at end of file diff --git a/source/images/installation/macos.svg b/source/images/installation/macos.svg index 2359d7614d9..c9db2e9eed6 100644 --- a/source/images/installation/macos.svg +++ b/source/images/installation/macos.svg @@ -1,280 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/source/images/installation/yellow-logo.svg b/source/images/installation/yellow-logo.svg index 31b62bcdb66..e7ca7c89c8a 100644 --- a/source/images/installation/yellow-logo.svg +++ b/source/images/installation/yellow-logo.svg @@ -1,48 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/source/images/integrations/voip/voip_adapter.svg b/source/images/integrations/voip/voip_adapter.svg index 1f88080c7c2..5856f433408 100644 --- a/source/images/integrations/voip/voip_adapter.svg +++ b/source/images/integrations/voip/voip_adapter.svg @@ -1,241 +1 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - VoIPAdapter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VoIPAdapter \ No newline at end of file diff --git a/source/images/press/arstechnica.svg b/source/images/press/arstechnica.svg index 18f741ad4aa..1df304ec32a 100644 --- a/source/images/press/arstechnica.svg +++ b/source/images/press/arstechnica.svg @@ -1,81 +1 @@ - - + \ No newline at end of file diff --git a/source/images/press/ltt.svg b/source/images/press/ltt.svg index 99682b5654a..6c2f0de3577 100644 --- a/source/images/press/ltt.svg +++ b/source/images/press/ltt.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/source/images/press/theverge.svg b/source/images/press/theverge.svg index a422bc85674..9e1ff8dae1f 100644 --- a/source/images/press/theverge.svg +++ b/source/images/press/theverge.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/source/images/press/tomshardware.svg b/source/images/press/tomshardware.svg index 3eea7639fa7..2d556a0c408 100644 --- a/source/images/press/tomshardware.svg +++ b/source/images/press/tomshardware.svg @@ -1,26 +1 @@ - - - - - - - - - - - - + \ No newline at end of file diff --git a/source/images/sponsors/nabu_casa.svg b/source/images/sponsors/nabu_casa.svg index bcb2806755a..08e39d84654 100644 --- a/source/images/sponsors/nabu_casa.svg +++ b/source/images/sponsors/nabu_casa.svg @@ -1,20 +1 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file From 71aa0683757dcbff32fd88c9bd45855c4645baa9 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Fri, 6 Dec 2024 21:09:15 +0100 Subject: [PATCH 091/169] Document config flow setup in geniushub (#36048) --- source/_integrations/geniushub.markdown | 79 ++++--------------------- 1 file changed, 11 insertions(+), 68 deletions(-) diff --git a/source/_integrations/geniushub.markdown b/source/_integrations/geniushub.markdown index 58d1c8413ae..54b689569ed 100644 --- a/source/_integrations/geniushub.markdown +++ b/source/_integrations/geniushub.markdown @@ -26,6 +26,17 @@ The `geniushub` integration links Home Assistant with your Genius Hub CH/DHW sys It uses the [geniushub](https://pypi.org/project/geniushub-client/) client library, which provides data compatible with the v1 API that _may not_ exactly match that of the official Web App. +## Prerequisites + +You can configure the integration either via the cloud API or the local API. + +- **Cloud API**: requires a **hub token** obtained from [my.geniushub.co.uk](https://my.geniushub.co.uk/). +- **Local API**: requires your **username** and **password** as used with [geniushub.co.uk/app](https://www.geniushub.co.uk/). + +The local API is unofficial, but is faster and has more features, while the cloud API is slower. + +{% include integrations/config_flow.md %} + ### Zones Each zone controlled by your Genius Hub will be exposed as either a: @@ -177,71 +188,3 @@ value_template: "{{ state_attr('climate.genius_zone_12', 'status').occupied }}" ``` {% endraw %} - -## Configuration - -To set up this integration, add one of the following to your{% term "`configuration.yaml`" %}on.yaml`" %} file. - -If required, you can switch between one Option and the other and, as the `unique_id` remains consistent, state history will be preserved. This assumes that the correct MAC address is provided for Option 2, below. If a wrong MAC address was provided for Option 1, then the MAC address can be overridden for Option 1 to maintain these links within the entity registry. - -### Option 1: hub hostname/address with user credentials - -This is the recommended option. - -- Requires your **username** & **password**, as used with [geniushub.co.uk/app](https://www.geniushub.co.uk/app). -- Uses the v3 API - unofficial, but there are additional features (e.g., battery levels). -- Polls the hub directly (so is faster, say ~1s response time). -- You have the option of specifying a MAC address (not recommended, see above). - -The hub does not have to be in the same subnet as your Home Assistant instance. - -### Option 2: hub token only - -This option is recommended only if Option 1 does not work. The MAC address should match that written on the back of the Hub. - -- Requires a **hub token** obtained from [my.geniushub.co.uk](https://my.geniushub.co.uk/). -- Uses the v1 API - which is well-documented. -- Polls Heat Genius' own servers (so is slower, say ~5-10s response time). -- You should use the Hub's MAC address (although any valid MAC will do). - -```yaml -# Example configuration.yaml entry, using a Hub Token -geniushub: - token: GENIUS_HUB_TOKEN - mac: GENIUS_HUB_MAC -``` - -```yaml -# Example configuration.yaml entry, directly polling the Hub -geniushub: - host: IP_ADDRESS - username: GENIUS_HUB_USERNAME - password: GENIUS_HUB_PASSWORD -``` - -{% configuration %} -token: - description: The Hub Token of the Genius Hub. - required: true - type: string -mac: - description: The MAC address of the Hub's ethernet port. - required: false - type: string -host: - description: The hostname/IP address of the Genius Hub. - required: true - type: string -username: - description: Your Genius Hub username. - required: false - type: string -password: - description: Your Genius Hub password. - required: false - type: string -{% endconfiguration %} - -Note: `username` and `password` are only required when `host` is used (instead of `token`). - -Note: `mac` is required if `token` is used (instead of `host`) and is optional otherwise. From 602364d4ca5e9acef089a8fae6ada0d90ba53ab3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:16:54 +0100 Subject: [PATCH 092/169] build(deps-dev): bump sass-embedded from 1.81.1 to 1.82.0 (#36143) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 7bf2caa0544..254a4478e22 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ group :development do gem 'stringex', '2.8.6' # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' - gem 'sass-embedded', '1.81.1' + gem 'sass-embedded', '1.82.0' gem 'rubocop', '1.69.0' gem 'ruby-lsp', '0.22.1' gem 'rackup', '2.2.1' diff --git a/Gemfile.lock b/Gemfile.lock index 9d87c1f671e..898d36d2843 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -134,9 +134,9 @@ GEM ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.81.1-arm64-darwin) + sass-embedded (1.82.0-arm64-darwin) google-protobuf (~> 4.28) - sass-embedded (1.81.1-x86_64-linux-gnu) + sass-embedded (1.82.0-x86_64-linux-gnu) google-protobuf (~> 4.28) sass-globbing (1.1.5) sass (>= 3.1) @@ -179,7 +179,7 @@ DEPENDENCIES rake (= 13.2.1) rubocop (= 1.69.0) ruby-lsp (= 0.22.1) - sass-embedded (= 1.81.1) + sass-embedded (= 1.82.0) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 4.1.1) From 1d1784f2d0b6b3e9a858aa9cab98e42db9fc0423 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:17:45 +0100 Subject: [PATCH 093/169] build(deps-dev): bump json from 2.8.2 to 2.9.0 (#36142) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 898d36d2843..b381a9b906d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -66,7 +66,7 @@ GEM nokogiri (~> 1.12) jekyll-watch (2.2.1) listen (~> 3.0) - json (2.8.2) + json (2.9.0) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) From 249af074f920637276bb6eeeefc88990930c42e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:46:20 +0100 Subject: [PATCH 094/169] build(deps-dev): bump rubocop from 1.69.0 to 1.69.1 (#36140) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 254a4478e22..7219ef46c8a 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,7 @@ group :development do # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' gem 'sass-embedded', '1.82.0' - gem 'rubocop', '1.69.0' + gem 'rubocop', '1.69.1' gem 'ruby-lsp', '0.22.1' gem 'rackup', '2.2.1' end diff --git a/Gemfile.lock b/Gemfile.lock index b381a9b906d..d243e188937 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -113,14 +113,14 @@ GEM regexp_parser (2.9.3) rexml (3.3.9) rouge (4.5.1) - rubocop (1.69.0) + rubocop (1.69.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.4, < 3.0) - rubocop-ast (>= 1.36.1, < 2.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.36.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) rubocop-ast (1.36.2) @@ -177,7 +177,7 @@ DEPENDENCIES nokogiri (= 1.16.8) rackup (= 2.2.1) rake (= 13.2.1) - rubocop (= 1.69.0) + rubocop (= 1.69.1) ruby-lsp (= 0.22.1) sass-embedded (= 1.82.0) sass-globbing (= 1.1.5) From 7108476464335797ca992e7237a68cfec88da170 Mon Sep 17 00:00:00 2001 From: Kristian Kraljic Date: Fri, 6 Dec 2024 21:53:00 +0100 Subject: [PATCH 095/169] Update vicare.markdown adding an API limitation note (#36176) Co-authored-by: Franck Nijhof --- source/_integrations/vicare.markdown | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index 7829114cf1a..f03288982d3 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -48,12 +48,18 @@ It may take up to an hour for your new client to become active and usable. Other ### API limits -The Viessmann API is rate-limited. If you exceed one of the limits below, you will be blocked for 24 hours: +The Viessmann API is rate-limited. In the "Basic" (free) tier of their API plans, if you exceed one of the limits below, you will be blocked for 24 hours: - 120 calls for a time window of 10 minutes - 1450 calls for a time window of 24 hours -The {% term integration %} polls the API every 60 seconds and will work within these limits. However, any additional requests to the API, for example, by setting the temperature via the integration but also by interacting with the ViCare app, count into those limits. +For the paid API plans this limit increases to 3000 calls in 24 hours. The {% term integration %} polls the API every 60 seconds and will work within these limits. However, any additional requests to the API, for example, by setting the temperature via the integration and interacting with the ViCare app, count into those limits. + +{% important %} +For any Viessmann API plan except the most expensive "Advanced" tier, Viessmann imposes certain limits on which APIs are accessible for end-user consumption. Unfortunately, this also affects APIs useful for smart home integrations, like controlling thermostats (TRVs) and climate sensors, which are only available in the "Advanced" plan API tier. In case you set up the integration with a lower-tier plan, TRVs and other smart home entities will not become accessible in your Home Assistant installation. + +Please consider providing feedback to Viessmann as described in [their FAQ](https://developer.viessmann.com/start/faq.html) "Where can I give feedback on the API?" in case you consider this as a limitation for your use-case. +{% endimportant %} {% note %} If you have multiple Viessmann devices in Home Assistant, the limit is shared between them, meaning the poll interval is increased, and the values are less frequently updated! From a75d434ce0607047293760ae39b7112bc9c94805 Mon Sep 17 00:00:00 2001 From: dontinelli <73341522+dontinelli@users.noreply.github.com> Date: Fri, 6 Dec 2024 22:11:34 +0100 Subject: [PATCH 096/169] Update documentation of status values (#36105) --- source/_integrations/fyta.markdown | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown index f5df581d690..aafecc51471 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -41,6 +41,7 @@ Password: The integration has no additional configuration options. ## Supported functionality + ### Sensors The following sensors are currently available per plant: @@ -48,17 +49,33 @@ The following sensors are currently available per plant: | name | Unit | Description | |-----------------------|--------|:-------------------------------------------| | scientific_name | | Scientific name of the plant | -| plant_status | | FYTA-Status (number 1 to 5) | -| temperature_status | | FYTA-Status (number 1 to 5) | -| light_status | | FYTA-Status (number 1 to 5) | -| moisture_status | | FYTA-Status (number 1 to 5) | -| salinity_status | | FYTA-Status (number 1 to 5) | +| plant_status | | FYTA-Status (cf. scale below) | +| temperature_status | | FYTA-Status (cf. scale below) | +| light_status | | FYTA-Status (cf. scale below) | +| moisture_status | | FYTA-Status (cf. scale below) | +| salinity_status | | FYTA-Status (cf. scale below) | | temperature | °C | Temperature measured by sensor | | light | μmol/h | Light measured by sensor (hourly photosynthetically active radiation PAR)| | moisture | % | Moisture measured by sensor | | salinity | mS/cm | Salinity measured by sensor (measured as conductivity)| | battery_level | % | Battery level of the sensor | +The plant status may have one of the following states: + +- Plant deleted +- Plant good status +- Plant bad status +- Plant no sensor + +For plant measurements, the following status scale is applied: + +- No Data +- Too Low +- Low +- Perfect +- High +- Too High + ## Data updates The integration fetches data from the device every 4 minutes. From c6daef565dc5868f84581cb5e8cb21dd73034523 Mon Sep 17 00:00:00 2001 From: Ingolf Becker Date: Fri, 6 Dec 2024 21:19:44 +0000 Subject: [PATCH 097/169] Removed left over reference to relative_time() (#36150) relative_time() was deprecated in favor of time_since() and time_until() in #111177 --- source/_docs/configuration/templating.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 3cda6becfd9..a2a5875a41c 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -718,10 +718,10 @@ For example, if you wanted to select a field from `trigger` in an automation bas ### Time -`now()`, `relative_time()`, `today_at()`, and `utcnow()` are not supported in [limited templates](#limited-templates). +`now()`, `time_since()`, `time_until()`, `today_at()`, and `utcnow()` are not supported in [limited templates](#limited-templates). - `now()` returns a datetime object that represents the current time in your time zone. - - You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3.8/library/datetime.html#datetime.datetime) attributes and functions. + - You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime) attributes and functions. - Using `now()` will cause templates to be refreshed at the start of every new minute. - `utcnow()` returns a datetime object of the current time in the UTC timezone. - For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`. @@ -742,7 +742,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas - `as_datetime(value, default)` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. When the input is already a datetime object it will be returned as is. in case the input is a datetime.date object, midnight will be added as time. This function can also be used as a filter. - `as_timestamp(value, default)` converts a datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter. - `as_local()` converts a datetime object to local time. This function can also be used as a filter. -- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. +- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. - `time_since(datetime, precision)` converts a datetime object into its human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter. If the datetime is in the future, returns 0 seconds. A precision of 0 returns all available units, default is 1. From f1c65904e33bb3ab6a5fa2a3465285d9cf059050 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 6 Dec 2024 18:29:20 -0300 Subject: [PATCH 098/169] Add unsupported bluetooth adapter Ugreen CM749 (#36151) --- source/_integrations/bluetooth.markdown | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index b6202474808..05c9970fdfd 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -213,21 +213,24 @@ These adapters do not have a reset pin. If they stop responding, there is curren - Alfa AWUS036EACS (RTL8821CU) - Frequent connection failures and drop outs - BASEUS BR8651A01 BA04 - Advertisement drops out - Belkin F8T003 ver 2. - Fails to setup and add successfully -- Bluegiga BLED112 - No driver available yet for USB id 2458:0001 +- Bluegiga BLED112 - No driver available yet for USB ID `2458:0001` - EDIMAX EW-7611ULB (RTL8723BU) - Frequent connection failures and drop outs - EDUP EP-AC1661 (RTL8821CU) - Frequent connection failures and drop outs -- eppfun AK3040G (ATS2851) - No driver available yet for USB id 10d7:b012 -- eppfun AK3040A (ATS2851) - No driver available yet for USB id 10d7:b012 +- eppfun AK3040G (ATS2851) - No driver available yet for USB ID `10d7:b012` +- eppfun AK3040A (ATS2851) - No driver available yet for USB ID `10d7:b012` - KOAMTAC KBD 401G (CSR8510A10) - Adapter is unstable and drops out - TRIPP-LITE CU885A/U261-001-BT4 (CSR8510A10) - Adapter is unstable and drops out - QUMOX Bluetooth 5.0 (Barrot 8041A02) - No working driver -- UGREEEN CM591 (ATS2851) - No driver available yet for USB id 10d7:b012 +- UGREEEN CM591 (ATS2851) - No driver available yet for USB ID `10d7:b012` +- UGREEEN CM749 (Barrot chipset) 📶 - No driver available yet for USB ID `33fa:0010` - tp-link UB400 (CSR4) - Frequent connection failures with active connections - tp-link UB500 (RTL8761BU) - Frequent connection failures with active connections -- CSR 4.0 clones with USB id 0a12:0001 - Unrecoverable driver failure: These clones will usually show a message like `CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...` in the system log when they are plugged in. +- CSR 4.0 clones with USB ID `0a12:0001` - Unrecoverable driver failure: These clones will usually show a message like `CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...` in the system log when they are plugged in. - Multiple unbranded adapters labeled with CSR 4.0 - 5 CORE CSR 4.0 +📶 Denotes external antenna + ## Multiple adapters The Bluetooth integration employs automatic failover and connection path logic to achieve high availability. From b8f43538fe4da38acef0cc9cd6b9f2f215eac9b5 Mon Sep 17 00:00:00 2001 From: alorente Date: Fri, 6 Dec 2024 23:01:18 +0100 Subject: [PATCH 099/169] Add missing discovery prefix on device tracker's MQTT topics (#36119) --- source/_integrations/device_tracker.mqtt.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index 47346c4564f..b6f5ae80915 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -205,27 +205,27 @@ You can use the command line tool `mosquitto_pub` shipped with `mosquitto` or th To create the device_tracker: ```bash -mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/config -m '{"state_topic": "a4567d663eaf/state", "name": "My Tracker", "payload_home": "home", "payload_not_home": "not_home"}' +mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/config -m '{"state_topic": "homeassistant/device_tracker/a4567d663eaf/state", "name": "My Tracker", "payload_home": "home", "payload_not_home": "not_home"}' ``` To set the state of the device tracker to "home": ```bash -mosquitto_pub -h 127.0.0.1 -t a4567d663eaf/state -m 'home' +mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/state -m 'home' ``` To set the state of the device tracker to a named location: ```bash -mosquitto_pub -h 127.0.0.1 -t a4567d663eaf/state -m 'location_name' +mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/state -m 'location_name' ``` If the device supports GPS coordinates then they can be sent to Home Assistant by specifying an attributes topic (i.e. "json_attributes_topic") in the configuration payload: -- Attributes topic: `a4567d663eaf/attributes` +- Attributes topic: `homeassistant/device_tracker/a4567d663eaf/attributes` - Example attributes payload: -Example message to be received at topic `a4567d663eaf/attributes`: +Example message to be received at topic `homeassistant/device_tracker/a4567d663eaf/attributes`: ```json { @@ -238,7 +238,7 @@ Example message to be received at topic `a4567d663eaf/attributes`: To create the device_tracker with GPS coordinates support: ```bash -mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/config -m '{"json_attributes_topic": "a4567d663eaf/attributes", "name": "My Tracker"}' +mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/config -m '{"json_attributes_topic": "homeassistant/device_tracker/a4567d663eaf/attributes", "name": "My Tracker"}' ``` {% note %} @@ -250,7 +250,7 @@ Using `state_topic` is optional when using `json_attributes_topic` to determine To set the state of the device tracker to specific coordinates: ```bash -mosquitto_pub -h 127.0.0.1 -t a4567d663eaf/attributes -m '{"latitude": 32.87336, "longitude": -117.22743, "gps_accuracy": 1.2}' +mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/attributes -m '{"latitude": 32.87336, "longitude": -117.22743, "gps_accuracy": 1.2}' ``` From 415600b4f95305e5358af87401fbe69705a6d1e8 Mon Sep 17 00:00:00 2001 From: Guido Schmitz Date: Fri, 6 Dec 2024 23:03:22 +0100 Subject: [PATCH 100/169] Add example automations to devolo Home Network (#36101) --- .../devolo_home_network.markdown | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index 60d43078f24..a94ac4df5c9 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -131,6 +131,87 @@ This integration only supports using the API the devolo Home Network App uses. T The devolo Gigabridge is the only device that comes with a default password. However, it seems that in factory default the password works for the device website but not for the API. If you give the device a new password via the website, it is applied to both and the integration starts working. Even using the same password again works. +## Example automations + +### Restart PLC device on loss of pairing + +PLC networks are sometimes flaky. To restore a network's state, it's sometimes a good idea to reboot the PLC device attached to the router if the number of PLC devices is lower than expected. If you apply this automation, keep in mind that devices might be expected on standby. In this example, the expected number of devices is 3. + +{% raw %} + +```yaml +alias: "PLC Feeder Restart" +description: "Restart device connected to the router if number of PLC devices is unexpected low" +triggers: + - trigger: numeric_state + entity_id: + - sensor.devolo_001_connected_plc_devices # Replace with your device's sensor + for: + hours: 0 + minutes: 10 + seconds: 0 + below: 3 +actions: + - action: button.press + target: + entity_id: button.devolo_001_restart_device # Replace with your device's button +``` + +{% endraw %} + +### Notify on data rate drop + +Noise on the electric wire can significant disturb PLC data rates. A notification close to a drop can help identify the action that lead to the drop. The following example takes 25% as threshold. + +{% raw %} + +```yaml +alias: "PLC data rate" +description: "PLC data rate dropped more than 25%" +triggers: + - entity_id: + - sensor.devolo_001_plc_downlink_phy_rate_devolo_002 # Replace with your device's sensors + - sensor.devolo_001_plc_uplink_phy_rate_devolo_002 + trigger: state +conditions: + - condition: template + value_template: >- + # Checks if new value is less than 75% of previous value + {{ (trigger.to_state.state|float / trigger.from_state.state|float) < 0.75 }} +actions: + - action: notify.mobile_app_pixel_4a + data: + message: >- + PLC data rate of {{ trigger.to_state.name }} dropped to {{ + trigger.to_state.state }} + {{trigger.to_state.attributes.unit_of_measurement}} + title: PLC data rate dropped +``` + +{% endraw %} + +### Enable guest wifi on time basis + +You might want to expose your guest wifi only during the day but turn it off at night. + +{% raw %} + +```yaml +alias: "Toggle guest Wi-Fi" +description: "Turn Guest Wi-Fi on and off" +triggers: + - trigger: time + at: + - "08:00:00" + - "17:00:00" +actions: + - action: switch.toggle + target: + entity_id: switch.devolo_001_enable_guest_wifi # Replace with your device's switch +``` + +{% endraw %} + ## Removing the integration This integration follows standard integration removal. No extra steps are required. From 66b35be0522b1c36615f9338aaef44131d0fadf6 Mon Sep 17 00:00:00 2001 From: Markus Jacobsen Date: Fri, 6 Dec 2024 23:10:24 +0100 Subject: [PATCH 101/169] Add supported features section to Bang & Olufsen (#36171) Co-authored-by: Franck Nijhof --- source/_integrations/bang_olufsen.markdown | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown index d857615b9cb..a8a1a4c9c7e 100644 --- a/source/_integrations/bang_olufsen.markdown +++ b/source/_integrations/bang_olufsen.markdown @@ -49,6 +49,26 @@ Device model: The **Bang & Olufsen** integration uses the [Mozart API](https://bang-olufsen.github.io/mozart-open-api), which is a local REST API with a WebSocket notification channel for immediate state information for media metadata, playback progress, volume etc. The only exception to this is the repeat and shuffle controls which are polled every 30 seconds. +## Supported features + +Currently, a single device with a `media_player` entity is created for each added physical device. For advanced automations, [events](#automations) are fired in Home Assistant. + +### Media player + +A number of features are available through the media player entity: + +- See current metadata, progress, volume, etc. +- Control next/previous, play/pause, shuffle/repeat settings, volume, sound mode, audio and video sources, and more. +- Play various media through [play_media actions](#play_media-actions). +- Control multiroom audio through [Beolink](https://support.bang-olufsen.com/hc/en-us/articles/4411572883089-What-is-Beolink-Multiroom): + - Control with Home Assistant media_player grouping. + - Monitor current [Beolink state](#beolink) through media player properties. + - For more advanced usage, [custom Beolink services](#custom-actions) have been defined: + - Connect or expand to [ASE](https://support.bang-olufsen.com/hc/en-us/articles/24766979863441-Which-platform-is-my-Connected-Audio-product-based-on) products not available in Home Assistant. + - Expand sessions to all discovered devices. + - Connect to, expand to or unexpand devices. + - Set all connected Beolink devices to standby. + ## Actions ### play_media actions From a2669b72288436870d4f625fae71f781da4f6cd5 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Fri, 6 Dec 2024 23:11:55 +0100 Subject: [PATCH 102/169] Update edl21.markdown (#36148) --- source/_integrations/edl21.markdown | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/_integrations/edl21.markdown b/source/_integrations/edl21.markdown index 9808e8b6c00..b00a3604e41 100644 --- a/source/_integrations/edl21.markdown +++ b/source/_integrations/edl21.markdown @@ -54,3 +54,17 @@ To use this integration with a remote transceiver you could use [ser2net](https: Example `ser2net.conf` configuration file: > 2001:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT + +Example `ser2net.yaml` (`ser2net` version 4.3.3) configuration entry: + +```yaml +connection: &con2001 + enable: on + accepter: tcp,2001 + options: + telnet-brk-on-sync: false + kickolduser: true + connector: serialdev,/dev/ttyUSB0,9600n81,local +``` + +Use `socket://:2001` when adding the Smart Meter and asked for a "USB device path". From 4bca758e5e206e4313dce54eb69ec8e04c44477b Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 6 Dec 2024 23:16:42 +0100 Subject: [PATCH 103/169] Hotfix gemlock --- Gemfile.lock | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d243e188937..4594a071191 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -134,10 +134,9 @@ GEM ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.82.0-arm64-darwin) - google-protobuf (~> 4.28) - sass-embedded (1.82.0-x86_64-linux-gnu) + sass-embedded (1.82.0) google-protobuf (~> 4.28) + rake (>= 13) sass-globbing (1.1.5) sass (>= 3.1) sassc (2.1.0) From afb6d73e55225e4eab98150fd221de54d9262751 Mon Sep 17 00:00:00 2001 From: omettam Date: Fri, 6 Dec 2024 20:15:19 -0500 Subject: [PATCH 104/169] Update cisco_webex_teams.markdown (#36203) --- source/_integrations/cisco_webex_teams.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index cc6a189361b..a465d4d5062 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -23,7 +23,7 @@ To use this notification platform you will need an app (bot) token. To obtain a - Detailed instructions can be found in the section titled **Creating a Webex Bot** on the [Webex Teams bot documentation](https://developer.webex.com/docs/bots). -You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of two ways: +You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of three ways: 1. Logging in at [Cisco Webex for Developers](https://developer.webex.com/) and navigate to `Documentation`>`API Reference`>`Messages` and select List Messages, or 2. Log into the web client at [web.webex.com](https://web.webex.com/), From 4748debd44b2a554c81ebe9f11d8dc5e411290b8 Mon Sep 17 00:00:00 2001 From: jul-sh Date: Fri, 6 Dec 2024 20:34:51 -0500 Subject: [PATCH 105/169] Fix typo in kef integration docs (#36204) --- source/_integrations/kef.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown index 37383d36c94..0b73ccdc060 100644 --- a/source/_integrations/kef.markdown +++ b/source/_integrations/kef.markdown @@ -79,7 +79,7 @@ supports_on: description: LS50 Wireless with a serial number below LS50W13074K24L/R2G do not support turning on the speakers over the network. Set this to false if you have an older model. default: true required: false - type: integer + type: boolean {% endconfiguration %} ## Advanced - configuration example From 2e9fccc5d49865ace625b2fcb4244defee8f75c7 Mon Sep 17 00:00:00 2001 From: CrazyVito11 <31567466+CrazyVito11@users.noreply.github.com> Date: Sat, 7 Dec 2024 15:19:38 +0100 Subject: [PATCH 106/169] Fixed typo on the HA Cloud voice page (#36210) --- source/voice_control/voice_remote_cloud_assistant.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/voice_control/voice_remote_cloud_assistant.markdown b/source/voice_control/voice_remote_cloud_assistant.markdown index 13d73949278..a5c9d65a64f 100644 --- a/source/voice_control/voice_remote_cloud_assistant.markdown +++ b/source/voice_control/voice_remote_cloud_assistant.markdown @@ -15,10 +15,10 @@ related: Before being able to use Assist, you need to configure it. -The simplest and most effective way to use Assist is to leverage the voice providers (for speech-to-text and test-to-speech) included in Home Assistant Cloud. +The simplest and most effective way to use Assist is to leverage the voice providers (for speech-to-text and text-to-speech) included in Home Assistant Cloud. This page will detail how to do just that. -If you are interested in setting up a fully local voice assistant, follow this procedure instead +If you are interested in setting up a fully local voice assistant, follow this procedure instead. ## Setting up a cloud Assist pipeline From ae7cc8b2defc7e3d2b3d77299d52bbdadc9d4a34 Mon Sep 17 00:00:00 2001 From: drewsteinacher <26029945+drewsteinacher@users.noreply.github.com> Date: Sun, 8 Dec 2024 16:13:07 -0500 Subject: [PATCH 107/169] Link to min_version docs where it is referenced (#36233) --- source/_docs/automation/trigger.markdown | 2 +- source/_docs/blueprint/schema.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 97c7f4b82c8..4b0267e80db 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -1108,7 +1108,7 @@ blueprint: ## Merging lists of triggers {% caution %} -This feature requires Home Assistant version 2024.10 or later. If using this in a blueprint, set the `min_version` for the blueprint to at least this version. +This feature requires Home Assistant version 2024.10 or later. If using this in a blueprint, set the `min_version` for the blueprint to at least this version. See the [blueprint schema documentation](/docs/blueprint/schema/#min_version) for more details. {% endcaution %} In some advanced cases (like for blueprints with trigger selectors), it may be necessary to insert a second list of triggers into the main trigger list. This can be done by adding a dictionary in the main trigger list with the sole key `triggers`, and the value for that key contains a second list of triggers. These will then be flattened into a single list of triggers. For example: diff --git a/source/_docs/blueprint/schema.markdown b/source/_docs/blueprint/schema.markdown index 48c2769de64..689007962b9 100644 --- a/source/_docs/blueprint/schema.markdown +++ b/source/_docs/blueprint/schema.markdown @@ -157,7 +157,7 @@ by their name; not by section and name. A section is differentiated from an input by the presence of an additional `input` key within that section. {% caution %} -Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions. +Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions. See [this section](/docs/blueprint/schema/#min_version) for more details. {% endcaution %} The full configuration for a section is below: From 82daad46d137e3775fb86a7c923f0c75b31d1ab0 Mon Sep 17 00:00:00 2001 From: SvenPittelkow <76539523+SvenPittelkow@users.noreply.github.com> Date: Mon, 9 Dec 2024 06:35:42 +0100 Subject: [PATCH 108/169] Update voice_remote_local_assistant.markdown (#36232) --- source/voice_control/voice_remote_local_assistant.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/voice_control/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown index 671c577e80f..2a347ccbcad 100644 --- a/source/voice_control/voice_remote_local_assistant.markdown +++ b/source/voice_control/voice_remote_local_assistant.markdown @@ -13,7 +13,7 @@ related: title: Best practices with Assist --- -The simplest and most effective way to use Assist is to leverage the voice providers (for speech-to-text and test-to-speech) included in [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) +The simplest and most effective way to use Assist is to leverage the voice providers (for speech-to-text and text-to-speech) included in [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) If you are interested in setting up a fully local voice assistant, follow this setup: @@ -95,4 +95,4 @@ The options are also documented in the add-on itself. Go to the {% my supervisor Also be sure to check the specific tutorial for [using Piper in Automations](voice_control/using_tts_in_automation/) ## Next steps -Once the pipeline is configured, you are ready to jump into the basic conversation setup in Best Practices \ No newline at end of file +Once the pipeline is configured, you are ready to jump into the basic conversation setup in Best Practices From 381b2687e204c4af543c18b0e85a16a2b4f6846f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 08:18:15 +0100 Subject: [PATCH 109/169] build(deps): bump nokogiri from 1.16.8 to 1.17.0 (#36245) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 7219ef46c8a..41897193e5e 100644 --- a/Gemfile +++ b/Gemfile @@ -24,7 +24,7 @@ group :jekyll_plugins do end gem 'sinatra', '4.1.1' -gem 'nokogiri', '1.16.8' +gem 'nokogiri', '1.17.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 4594a071191..886c5603668 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -81,9 +81,9 @@ GEM multi_json (1.15.0) mustermann (3.0.3) ruby2_keywords (~> 0.0.1) - nokogiri (1.16.8-arm64-darwin) + nokogiri (1.17.0-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.8-x86_64-linux) + nokogiri (1.17.0-x86_64-linux) racc (~> 1.4) parallel (1.26.3) parser (3.3.6.0) @@ -173,7 +173,7 @@ DEPENDENCIES jekyll-paginate (= 1.1.0) jekyll-sitemap (= 1.4.0) jekyll-toc (= 0.19.0) - nokogiri (= 1.16.8) + nokogiri (= 1.17.0) rackup (= 2.2.1) rake (= 13.2.1) rubocop (= 1.69.1) From 72f52584d0eaf3085e1fb924ee833b7fa7a57bcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 08:18:30 +0100 Subject: [PATCH 110/169] build(deps-dev): bump sorbet-runtime from 0.5.11681 to 0.5.11690 (#36246) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 886c5603668..54b437f68ab 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -150,7 +150,7 @@ GEM rack-protection (= 4.1.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11681) + sorbet-runtime (0.5.11690) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From 2dfa979b8d9552ad08c0105f8e4031f2eb217b21 Mon Sep 17 00:00:00 2001 From: thromer Date: Sun, 8 Dec 2024 23:26:56 -0800 Subject: [PATCH 111/169] Update link to "Using blueprints" section of template documentation. (#36243) --- source/_docs/blueprint/schema.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/blueprint/schema.markdown b/source/_docs/blueprint/schema.markdown index 689007962b9..21df85fa326 100644 --- a/source/_docs/blueprint/schema.markdown +++ b/source/_docs/blueprint/schema.markdown @@ -57,7 +57,7 @@ description: domain: description: > The domain in which this blueprint is used. Currently, only - [`automation`](/docs/automation/yaml/), `script` and [`template`](/docs/integrations/template/#using-blueprints) are supported. + [`automation`](/docs/automation/yaml/), `script` and [`template`](/integrations/template/#using-blueprints) are supported. type: string required: true author: From 7f3b7b00553a2fb3e6c8c5b086718b18339b13c2 Mon Sep 17 00:00:00 2001 From: ildar170975 <71872483+ildar170975@users.noreply.github.com> Date: Mon, 9 Dec 2024 10:57:51 +0300 Subject: [PATCH 112/169] Update template.markdown: make "configuration" a separate chapter (#36209) --- source/_integrations/template.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 7cab660b668..a4fed8e1ece 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -125,6 +125,8 @@ template: {% endraw %} +### Configuration reference + {% configuration %} trigger: description: Define an automation trigger to update the entities. Optional. If omitted will update based on referenced entities. [See trigger documentation](/docs/automation/trigger). From ca28e371b515be292f06c28b5f391aed9bd853e4 Mon Sep 17 00:00:00 2001 From: Guido Schmitz Date: Mon, 9 Dec 2024 10:14:34 +0100 Subject: [PATCH 113/169] Update high-level description of devolo Home Control (#36248) --- source/_integrations/devolo_home_control.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/devolo_home_control.markdown b/source/_integrations/devolo_home_control.markdown index c73f19b179a..e0b200754f5 100755 --- a/source/_integrations/devolo_home_control.markdown +++ b/source/_integrations/devolo_home_control.markdown @@ -29,7 +29,7 @@ ha_zeroconf: true ha_integration_type: hub --- -devolo Home Control is a Z-Wave ecosystem with a Z-Wave to IP gateway in the center. The integration allows you to control devices connected to the gateway. +[devolo](https://www.devolo.global) Home Control is a Z-Wave ecosystem with a [Z-Wave to IP gateway](https://www.devolo.de/devolo-home-control-zentrale) in the center. The {% term integration %} allows you to control devices connected to the gateway. {% include integrations/config_flow.md %} From 11696850746b67d27163d7e08a14bcc8001c1340 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Mon, 9 Dec 2024 12:41:59 +0100 Subject: [PATCH 114/169] Add Reolink NVS8 and NVS16 as supported (#36252) --- source/_integrations/reolink.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index 9f107a78804..e4932886e97 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -338,6 +338,8 @@ The following models have been tested and confirmed to work with a direct link t - [RLN16-410 NVR](https://reolink.com/product/rln16-410/) - [RLN36 NVR](https://reolink.com/product/rln36/) - [RLN12W NVR](https://reolink.com/product/rln12w/) +- [NVS8 NVR](https://reolink.com/product/nvs8/) (Retail version of RLN8) +- [NVS16 NVR](https://reolink.com/product/nvs16/) (Retail version of RLN16) - [Reolink Chime](https://reolink.com/product/reolink-chime/) (when connected to a doorbell) - [Reolink Duo WiFi](https://reolink.com/product/reolink-duo-wifi-v1/) - [Reolink Duo 2 WiFi](https://reolink.com/product/reolink-duo-wifi/) @@ -361,6 +363,8 @@ The following hubs/NVRs have been tested and confirmed to work with battery-powe - [RLN8-410 NVR](https://reolink.com/product/rln8-410/) (only the latest hardware version N7MB01, older versions might receive the required firmware update later) - [RLN16-410 NVR](https://reolink.com/product/rln16-410/) (only the latest hardware version N6MB01, older versions might receive the required firmware update later) - [RLN36 NVR](https://reolink.com/product/rln36/) +- [NVS8 NVR](https://reolink.com/product/nvs8/) (Retail version of RLN8) +- [NVS16 NVR](https://reolink.com/product/nvs16/) (Retail version of RLN16) The following battery-powered models have been tested and confirmed to work through the Reolink Home Hub/NVR: From c9628e14bf481eef172b54b77bbb70b1a47c8609 Mon Sep 17 00:00:00 2001 From: Josef Zweck Date: Mon, 9 Dec 2024 13:48:09 +0100 Subject: [PATCH 115/169] Update acaia.markdown (#36253) --- source/_integrations/acaia.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_integrations/acaia.markdown b/source/_integrations/acaia.markdown index fbc214a0680..c9aea0d6b65 100644 --- a/source/_integrations/acaia.markdown +++ b/source/_integrations/acaia.markdown @@ -24,7 +24,7 @@ The **Acaia** {% term integration %} allows you to control [Acaia](https://acaia If your machine is within Bluetooth range to your Home Assistant host and the [Bluetooth](/integrations/bluetooth) integration is fully loaded, the scale should be discovered automatically. If you are configuring the device manually, your scale needs to be turned on during setup. -Once the integration is setup, Home Assistant will try to connect to your scale every 15 seconds. This means there is sometimes a small delay between you turning the scale on and Home Assistant connecting to it. +Once the integration is set up, Home Assistant will try to connect to your scale every 15 seconds. This means there is sometimes a small delay between you turning the scale on and Home Assistant connecting to it. {% include integrations/config_flow.md %} @@ -55,8 +55,10 @@ Device: The following devices have been tested successfully with this integration: -- Lunar (manufactured after 2021) +- Lunar - Pyxis +- Pearl +- Pearl S If you have successfully tested this integration with another Acaia model, please let us know by enhancing this documentation, or by opening an issue in GitHub. From ab864f5b31016f7f963408b857ced5a03a86f8eb Mon Sep 17 00:00:00 2001 From: "Jaap P." Date: Mon, 9 Dec 2024 14:42:31 +0100 Subject: [PATCH 116/169] Nordpool doc update (#36228) * Update nordpool.markdown - Use commonly used table format to list the sensors. - Elaborate on peak and off-peak timeframe. - Add an example of a UI template. - Update YAML template to match the UI screenshots (for consistency) - Add an example of how to use the template sensor in the energy dashboard. * Apply suggestions from code review Remove whitespace Co-authored-by: Klaas Schoute * Create test.txt * Add files via upload * Add files via upload * Update nordpool.markdown do images properly * Delete source/images/integrations/nordpool/test.txt file not needed * Tiny tweaks --------- Co-authored-by: Klaas Schoute Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/nordpool.markdown | 90 ++++++++++++------ .../integrations/nordpool/nordpool-blocks.png | Bin 0 -> 5615 bytes .../nordpool/nordpool_create_template.png | Bin 0 -> 44987 bytes .../nordpool/nordpool_energy_dashboard.png | Bin 0 -> 69677 bytes .../nordpool/nordpool_tempalte_sensor.png | Bin 0 -> 21786 bytes 5 files changed, 62 insertions(+), 28 deletions(-) create mode 100644 source/images/integrations/nordpool/nordpool-blocks.png create mode 100644 source/images/integrations/nordpool/nordpool_create_template.png create mode 100644 source/images/integrations/nordpool/nordpool_energy_dashboard.png create mode 100644 source/images/integrations/nordpool/nordpool_tempalte_sensor.png diff --git a/source/_integrations/nordpool.markdown b/source/_integrations/nordpool.markdown index 5a9ca8e3769..b7c3bc14c8c 100644 --- a/source/_integrations/nordpool.markdown +++ b/source/_integrations/nordpool.markdown @@ -39,58 +39,92 @@ Currency: ## Sensors -Each market area will create a device which has the following sensors: +The integration will create entities showing today's energy prices for the configured market area. Only the base energy price is shown. VAT and other additional costs are not included. ### Main sensors -- Current price for the selected area -- Previous price for the selected area -- Next price for the selected area +| Sensor | Type | Description | +| ------------------------- | ----------------- | --------------------------------------------------------------------------------- | +| Current price | [Currency]/kWh | The current (hourly) energy price. | +| Previous price | [Currency]/kWh | The price of the previous hour. | +| Next price | [Currency]/kWh | The price of the next hour. | +| Daily average | [Currency]/kWh | The average of today's energy prices. | -These sensors can be used to calculate your current energy cost, or to help decide whether to charge the battery now or in an hour, etc. +### Peak & off-peak sensors -### Block price sensors +Additional sensors are provided for peak and off-peak blocks. -- Block average -- Block minimum -- Block maximum -- Block start time -- Block end time +- Peak refers to the price of the period from 8am to 8pm. +- Off-peak 1 refers to the price of the time period from midnight to 8am. +- Off-peak 2 refers to the average price of the time period from 8pm to midnight. + +

    + Time blocks +

    + +| Sensor | Type | Description | +| ------------------------------- | ----------------- | --------------------------------------------------------------------------------- | +| [peak/off-peak] highest price | [Currency]/kWh | The hightest hourly price during the given timeframe. | +| [peak/off-peak] lowest price | [Currency]/kWh | The lowest hourly price during the given timeframe. | +| [peak/off-peak] average | [Currency]/kWh | The average price of the given timeframe. | +| [peak/off-peak] time from | Datetime | The start date/time of the given timeframe. | +| [peak/off-peak] time until | Datetime | The end date/time of the given timeframe. | -These sensors show the minimum/maximum and average during certain blocks of the day. More known as off-peak (typically lower price) or peak hours (typically higher price). The block price sensors are not enabled by default. -### Daily average - -- Daily average - -The daily average sensor is not enabled by default. - ### Diagnostic sensors -- Last updated - indicates when the market price was last updated. -- Currency - The selected currency. -- Exchange rate - EUR is the base currency so will show the exchange rate used on the market place. +| Sensor | Type | Description | +| ------------------------- | ----------------- | --------------------------------------------------------------------------------- | +| Currency | [Currency] | The configured currency. | +| Exchange rate | Integer | The exchange rate between the configure currency and Euro's. | +| Last updated | Datetime | The time when the market prices were last updated. | -The `Exchange rate` sensor is not enabled by default. +## Examples -## Example +A template sensor to add VAT and fixed cost is useful to get the actual energy cost in the energy dashboard. -A simple template sensor to add VAT and a fixed cost from an `input_number` entity +### UI Template + +Create a helper using the UI. +1. Go to {% my integrations title="**Settings** > **Devices & Services**" %} and at the top, choose the **Helpers** tab. +2. In the bottom right corner, select **Create helper**. +3. Select **Template** and **Template a sensor**. +4. Enter the fields as shown below. + +The template below takes the current price attributes, adds 0.1293 EUR as fixed costs and adds 21% VAT. + +

    + Screenshot: Create template sensor +

    + +### YAML Template + +A template sensor to add VAT and a fixed cost from an helper entity `input_number.add_fixed_cost`. {% raw %} ```yaml template: - sensor: - - name: "Full SE3 current price" - unit_of_measurement: "SEK/kWh" + - name: "Nordpool" + unit_of_measurement: "EUR/kWh" state_class: measurement state: > - {% set cost = states('sensor.nord pool_se3_current_price') | float(0) %} + # create a variable with the current price + {% set cost = states('sensor.nord_pool_nl_current_price') | float(0) %} + # create a variable with the additional fixed cost {% set add_cost = states('input_number.add_fixed_cost') | float(0) %} - # Add fixed cost to the spot price and add VAT (25%) + # Add cost and additional fixed cost. Add VAT (25%) by multiplying with 1.25 and round to 2 digits: {{ ((cost + add_cost) * 1.25) | round(2, default=0) }} ``` {% endraw %} + +### Energy Dashboard + +To use the Nordpool integration in the **Energy** dashboard, when configuring grid consumption and production, use the **Use an entity with current price** option. + +

    + Screenshot: Create template sensor +

    diff --git a/source/images/integrations/nordpool/nordpool-blocks.png b/source/images/integrations/nordpool/nordpool-blocks.png new file mode 100644 index 0000000000000000000000000000000000000000..1be6787bb0329d158e86a06fc3bd97605524581c GIT binary patch literal 5615 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 literal 0 HcmV?d00001 diff --git a/source/images/integrations/nordpool/nordpool_create_template.png b/source/images/integrations/nordpool/nordpool_create_template.png new file mode 100644 index 0000000000000000000000000000000000000000..0aead05531e603cd6274778334a3d06e7e03ac7d GIT binary patch literal 44987 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∾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 literal 0 HcmV?d00001 diff --git a/source/images/integrations/nordpool/nordpool_energy_dashboard.png b/source/images/integrations/nordpool/nordpool_energy_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf62fa245f06a8148a4ef414b4eb3b513846f85 GIT binary patch literal 69677 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 z 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 literal 0 HcmV?d00001 diff --git a/source/images/integrations/nordpool/nordpool_tempalte_sensor.png b/source/images/integrations/nordpool/nordpool_tempalte_sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..1de7a3e958a4b07deb066044aa492f55277442a6 GIT binary patch literal 21786 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 lgOb|vc&hz>JxY Date: Mon, 9 Dec 2024 18:03:27 +0100 Subject: [PATCH 117/169] Add 3 day blinds app instructions (#36231) * Add 3 day blinds app instructions * Styling * Update source/_integrations/motion_blinds.markdown Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com> --------- Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com> --- source/_integrations/motion_blinds.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 8c12591a52a..86d2d18fb71 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -95,6 +95,10 @@ In the Brel Home app on Android go to the `me` page (home screen 4th tab), tap 5 In the official Bloc Blinds app go to settings (three bars > gear icon), go to the `About` page, Tap five time on the bloc blinds icon in the middle and a pop-up with the key will be shown. +### 3 Day Blinds app + +In the 3 Day Blinds app go to the home screen, go to settings (three bars in the upper left corner > gear icon), select `About` from the bottom, quickly tap the 3 Day Blinds icon in the center of the screen 5 times and a pop-up with the key will be shown. + ### Connector app To get the API key ([iOS app](https://apps.apple.com/us/app/connector/id1344058317), [Android app](https://play.google.com/store/apps/details?id=com.smarthome.app.connector)), follow these steps: From ad57e4b7da21fb76f7b9e33fc7e29d96ab6c2ef2 Mon Sep 17 00:00:00 2001 From: Kyle <3674851+kaffolder7@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:05:58 -0500 Subject: [PATCH 118/169] Update anthropic.markdown (#36255) Terms for Anthropic API usage changed this week to allow individuals & hobbyists to utilize their API. Changed the legal note in the documentation to reflect this change. --- source/_integrations/anthropic.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/anthropic.markdown b/source/_integrations/anthropic.markdown index de15e626a9b..cdc18254cdf 100644 --- a/source/_integrations/anthropic.markdown +++ b/source/_integrations/anthropic.markdown @@ -29,7 +29,7 @@ The **Anthropic** {% term integrations %} adds a conversation agent powered by [ Controlling Home Assistant is done by providing the AI access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}. The AI can provide you information about your devices and control them. -Legal note: Anthropic currently limits the API usage to organizations only, more info here: [Can I use the Claude API for individual use?](https://support.anthropic.com/en/articles/8987200-can-i-use-the-claude-api-for-individual-use) +Legal note: Individuals and hobbyists are welcome to use the Anthropic API [for personal use](https://support.anthropic.com/en/articles/8987200-can-i-use-the-claude-api-for-individual-use), however, please note that the use of the API is subject to their [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms), regardless of whether you are an individual or representing a company. This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger). From 2a996ef9b9089c40d4463e923d7ffd2496c8d3bd Mon Sep 17 00:00:00 2001 From: Steven Goossens Date: Mon, 9 Dec 2024 20:05:28 +0100 Subject: [PATCH 119/169] Update opentherm_gw.markdown - Change default port (#36249) --- source/_integrations/opentherm_gw.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index f4c2949651e..edfa553cf45 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -40,7 +40,7 @@ The following configuration options are available: name: description: "The friendly name used for the OpenTherm Gateway and its entities. This is used to generate the display name of the created device and all related entities.
    Examples: `Thermostat`, `Living Room`" path or url: - description: "Path to the OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html). This is usually either a path to a serial device in `/dev/` if the gateway is connected via serial or USB, or a URL in the form of `socket://[IP address]:[port]` if it is connected over the network.
    Examples: `/dev/ttyUSB0`, `socket://192.168.0.250:7686`" + description: "Path to the OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html). This is usually either a path to a serial device in `/dev/` if the gateway is connected via serial or USB, or a URL in the form of `socket://[IP address]:[port]` if it is connected over the network.
    Examples: `/dev/ttyUSB0`, `socket://192.168.0.250:25238`" id: description: "The `gateway_id` for this OpenTherm Gateway. This is used to identify this specific gateway in action and to generate the entity IDs for the entities related to this gateway. The entered value will be slugified, i.e. all spaces and special characters will be converted to underscores and any accents will be removed from their characters. The default value is the slugified version of the `name` given above.
    Examples: `thermostat`, `living_room`" {% endconfiguration_basic %} From f6c007ae08cb27289cda73ca2953af688839640c Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Mon, 9 Dec 2024 22:49:12 +0100 Subject: [PATCH 120/169] Include Reolink kit cameras as only compatible through the NVR (#36263) --- source/_integrations/reolink.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index e4932886e97..af7ed92d690 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -384,6 +384,18 @@ However, these cameras can work with this integration through an NVR or Home Hub - E1 Pro - E1 - Reolink Lumus +- B400* +- B500* +- B500W* +- B800* +- B800W* +- B1200* +- D400* +- D500* +- D800* +- D1200* + +*These models are only sold as a kit which includes a NVR. ### Incompatible models From 07b518cb78f07f28c8150806220bd698f928aff7 Mon Sep 17 00:00:00 2001 From: Bouwe Westerdijk <11290930+bouwew@users.noreply.github.com> Date: Mon, 9 Dec 2024 22:55:53 +0100 Subject: [PATCH 121/169] Add Plugwise breaking-change info to 2024.12.0 release note (#36250) --- source/_posts/2024-12-04-release-202412.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_posts/2024-12-04-release-202412.markdown b/source/_posts/2024-12-04-release-202412.markdown index a4a7c27537d..2055b7b2ea2 100644 --- a/source/_posts/2024-12-04-release-202412.markdown +++ b/source/_posts/2024-12-04-release-202412.markdown @@ -570,6 +570,18 @@ it. {% enddetails %} +{% details "Plugwise" %} + +For the Plugwise Adam, all device-based climate entities will be replaced by new zone-based climate entities, which will most likely have different entity names. +This change aligns with the Plugwise App's representation of climate entities as zones (as discovered in Issue [#130597](https://github.com/home-assistant/core/issues/130597)). + + ([@bouwew] - [#131659]) ([documentation](/integrations/plugwise)) + + [@bouwew]: https://github.com/bouwew + [#131659]: https://github.com/home-assistant/core/pull/131659 + + {% enddetails %} + {% details "QNAP" %} The QNAP sensors will no longer have the following extra state attributes: From f4b7442b24704c43f203de71b5ed71fde0cd228c Mon Sep 17 00:00:00 2001 From: Markus Jacobsen Date: Mon, 9 Dec 2024 22:58:38 +0100 Subject: [PATCH 122/169] Add limitations section to Bang & Olufsen (#36172) --- source/_integrations/bang_olufsen.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown index a8a1a4c9c7e..0513e099c00 100644 --- a/source/_integrations/bang_olufsen.markdown +++ b/source/_integrations/bang_olufsen.markdown @@ -69,6 +69,24 @@ A number of features are available through the media player entity: - Connect to, expand to or unexpand devices. - Set all connected Beolink devices to standby. +## Limitations + +Currently, some features of the Mozart platform such as: + +- Creating timers and alarms +- Retrieving detailed alarm and timer information + +And more advanced app-centric features such as: + +- Creating presets +- Creating listening positions +- Creating sound modes +- Creating stereo pairs +- Adjusting specific sound settings +- Pairing remotes + +These features are not available through the API. Some may become available at a later point, but until then the [Bang & Olufsen App](https://www.bang-olufsen.com/en/dk/story/apps) can be used to configure these settings and features. + ## Actions ### play_media actions From 1da63c7842b78f09c1568c997146b1b729893520 Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Mon, 9 Dec 2024 23:36:23 +0100 Subject: [PATCH 123/169] Improve IronOS documentation (#36076) * Improve IronOS documentation * Remove full URL * fix yaml * remove --------- Co-authored-by: Franck Nijhof --- source/_integrations/iron_os.markdown | 95 ++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/source/_integrations/iron_os.markdown b/source/_integrations/iron_os.markdown index 4e8eb8d3b82..de4e10882ba 100644 --- a/source/_integrations/iron_os.markdown +++ b/source/_integrations/iron_os.markdown @@ -20,10 +20,24 @@ ha_platforms: The **IronOS** {% term integration %} seamlessly connects Home Assistant with PINE64's Pinecil V2 soldering irons, allowing for remote monitoring and control. This integration provides real-time updates on temperature, power, and various other settings and diagnostic information. +## About IronOS + +**IronOS** is an open-source firmware for smart soldering irons, offering advanced features like power negotiation, battery protection, and customizable settings. Originally developed for the TS100, it now supports a wide range of devices, including the Pinecil V2, the first model with BLE support. The firmware is feature-complete and available in 31 languages. + +## How you can use this integration + +The IronOS integration lets you monitor and control your smart soldering iron from Home Assistant and automate related tasks. For example, you can turn on a fume extractor automatically when the soldering iron enters soldering mode, and turn it off when the iron is laid down. You can also monitor the temperature of the tip and handle, as well as power draw and input voltage, directly on dashboards. + ## Minimum requirements - **Pinecil V2** requires IronOS v2.21 or higher to connect to Home Assistant. Please refer to the [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil_Firmware#Overview) for update instructions. +## Prerequisites + +The IronOS integration requires your device to be within Bluetooth range of Home Assistant, which must be equipped with a [Bluetooth adapter](/integrations/bluetooth/). If the device is out of range, an [ESPHome Bluetooth proxy](https://esphome.io/projects/?type=bluetooth) can be placed within range. In this case, a Bluetooth adapter on Home Assistant is not required. + +Home Assistant will detect nearby IronOS devices. Discovered devices will show up on {% my integrations title="Settings > Devices & services" %} in the discovered section. + {% include integrations/config_flow.md %} ## Number controls @@ -46,7 +60,86 @@ The **IronOS** {% term integration %} seamlessly connects Home Assistant with PI - **Uptime:** Tracks the total operating time of the soldering iron since its last power-on. - **Hall effect strength:** (Optional) This feature requires the device to be [modified with a hall effect sensor](https://wiki.pine64.org/wiki/Pinecil_Hall_Effect_Sensor). If a neodymium magnet is attached to the stand, it enables proximity detection and can be utilized to calibrate when the iron enters sleep mode based on its proximity to the stand. - ## Update - **Firmware:** The update entity indicates if the firmware is up-to-date or if there is a newer IronOS version available for your device. For more information on how to update your device, please refer to the [IronOS documentation](https://ralim.github.io/IronOS/). + +## Automations + +Get started with this automation example for IronOS with a ready-to-use blueprint! + +### Soldering fume extractor automation + +Automatically activate the fume extractor when soldering begins and deactivate it when the soldering iron is idle. + +{% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/ironos-soldering-fume-extractor-automation-pinecil-v2/802156" %} + +{% details "Example YAML configuration" %} + +{% raw %} + +```yaml +triggers: + - trigger: state + entity_id: sensor.pinecil_operating_mode + to: soldering + id: start soldering + from: + - trigger: state + entity_id: sensor.pinecil_operating_mode + from: soldering + to: idle + id: stop soldering +actions: + - if: + - condition: trigger + id: + - start soldering + then: + - action: switch.turn_on + target: + entity_id: switch.fume_extractor + - if: + - condition: trigger + id: + - stop soldering + then: + - action: switch.turn_off + target: + entity_id: switch.fume_extractor +``` + +{% endraw %} + +{% enddetails %} + +## Data updates + +This integration maintains an active Bluetooth connection while the device is powered on, refreshing the data every 5 seconds. + +### Known Limitations + +- IronOS does not support turning on, waking from sleep, or waking from idle mode via Bluetooth. These actions are restricted to ensure safety and prevent unintended operation of the device. +- Updating the device from Home Assistant is not possible, as IronOS does not support over-the-air (OTA) updates. + +### Troubleshooting + +- **Error: `Characteristic f6d70xxx-5a10-4eba-aa55-33e27f9bc533 was not found!`**: + + When using an ESPHome BLE Proxy, this error may occur because the maximum number of GATT characteristics cached is too small. IronOS exposes more than 60 characteristics on the Pinecil V2, which exceeds the default limit. To fix this, recompile the firmware of your ESPHome Bluetooth proxy with the following settings: + + ```yaml + esp32: + board: ${board} + framework: + type: esp-idf + sdkconfig_options: + CONFIG_BT_GATTC_MAX_CACHE_CHAR: "100" + ``` + +## Removing the integration + +This integration can be removed by following these steps: + +{% include integrations/remove_device_service.md %} +4. Home Assistant will automatically rediscover the device. If you prefer not to see it, select Ignore. From 1fc636d709d58096afa39fe34c66169d4ebdb2bf Mon Sep 17 00:00:00 2001 From: Gitsarry <131813959+Gitsarry@users.noreply.github.com> Date: Mon, 9 Dec 2024 23:40:28 +0100 Subject: [PATCH 124/169] Improve threshold integration documentation example comment (#36147) --- source/_integrations/threshold.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 7eaa7364b1f..3c4c2d0325c 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -109,7 +109,9 @@ sensor: name: temperature derivative time_window: 00:05:00 binary_sensor: - - platform: threshold # will switch state not at 0°C/min but 0.1°C/min or -0.1°C/min depending on the current state of the sensor, respectively + - platform: threshold # will switch state not at 0°C/min but + # will switch on when value rises above 0.1°C/min + # will switch off when value sinks below -0.1°C/min entity_id: sensor.temperature_derivative upper: 0 hysteresis: 0.1 # sensor From 287d969c17aac9bd5d333867ce1d59cb82d58061 Mon Sep 17 00:00:00 2001 From: Max R Date: Mon, 9 Dec 2024 17:41:04 -0500 Subject: [PATCH 125/169] Clarify reference to icloud storage folder location (#36113) --- source/_integrations/icloud.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index 57da0530859..49ac9f5c91b 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -44,7 +44,7 @@ You need to use an [app-specific password](https://support.apple.com/102654) to ## In case of troubleshooting -Go into your Home Assistant configuration `.storage` folder and delete the `icloud` folder, then retry. +Delete the integration's configuration (most likely in `/config/.storage/icloud`), then retry. ## Platforms From 4d3af1c7c98d407d4f93d5d7ea12f4e56c00b29b Mon Sep 17 00:00:00 2001 From: Brett Adams Date: Tue, 10 Dec 2024 15:49:14 +1000 Subject: [PATCH 126/169] Update splunk.markdown (#36265) --- source/_integrations/splunk.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/splunk.markdown b/source/_integrations/splunk.markdown index f7a65ef70ab..11ab25882a6 100644 --- a/source/_integrations/splunk.markdown +++ b/source/_integrations/splunk.markdown @@ -51,7 +51,7 @@ ssl: verify_ssl: description: Allows you do disable checking of the SSL certificate. required: false - default: false + default: true type: boolean name: description: This parameter allows you to specify a friendly name to send to Splunk as the host, instead of using the name of the HEC. From a64a38ef69fa3e12e2e6bc7c31f677cee86ca6e6 Mon Sep 17 00:00:00 2001 From: Chris Talkington Date: Tue, 10 Dec 2024 00:39:31 -0600 Subject: [PATCH 127/169] Improve Roku documentation (#36247) * improve roku documentation * Update roku.markdown * Update roku.markdown * Update roku.markdown * Update roku.markdown * Update roku.markdown * Tiny tweaks --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/roku.markdown | 172 +++++++++++++++++++---------- 1 file changed, 116 insertions(+), 56 deletions(-) diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown index 93aa319cf46..ac3ad633792 100644 --- a/source/_integrations/roku.markdown +++ b/source/_integrations/roku.markdown @@ -26,7 +26,7 @@ ha_platforms: ha_integration_type: device --- -The Roku integration allows you to control a [Roku](https://www.roku.com/) device. +The Roku integration allows you to control a [Roku](https://www.roku.com/) media playback device. This integration only supports Roku media playback devices (such as sticks, streaming boxes, and televisions). All other smart home products (such as light bulbs and cameras) are part of a different ecosystem. {% include integrations/config_flow.md %} @@ -34,16 +34,50 @@ When adding the integration, you will be asked to provide a {% term host %}. Unl If you are having issues connecting, you may have to adjust the settings on your Roku device to allow local control. The common setting is: `Settings / System / Advanced / Control by mobile apps / Network access` -There is currently support for the following device types within Home Assistant: +{% include integrations/option_flow.md %} -- Media player -- Remote +{% configuration_basic %} +Play Media Application ID: + description: The application ID to use when launching media playback. The default is `15985`. This application must support the PlayOnRoku API. +{% endconfiguration_basic %} -## Remote +## Data updates -The `roku` remote platform allows you to send remote control buttons to a Roku device. It is automatically set up when a Roku is configured. +The Roku integration polls every 10 seconds to check the current state of media playback. The available applications and television channels are only fetched every 15 minutes. -At the moment, the following buttons are supported: +## Supported functionality + +### Entities + +The Roku integration provides the following entities. + +#### Binary sensor + +- **Headphones connected sensor** + - **Description**: The headphones connected sensor will tell if you if the device has headphones connected for private listening. + - **Available for devices**: All + +- **Supports AirPlay sensor** + - **Description**: The supports AirPlay sensor will tell if the device is capable of accepting AirPlay connections. + - **Available for devices**: All + +- **Supports Ethernet sensor** + - **Description**: The supports Ethernet sensor will tell if the device is capable of being connected via an Ethernet cable. + - **Available for devices**: All + +- **Supports find remote sensor** + - **Description**: The supports find remote sensor will tell if the device is capable of the find remote feature. + - **Available for devices**: All + +#### Media player + +The integration allows for media playback control including power and source control. It also supports the ability to select sources such as text-to-speech and Camera via "Browse Media". + +#### Remote + +The integration allows you to send remote control commands. It is automatically set up for all devices. + +The following commands are currently supported depending on device type and manufacturer support: - back - backspace @@ -64,7 +98,7 @@ At the moment, the following buttons are supported: - left - literal - play -- power +- power - replay - reverse - right @@ -75,7 +109,7 @@ At the moment, the following buttons are supported: - volume_mute - volume_up -A typical action for pressing several buttons looks like this. +##### Example ```yaml action: remote.send_command @@ -88,27 +122,36 @@ data: - select ``` -## Media player +#### Select -When the Home Assistant Roku integration is enabled and a Roku device has been configured, in the Home Assistant UI the Roku media player will show a listing of the installed channels, or apps, under “source”. Select one and it will attempt to launch the channel on your Roku device. +- **Application control** + - **Description**: The application select control allows changing the active application. + - **Available for devices**: All -{% include integrations/option_flow.md %} +- **Channel control** + - **Description**: The channel select control allows changing the active television channel. + - **Available for devices**: Only available for Roku TV devices. -{% configuration_basic %} -Play Media Application ID: - description: The application ID to use when launching media playback. This application must support the PlayOnRoku API. -{% endconfiguration_basic %} +#### Sensor -## Source Automation +- **Active app sensor** + - **Description**: The active app sensor will tell you the name of the active application. + - **Available for devices**: All -The `media_player.select_source` action may be used to launch specific applications/streaming channels on your Roku device. +- **Active app ID sensor** + - **Description**: The active app ID sensor will tell you the ID of the active application. + - **Available for devices**: All + +### Source automation + +The `media_player.select_source` action may be used to launch specific applications on your Roku device. | Data attribute | Optional | Description | Example | | ---------------------- | -------- | ----------- | ------- | | `entity_id` | no | Target a specific media player. | | `source` | no | An application name or application ID. | Prime Video -### Examples +#### Examples ```yaml actions: @@ -130,13 +173,7 @@ actions: source: 20197 ``` -### Obtaining Application IDs - -The currently active application ID can be found in the `Active App ID` diagnostic sensor. - -Alternatively, you can make a manual HTTP request (GET) to `http://ROKU_IP:8060/query/apps`, in either your browser or terminal, to retrieve a complete list of installed applications in XML format. - -## TV Channel Tuning +### TV channel tuning The `media_player.play_media` action may be used to tune to specific channels on your Roku TV device with OTA antenna. @@ -146,7 +183,7 @@ The `media_player.play_media` action may be used to tune to specific channels on | `media_content_id` | no | A channel number. | 5.1 | `media_content_type` | no | A media type. | `channel` -### Example +#### Example ```yaml actions: @@ -158,11 +195,11 @@ actions: media_content_type: channel ``` -## Play on Roku +### Play on Roku The `media_player.play_media` action may be used to send media URLs (primarily videos) for direct playback on your device. -This feature makes use of the PlayOnRoku API. If you are using an older Roku OS (pre-11.5), the defaults of this integration should just work. Alternatively, you can configure a third-party application that supports the PlayOnRoku API via the `Play Media Roku Application ID` option. +This feature makes use of the PlayOnRoku API. If you are using an older Roku OS (pre-11.5), the defaults of this integration should just work with the configuration defaults. Alternatively, you can configure a third-party application that supports the PlayOnRoku API via the `Play Media Roku Application ID` option. The following third-party applications have been tested with this integration: @@ -178,7 +215,7 @@ The following third-party applications have been tested with this integration: | `extra.thumbnail` | yes | A thumbnail URL for the media. | | `extra.artist_name` | yes | The name of the media artist. | Blender -### Example +#### Example ```yaml actions: - action: media_player.play_media @@ -190,25 +227,11 @@ actions: extra: format: "mp4" name: "Big Buck Bunny" -``` +``` -## Camera Stream Integration +### Content deeplinking -The `camera.play_stream` action may be used to send camera streams (HLS) directly to your device. This feature requires the [`stream` integration](/integrations/stream) and makes use of the PlayOnRoku API. - -### Example -```yaml -actions: - - action: camera.play_stream - target: - entity_id: camera.camera - data: - media_player: media_player.roku -``` - -## Content Deeplinking - -The `media_player.play_media` action may be used to deep-link to content within an application. +The `media_player.play_media` action may be used to deep-link to content within a channel application using content IDs. See [Obtaining Content IDs](#obtaining-content-ids) to learn more about content IDs. | Data attribute | Optional | Description | Example | | ---------------------- | -------- | ----------- | ------- | @@ -218,7 +241,7 @@ The `media_player.play_media` action may be used to deep-link to content within | `extra.content_id` | no | A unique content identifier passed to app. | 8e06a8b7-d667-4e31-939d-f40a6dd78a88 | `extra.media_type` | no | A media type passed to app. Should be one of `movie`, `episode`, `season`, `series`, `shortFormVideo`, `special`, `live` | movie -### Example +#### Example ```yaml actions: @@ -233,7 +256,43 @@ actions: media_type: movie ``` -### Obtaining Content IDs +### Camera stream integration + +The `camera.play_stream` action may be used to send camera streams (HLS) directly to your device. This feature requires the [`stream` integration](/integrations/stream) and makes use of the PlayOnRoku API. + +#### Example + +```yaml +actions: + - action: camera.play_stream + target: + entity_id: camera.camera + data: + media_player: media_player.roku +``` + +### Additional actions + +The integration exposes additional actions to control a Roku device. + +#### Action `roku.search` + +This action allows you to emulate opening the search screen and entering the search keyword. + +| Data attribute | Optional | Description | Example | +| ---------------------- | -------- | ----------- | ------- | +| `entity_id` | yes | The entities to search on. | media_player.roku +| `keyword` | no | The keyword to search for. | Space Jam + +## Tips and tricks + +### Obtaining application IDs + +The currently active application ID can be found in the `Active App ID` diagnostic sensor. + +Alternatively, you can make a manual HTTP request (GET) to `http://ROKU_IP:8060/query/apps`, in either your browser or terminal, to retrieve a complete list of installed applications in XML format. + +### Obtaining content IDs Content IDs are unique to each streaming service and vary in format but are often part of the video webpage URL. Here are some examples: @@ -244,13 +303,14 @@ Content IDs are unique to each streaming service and vary in format but are ofte | Spotify | 22297 | open.spotify.com/playlist/5xddIVAtLrZKtt4YGLM1SQ | spotify:playlist:5xddIVAtLrZKtt4YGLM1SQ | playlist | YouTube | 837 | youtu.be/6ZMXE5PXPqU | 6ZMXE5PXPqU | live -## Actions +## Known limitations -### Action `roku.search` +Roku has been known to remove or restrict local control functionality as part of major Roku OS upgrades. As such devices may become less functional after an upgrade. -This action allows you to emulate opening the search screen and entering the search keyword. +Roku channels, such as YouTube, are maintained by third-parties and as such the availability of features like Content Deeplinking are subject to change without notice. -| Data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------- | ------- | -| `entity_id` | yes | The entities to search on. | media_player.roku -| `keyword` | no | The keyword to search for. | Space Jam +## Removing the integration + +This integration can be removed by following these steps: + +{% include integrations/remove_device_service.md %} From 3b675b2267b3f876224f931e3ce8b0dc0dc81f97 Mon Sep 17 00:00:00 2001 From: Arie Catsman <120491684+catsmanac@users.noreply.github.com> Date: Tue, 10 Dec 2024 07:57:03 +0100 Subject: [PATCH 128/169] enphase envoy docs quality improvement (#36128) * enphase envoy docs quality improvement * apply coderabbitai comments * tweaks --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/enphase_envoy.markdown | 203 ++++++++++++++++---- 1 file changed, 169 insertions(+), 34 deletions(-) diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index 42ce8b4b916..f6cf96847ee 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -23,19 +23,64 @@ ha_platforms: ha_integration_type: integration --- -An integration for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy-and-combiner) solar energy gateway. This integration works with older models that only have production metrics (ie. Envoy-C) and newer models that offer both production and consumption metrics (ie. Envoy-S). +The **Enphase Envoy** {% term integration %} is used to integrate with the [Enphase IQ Gateway](https://enphase.com/en-us/products-and-services/envoy-and-combiner), a communication device for [Enphase](https://enphase.com/homeowners) solar inverters and batteries. In this documentation, as well as in integration entity names, the Enphase IQ Gateway is commonly referred to as `Envoy`, a name from the conception times of this integration and retained for its compact format. + +## Supported devices + +This integration works with: + +- Older and newer Envoy models that only have production metrics (such as Envoy-R (LCD), Envoy-S (not metered)) +- Newer Envoy models that offer both production and consumption metrics (such as Envoy-S Metered equipped with CT). +- Various Enphase IQ Combiner products that have an embedded Envoy, it will show-up in the same way as the stand-alone one. + +## Unsupported devices + +This integration does not work with: + +- Older Envoy models running firmware before 3.9 which lack a REST API. ## Prerequisites -- The Envoy must be configured and commissioned. -- The Envoy must be on your local network with IPV4 connectivity from Home Assistant. -- Envoy firmware version 3.9 or newer. -- With Envoy firmware 7 and greater +- The Envoy must be configured and commissioned. +- The Envoy must be on your local network with IPV4 connectivity from Home Assistant. +- Envoy firmware version 3.9 or newer. +- With Envoy firmware 7 and greater - an Enlighten cloud username and password. - Home Assistant 2023.9 or newer. {% include integrations/config_flow.md %} +### Required Manual input + +The configuration of an individual Envoy requires you to enter the following information: + +{% configuration_basic %} + +Host: + description: "The name or IP address of the Envoy to configure.
    Will be pre-filled if the Envoy was auto-discovered" +Username: + description: "For firmware version 7.0 and later, enter your Enlighten cloud username
    For firmware before 7.0, enter username *installer* without a password." +Password: + description: "For firmware version 7.0 and later, enter your Enlighten cloud password
    For firmware before 7.0, with username *installer*, leave blank." +{% endconfiguration_basic %} + +{% include integrations/option_flow.md %} + +Options to enable/disable are listed below. Neither of these are set by default nor need to be set for proper functioning of the integration. Setting these options is only required in described circumstances. + +{% configuration_basic %} +Collect test fixture data in diagnostics report: + description: "No/Yes
    When new features are requested or firmware is upgraded, it can happen that existing test fixtures no longer cover all test cases and new ones are needed. You may be requested to provide data for such test fixtures. If so, and you are willing to provide the data, setting this option enables the collection of test data as part of the [diagnostics report](#fixtures)." +Always use a new connection when requesting data from the Envoy: + description: "No/Yes
    Some older Envoy firmware may exhibit connection issues when using the default keep-alive connection and report failures. When set, this option disables the use of keep-alive and builds a new connection at each data request. This makes the communication more reliable for these firmware versions. Reported for the Envoy-R, but may apply to other older firmware versions as well." +{% endconfiguration_basic %} + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} + ## Capabilities This integration will offer various sensors depending on the configuration of your Enphase system. Sensors are available for the following: @@ -111,9 +156,13 @@ When the mode entity is set to standard, you can simply set the state of the rel When the relay mode is set to battery level, the relays will turn on and off based on the remaining battery level of your Encharge batteries. Two number entities are available to control the cutoff and restore levels for the relays. When the battery level drops below the cutoff level, the relays will turn off. When the battery level rises above the restore level, the relays will turn back on. -## Polling interval +## Data updates -The default polling interval is 60 seconds. To customize the polling interval, refer to [defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval). Specify one single entity from the envoy device as target of the action using the `+ choose entity` button. Updating one entity will update all entities of the Envoy and the related devices like the inverters; there is no need to specify multiple or all entities or add (all) inverter entities. When using multiple Envoys, add one entity for each envoy as targets or create separate custom polling intervals with a single entity as needed. +The integration collects data by default every 60 seconds. To customize the collection interval, refer to [defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval). Specify one single entity from the envoy device as target of the action using the `+ choose entity` button. Updating one entity will update all entities of the Envoy and the related devices like the inverters; there is no need to specify multiple or all entities or add (all) inverter entities. When using multiple Envoys, add one entity for each envoy as targets or create separate custom polling intervals with a single entity as needed. + +Envoy installations without installed CT, collect individual solar inverter data every 5 minutes. This collection does not occur for each inverter at the same time in the 5-minute period. Shortening the collection interval will at best show updates for individual inverters quicker, but not yield more granular data. + +With installed CT, data granularity increases and shortening the collection interval can provide more details. The Envoy, however, has no unlimited resources and shortening the collection interval may result in dropped connections, Envoy freeze or restarts. It will require some step-wise tuning for each individual situation. ## Credentials or device IP address update @@ -135,33 +184,121 @@ This integration provides several values suitable for the energy dashboard: [^5]: Only applies when using Envoy S Metered / IQ Gateway Metered / IQ Combiner with installed and configured storage / battery CT. -## Configure +## Actions -The integration provides a `configure` menu to configure the following options: +Available actions are: `switch.turn_on`, `switch.turn_off`, `switch.toggle`, [`number.set_value`](#action-numberset_value), [`select.select`](#action-selectselect) -- Collect test fixture data in [diagnostics report](#diagnostics) - No/Yes -- Always use a new connection when requesting data from the Envoy - No/Yes - - Some older Envoy firmware may exhibit connection issues when using the, by default enabled, keep-alive connection and report failures. When set, this option disables the use of keep-alive and builds a new connection at each data request. This makes the communication more reliable for these firmware versions. Reported for the Envoy-R but may apply to other older firmware versions as well. +### Action `switch.turn_on`/`switch.turn_off`/`switch.toggle` -## Debug logs and diagnostics +These actions turn on, off or toggle -This integration provides debug logs and diagnostics reports as described in the [Home Assistant troubleshooting pages](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics). +- the Enpower device switches `grid_enabled`, `charge_from_grid` +- the [Enpower load shedding relays](#enpower-load-shedding-relays) switch. -### Debug log +| Data attribute | Optional | Description | +| - | - | - | +| `entity_id` | no | Name(s) of entities. For example, `switch.enpower_12345678901001_grid_enabled`. | -When experiencing issues during the use of the integration, enable the debug log for the Envoy / IQ Gateway. This will add details on the data collection to the Home Assistant log file. Leave the debug log enabled long enough to capture the occurrence of the issue. If the issue is intermittent, this may take a while and it may grow the log file quite a bit. +Example: -If you're expecting features to show but they are not shown, reload the integration while debug logging is enabled. -When this integration is loaded, it will scan the Envoy / IQ Gateway for available features and configure these as needed. Following this initial scan, only data for the found features is collected. Performing a reload with debug enabled results in the debug log containing the initial full scan to assist with analyzing any missing features. Some features are disabled by default, and you need to enable them if you want them to show. Verify this before starting a debug session. +```yaml +action: switch.toggle +target: + entity_id: + - switch.enpower_12345678901001_grid_enabled +data: {} -The debug log will show all communication with the Envoy / IQ Gateway. Lines starting with entities are log entries for the integration: +action: switch.turn_on +data: {} +target: + entity_id: + - switch.no2 + - switch.nc2 +``` + +### Action `number.set_value` + +This action changes the setting for the Enpower `Reserve battery level`. + +| Data attribute | Optional | Description | +| - | - | - | +| `entity_id` | no | Name(s) of entities, e.g., `number.enpower_12345678901001_reserve_battery_level`. | +| `value` | no | The target value between 0 and 100 to set Enpower reserve battery level to. | + +Example: + +```yaml +action: number.set_value +target: + entity_id: number.enpower_12345678901001_reserve_battery_level +data: + value: "25" +``` + +### Action `select.select` + +This action changes the: + +- Relays relay_mode, grid_action, micro_grid_action or generator_action +- Battery storage mode + +| Data attribute | Optional | Description | +| - | - | - | +| `entity_id` | no | Name(s) of entities. For example, `select.nc2_generator_action`. | +| `option` | no | For relay modes: `powered`, `not_powered`, `schedule`, `none`.
    For storage modes: `backup`, `self_consumption`, `savings` | + +Example: + +```yaml +action: select.select_option +target: + entity_id: + - select.nc2_generator_action +data: + option: not_powered + +action: select.select_option +target: + entity_id: + - select.enpower_12345678901001_storage_mode +data: + option: backup +``` + +{% note %} +Technically `select.first`, `select.last`, `select.previous`, `select.next` are available as well, but as there's no logical sequence in the values to select, their use is not advocated. +{% endnote %} + +## Know issues and limitations + +- [Envoy firmware](https://enphase.com/installers/resources/documentation/communication?&f[0]=document%3A217) versions come with changing behavior, features and issues. Firmware is pushed to the Envoy by Enphase, while 'not always communicated in detail upfront'. This may result in sudden changes in the Envoy behavior and is always accompanied by an outage while Envoy is being updated. +- As of Envoy firmware 8.2.4225, the Envoy no longer supports setting battery modes, enabling/disabling charging from the grid, or changing reserve battery level through the local REST API used by HA. Until a resolution is found, you will need to use the Enphase APP to control these. + +## Troubleshooting + +- The Envoy should not be both on your local LAN and local Wi-Fi at the same time. This may cause auto-discovery to switch back and forth between the interfaces resulting in brief outages every 30 minutes. If you experience these frequent brief outages, make sure only 1 interface is used. + +### Debug logs and diagnostics + +This integration provides debug log and {% term diagnostics %} report as described in the [Home Assistant troubleshooting pages](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics). + +#### Debug log + +When experiencing issues during the use of the integration, enable the debug log for the Envoy. Then restart the integration. This will add details on the data collection to the Home Assistant log file. Leave the debug log enabled long enough to capture the occurrence of the issue. If the issue is intermittent, this may take a while and it may grow the log file quite a bit. + +If you're expecting features to show but they are not shown, make sure to reload the integration while debug logging is enabled. +When this integration is loaded, it will scan the Envoy for available features and configure these as needed. Following this initial scan, only data for the found features is collected. Performing a reload with debug enabled results in the debug log containing the initial full scan to assist with analyzing any missing features. Some features are disabled by default, and you need to enable them if you want them to show. Verify this before starting a debug session. + +Once the issue occurred, stop the debug logging again (_download of debug log file will start automatically_). When reporting the issue, include the debug log file as well as a [{% term diagnostics %}](#diagnostics) file. + +The debug log will show all communication with the Envoy / IQ Gateway. Lines starting with below examples are log entries for the integration: ```txt 2024-03-07 11:20:11.897 DEBUG (MainThread) [homeassistant.components.enphase_envoy -2024-03-07 11:20:11.898 DEBUG (MainThread) [pyenphase.envoy +2024-03-07 11:20:11.898 DEBUG (MainThread) [pyenphase ``` -Below a typical data request / reply sequence in the log file. These lines will contain the data details received from the Envoy / IQ Gateway. +Below a typical data request / reply sequence in the log file. These lines will contain the data details received from the Envoy. ```txt ... [pyenphase.envoy] Requesting https://192.168.1.2/ivp/meters with timeout ... @@ -174,16 +311,12 @@ The end of a collection cycle is marked by: ... [homeassistant.components.enphase_envoy.coordinator] Finished fetching Envoy 123456 data in 1.234 seconds (success: True) ``` -### Diagnostics +#### Diagnostics -The diagnostics file is a JSON file and includes a `data` section with the details for this integration. The file can be viewed with any text editor[^4]. The data section has up to 6 major subsections which reflect how the integration is set up and data is used. - -When new features are requested or firmware is upgraded, it can happen that existing test fixtures no longer cover all test cases and new ones are needed. It may happen, you are requested to provide data for such test fixtures. The diagnostics report can provide the needed information to build such test fixtures. By default, the diagnostics report does not include this data. To include the test fixture data, enable this option in the integration [configure](#configure) menu. When this option is enabled, the creation of the diagnostic report may take longer as it will perform a scan of the Envoy. When done creating the report, clear the option to prevent this delay the next time a diagnostic report is created. The option has no impact on the integration's performance, only on the time it takes to create the report. +The {% term diagnostics %} data file is a JSON file and includes a `data` section with the details for this integration. The file can be viewed with any text editor. The data section has up to 6 major subsections which reflect how the integration is set up and data is used. Include the file when reporting issues. Below the 6 subsections, each collapsed. -[^4]: Use of a JSON-aware viewer is not required but makes inspecting the file easier. - ```JSON "data": { "config_entry": { ... @@ -202,26 +335,28 @@ Below the 6 subsections, each collapsed. } ``` -#### Config entry +##### Config entry Shows the integration configuration created when the integration was added. -#### Envoy properties +##### Envoy properties Shows the conclusions of the initial data scan and what features were identified, including the detected firmware version in the Envoy. -#### Raw data +##### Raw data Shows the data collected from the Envoy during the last data scan when the diagnostic report was created. If in doubt about data shown in the dashboards, consult this section to find the raw data sent by the Envoy. The integration is not modifying this data, it's just providing the data to the entities. -#### Envoy model data +##### Envoy model data Shows the data of the Envoy extracted from the raw_data into Envoy class data used by the Home Assistant integration. This is a subset of the full raw dataset. -#### Envoy entities by device +##### Envoy entities by device Shows all entities created by the integration based on the findings of the initial scan, grouped by device. Entity state based on the last data collection cycle is included. State values here come from the Envoy model data and are the values visible in the dashboards. -#### Fixtures +##### Fixtures -The data to build test fixtures from. This section is only available when the option to provide this is enabled in the integration [configuration](#configure). Information is collected from the envoy in a scan for known and needed endpoints. Data is collected to enable the developers to build test fixtures from it. +The data to build test fixtures from. This section is only available when the option to Collect test fixture data is enabled in the integration [options](#options). + +___ From 378c353a1df3048e6bbf9e4b630ea2409175d3f4 Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Tue, 10 Dec 2024 08:04:01 +0100 Subject: [PATCH 129/169] Update Fronius documentation for new quality scale rules (#36033) * Update Fronius documentation * add ecample * simplify example * remove copy&past relict * further improvements * fix link * Tiny tweaks --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/fronius.markdown | 131 +++++++++++++++++++++++--- 1 file changed, 116 insertions(+), 15 deletions(-) diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index 26b3b1a740c..edd4aaf32a5 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -19,13 +19,45 @@ ha_integration_type: integration The Fronius integration polls a [Fronius](https://www.fronius.com/) solar inverter or datalogger for details of a Fronius SolarNet setup and integrate it in your Home Assistant installation. +## Supported devices + +The integration supports all inverters with integrated Datamanager or external "Datalogger Web" providing the Fronius SolarAPI (JSON) interface of version `v0` or `v1`. This includes among others: + +- Agilo +- Eco +- Galvo +- Gen24 +- IG Plus +- Primo +- Symo +- Symo Hybrid +- Tauro + +Devices connected to those inverters or dataloggers are supported as well. + +- Energy meter (Fronius Smart Meter or S0 meter connected to the inverter) +- Ohmpilot +- Storage + ## Prerequisites You should either set a static IP or assign a static DHCP lease for the Fronius device, or alternatively access it through the local DNS name if your network is configured accordingly. -For Gen24 devices (delivered with Firmware >= 1.14.1) make sure to activate "Solar API" in the inverters web interface. + +{% note %} +For Gen24 devices (delivered with Firmware >= 1.14.1) make sure to activate "Solar API" in the inverters web interface. For older devices, Solar API should be enabled by default. +{% endnote %} + +## Configuration {% include integrations/config_flow.md %} +{% configuration_basic %} +Host: + description: "The host name or the IP address of the device." + required: true + type: string +{% endconfiguration_basic %} + ## Monitored data Each device adds a set of sensors to Home Assistant. @@ -34,14 +66,16 @@ Each device adds a set of sensors to Home Assistant. - Logger information - General information about the Fronius Datalogger. Not available on "Gen24" devices. Updated every hour. + General information about the Fronius Datalogger. Not available on "Gen24" devices. + Updated every hour. - Serial number, software and hardware platforms - Current price of energy consumed and returned to grid and the CO₂ factor as set in the Dataloggers settings - Power flow - Cumulative data of the SolarNet system. Updated every 10 seconds. + Cumulative data of the SolarNet system. + Updated every 10 seconds. - Energy produced on the current day, year and total produced energy - Power fed to the grid (if positive) or consumed from the grid (if negative) @@ -53,31 +87,34 @@ Each device adds a set of sensors to Home Assistant. - Inverter - Energy produced on the current day, year and total produced energy, power, current, voltage, frequency and status for an individual inverter. Updated every minute. + The energy produced on the current day, year (not for Gen24 devices), and total produced energy, power, current, voltage, frequency, and status for an individual inverter. + Updated every minute. - Meter - Detailed information about power, current and voltage, if supported split among the phases. Updated every minute. + Detailed information about power, current, and voltage, if supported, split among the phases. + Updated every minute. - Ohmpilot - Detailed information about energy, power, and temperature of your Ohmpilots. Updated every minute. + Detailed information about energy, power, and temperature of your Ohmpilots. + Updated every minute. - Storage - Detailed information about current, voltage, state, cycle count, capacity and more about installed batteries. Updated every minute. + Detailed information about current, voltage, state, cycle count, capacity and more about installed batteries. + Updated every minute. -Note that some data (like photovoltaic production) is only provided by the Fronius device when non-zero. -When the integration is added at night, there might be no sensors added providing photovoltaic related data. Entities will be added on sunrise, when the Fronius devices begin to provide more data. - -When an endpoint is not responding correctly the update interval will increase to 10 minutes (3 minutes for power flow) until valid data is received again. This reduces the amount of requests to Fronius devices using night mode (shutdown when no PV power is produced). +When an endpoint is not responding correctly the update interval will increase to 10 minutes (3 minutes for power flow) until valid data is received again. This reduces the number of requests to Fronius devices using night mode (shutdown when no PV power is produced). ## Energy dashboard +Recommended [energy dashboard](/docs/energy/) configuration: + - For _"Solar production"_: - If no battery is connected to an inverter: Add each inverters `Energy total` entity. - - If a battery is connected to an inverter: Use [Riemann sum](/integrations/integration/) over `Power photovoltaics` entity (from your `SolarNet` device). -- _"Battery systems"_ energy values aren't supported directly by the API. Use [Riemann sum](/integrations/integration/) to integrate `Power battery charge` and `Power battery discharge` into energy values (kWh). + - If a battery is connected to an inverter: Use [Riemann sum](/integrations/integration/) over `SolarNet Power photovoltaics` entity. +- _"Battery systems"_ energy values aren't supported directly by the Solar API. Use [Riemann sum](/integrations/integration/) to integrate `SolarNet Power battery charge` and `SolarNet Power battery discharge` into energy values (kWh). - For _"Devices"_ use the Ohmpilots `Energy consumed` entity. The energy meter integrated with Fronius devices can be installed (and configured) in two different installation positions: _"feed in path"_ (grid interconnection point) or _"consumption path"_. @@ -93,9 +130,73 @@ Recommended energy dashboard configuration for meter location in feed in path: Recommended energy dashboard configuration for meter location in consumption path: -- Use [Riemann sum](/integrations/integration/) to integrate `Power grid import` and `Power grid export` entities into energy values (kWh). -- Use these energy entities for `Grid consumption` and `Return to grid` in the energy dashboard configuration. +1. Use [Riemann sum](/integrations/integration/) to integrate `SolarNet Power grid import` and `SolarNet Power grid export` entities into energy values (Wh or kWh). +2. Use these energy entities for `Grid consumption` and `Return to grid` in the energy dashboard configuration. + +## Example automation + +The following {% term automation %} toggles a switch when the solar production crosses certain thresholds: + +```yaml +description: "Turn on switch when PV power is above 1000 W and turn it off below 50 W." +mode: single +triggers: + - trigger: state + entity_id: + - sensor.solarnet_power_photovoltaics +conditions: [] +actions: + - choose: + - conditions: + - condition: numeric_state + entity_id: sensor.solarnet_power_photovoltaics + above: 1000 + sequence: + - action: switch.turn_on + metadata: {} + data: {} + target: + entity_id: switch.swtest + - conditions: + - condition: numeric_state + entity_id: sensor.solarnet_power_photovoltaics + below: 50 + sequence: + - action: switch.turn_off + metadata: {} + data: {} + target: + entity_id: switch.swtest + +``` ## Note Fronius often provides firmware updates for the datamanager interfaces and the devices in their system, it's recommended to check and apply them regularly. This integration relies on functionality present in rather recent firmware. + +## Known limitations + +The Solar API used by this integration is read-only. It does not provide any means to control the Fronius devices. Most Fronius devices however do support Modbus TCP directly, so the [Modbus integration](/integrations/modbus/) could be leveraged to control the devices from Home Assistant. Details about Modbus Registers can be found in the devices documentation or at the [Fronius website](https://www.fronius.com/). + +## Troubleshooting + +### Can’t setup the device + +- Make sure the device is not in a power-saving mode when currently not producing energy. +- Make sure the device is connected to the network and is reachable from the Home Assistant instance. +- Check the device's settings to ensure that the **Solar API** is enabled. + +### Some devices are missing after setup or restart of Home Assistant + +- Make sure inverters are not in a power-saving mode when currently not producing energy - or wait until they start producing energy. + +### Some entities are missing after setup + +Some data, like photovoltaic production, is only provided by the Fronius device when non-zero. +When the integration is added at night, there might be no entities added providing photovoltaic related data. Entities will be added on sunrise, when the Fronius devices begin to provide more data. + +## Remove integration + +This integration can be removed by following these steps: + +{% include integrations/remove_device_service.md %} From 121f122c6bf3470d1dfcb65b656a316e64089dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Notin?= Date: Tue, 10 Dec 2024 10:56:36 +0100 Subject: [PATCH 130/169] Describe that conditions of an 'if' are 'and' (#36270) --- source/_docs/scripts.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 8d4b5d22223..7025cf68675 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -576,9 +576,8 @@ It contains the following fields: ## If-then -This {% term action %} allow you to conditionally (`if`) run a sequence of actions (`then`) -and optionally supports running other sequence when the condition didn't -pass (`else`). +This {% term action %} allows you to conditionally (`if`), based on or more [conditions](/docs/scripts/conditions/) (which are `and` combined), +run a sequence of actions (`then`) and optionally supports running other sequence when the condition didn't pass (`else`). ```yaml script: From 45086b4f48468914ec126fff7d471e0e1ed0baa7 Mon Sep 17 00:00:00 2001 From: Darren Griffin Date: Tue, 10 Dec 2024 18:39:00 +0000 Subject: [PATCH 131/169] Add voice livestream card (#36278) * Add voice livestream thumbnail * Undo replaced image * Add livestream thumbnail * Add voice chapter 8 livestream card * Improved target="_blank" issue * Added aria-label --- source/_includes/custom/news.html | 23 +++++++++++++++++++ source/images/frontpage/feature-voice-c8.jpg | Bin 0 -> 22880 bytes 2 files changed, 23 insertions(+) create mode 100644 source/images/frontpage/feature-voice-c8.jpg diff --git a/source/_includes/custom/news.html b/source/_includes/custom/news.html index f04939719e5..81983415327 100644 --- a/source/_includes/custom/news.html +++ b/source/_includes/custom/news.html @@ -73,6 +73,29 @@

    @@ -164,7 +164,7 @@ Assist aims to support more languages than other voice assistants, but this is s
    Not supported
    Needs more work
    Usable
    -
    Complete
    +
    Fully supported
    From 892c4c9a334d970219f1215e8149203a1d35f2d0 Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 13 Dec 2024 15:30:02 +0100 Subject: [PATCH 161/169] Plugwise reorder and apply config suggestions (#36087) Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/plugwise.markdown | 35 ++++++++++++++------------ 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 59d98cc8e7a..b72b652da89 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -44,11 +44,26 @@ Platforms available - depending on your Smile and setup include: - `switch` (for Plugs connected to Adam, or Circles and Stealths connected to a Stretch) -The password can be found on the bottom of your Smile or Stretch, the ID, it should consist of 8 characters. To find your IP address use the Plugwise App: +## Pre-requisites - - Open the Plugwise App and choose the 'Settings'-icon (☰) and choose 'HTML-interface'. - - Go to the (lower) 'Settings'-icon (☰) and choose 'Preferences'. - - Choose 'System' then 'Networking' and your IP address will be shown. +The Plugwise Smile(s) in your network will be automatically discovered and shown on the integrations dashboard. All you need is the Smile ID as its password, which is an 8-character string printed on the sticker on the bottom of your Smile. Repeat this for each individual Smile. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +Host: + description: "The hostname or IP address of your Smile. For example: `192.168.1.25`. You can find it in your router or in the Plugwise app using the **Settings** icon (☰) -> **System** -> **Network**. If you are looking for a different device in the Plugwise App, on the main screen first select **Gateways** -> the Smile of your choice, and then follow the previous instruction. Normally, the Smile(s) are automatically discovered, and you don't have to provide the hostname or IP address." +Username: + description: "Username to log in to the Smile. This should be just `smile` - or `stretch` for a Stretch." +Password: + description: "This is the password (i.e. Smile ID) printed on the sticker on the back of your Smile (i.e. Adam, Smile-T, or P1) and should be 8 characters long." +{% endconfiguration_basic %} + +### Further configuration + +For a thermostat, the active schedule can be deactivated or reactivated via the climate card. Please note, that when no schedule is active, one must first be activated in the Plugwise App. Once that has been done, the Plugwise Integration can manage future operations. + +Auto means the schedule is active, and Heat means it's not active. The active thermostat schedule can be changed via the connected thermostat select entity. Please note that only schedules with two or more schedule points will be shown as select options. ## Entities @@ -74,18 +89,6 @@ This integration follows standard integration removal. No extra steps are requir This will also remove all connected Adam devices (such as Anna, Tom or Lisa) or connected Adam/Stretch plugs. -## Configuration - -The Plugwise Smile(s) present in your network will be automatically detected via Zeroconf discovery and will be shown on the Integrations-page. To set up an integration, click the "CONFIGURATION" button on the discovered integration and you will be presented with a dialog requesting your Smile password. After you click submit, you will have the opportunity to select the area(s) where individual Smile appliances are located. The username `smile` is shown as a default, when configuring your Stretch change this to `stretch` accordingly. - -Repeat the above procedure for each Smile gateway (i.e., if you have an Adam setup and a P1 DSMR you'll have to add two integrations). - -Please note: when you have an Anna and an Adam, make sure to only configure the Adam integration. You can press the "IGNORE" button on the Anna integration to remove this integration. In case you need to rediscover the Anna integration, make sure to click the "STOP IGNORING" button on the Plugwise integration first, available via "show ignored integrations". - -For a thermostat, the active schedule can be deactivated or reactivated via the climate card. Please note, that when no schedule is active, one must first be activated in the Plugwise App. Once that has been done the Plugwise Integration can manage future operations. - -Auto means the schedule is active, Heat means it's not active. The active thermostat schedule can be changed via the connected thermostat select-entity. Please note: that only schedules that have two or more schedule points will be shown as select options. - ### Actions #### Update Smile data From 66fad8bb43d6604de8fe4eb883875a4bdb68971c Mon Sep 17 00:00:00 2001 From: Buck DeFore Date: Fri, 13 Dec 2024 19:01:04 -0500 Subject: [PATCH 162/169] Update airgradient.markdown (#36338) Add a link to the firmware page --- source/_integrations/airgradient.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/airgradient.markdown b/source/_integrations/airgradient.markdown index a760e9b67e8..10e6e9eecff 100644 --- a/source/_integrations/airgradient.markdown +++ b/source/_integrations/airgradient.markdown @@ -27,7 +27,7 @@ ha_zeroconf: true The AirGradient integration will fetch data from your [AirGradient devices](https://www.airgradient.com/). {% important %} -In order for the device to be set up or discovered by Home Assistant, the firmware version should be at least 3.1.1. +In order for the device to be set up or discovered by Home Assistant, the [firmware](https://www.airgradient.com/documentation/firmwares) version should be at least 3.1.1. {% endimportant %} {% include integrations/config_flow.md %} From 013f5e69a7be8eef7b16029d460f8de7bc060720 Mon Sep 17 00:00:00 2001 From: jb101010-2 Date: Sat, 14 Dec 2024 14:17:57 +0000 Subject: [PATCH 163/169] Suez_water: add removal instructions --- source/_integrations/suez_water.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index 15b4b09a748..8dd751463fe 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -39,3 +39,9 @@ Extra attributes of `Water usage yesterday` sensor: - Highest monthly consumption - Last year total consumption - Current year total consumption + +## Remove integration + +This integration can be removed by following these steps: + +{% include integrations/remove_device_service.md %} From 16b9a0298b627f840a6ddbd14216e5c09afcf7d5 Mon Sep 17 00:00:00 2001 From: tronikos Date: Sun, 15 Dec 2024 02:02:55 -0800 Subject: [PATCH 164/169] Document a limitation of Google Assistant SDK (#36358) --- source/_integrations/google_assistant_sdk.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown index c3c2a7e1dda..62a1fb1c1be 100644 --- a/source/_integrations/google_assistant_sdk.markdown +++ b/source/_integrations/google_assistant_sdk.markdown @@ -140,6 +140,7 @@ The easiest way to check if the integration is working is to check [My Google Ac - If you see the issued commands in [My Google Activity](https://myactivity.google.com/myactivity), the integration is working fine. If the commands don't have the expected outcome, don't open an issue in the Home Assistant Core project or the [underlying library](https://github.com/tronikos/gassist_text). You should instead report the issue directly to Google [here](https://github.com/googlesamples/assistant-sdk-python/issues). Examples of known Google Assistant API issues: - Media playback commands (other than play news, play podcast, play white noise, or play rain sounds) don't work. - Routines don't work. + - Google Assistant automations that use `assistant.event.OkGoogle` as a starter cannot be triggered. - Broadcast to specific rooms often doesn't work for non-English languages. - Commands that need to verify your identity through voice match do not work. From a22e500eab8d6ff7f952b8283219dc1f1bf378ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Strandberg?= Date: Mon, 16 Dec 2024 04:55:29 +0100 Subject: [PATCH 165/169] Add an example automation (#36363) Thank you! --- source/_integrations/myuplink.markdown | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/source/_integrations/myuplink.markdown b/source/_integrations/myuplink.markdown index ba91c81f294..3eee099cf57 100644 --- a/source/_integrations/myuplink.markdown +++ b/source/_integrations/myuplink.markdown @@ -68,7 +68,7 @@ The integration configuration will require the **Client ID** and **Client Secret The integration supports all heat-pump devices that can be connected to the myUplink cloud service. See [Works with myUplink](https://myuplink.com/legal/works-with/en). However, the representation in Home Assistant depends on how and to what extent the manufacturer has implemented the service. -## Use cases / Examples +## Use cases Common use cases include: @@ -77,6 +77,27 @@ Common use cases include: - **Automation**: Adjust the temperature curve offset during holiday mode - **Analytics**: View long-term statistics and graphs for the relevant sensors +## Example + +Automation that will send a notification to a smartphone when the hot water reserve is getting low. Note that actual entity name varies between models of heat pumps. You will have to adapt the yaml code to your own installation. + +```yaml +automation: + alias: Notify on low hot water reserve + triggers: + - trigger: numeric_state + entity_id: + - sensor.your_pump_hot_water_charging_bt6 + below: 42 + actions: + - action: notify.mobile_app_your_device + metadata: {} + data: + message: Hot water reserve is getting low. + title: Water heater + mode: single +``` + ## Data updates The integration will poll the API for data every 60 seconds. This polling interval is designed to work within the rate limits of myUplink APIs while providing timely updates. From fc81f6d1ec271445d6f4069b2576a9fe60691581 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:03:02 +0100 Subject: [PATCH 166/169] build(deps-dev): bump sorbet-runtime from 0.5.11691 to 0.5.11694 (#36371) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5bdec717775..fe43a33631c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -151,7 +151,7 @@ GEM rack-protection (= 4.1.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11691) + sorbet-runtime (0.5.11694) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From a4e72007c565a945e02e6b27aacdbef3df8478fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:03:17 +0100 Subject: [PATCH 167/169] build(deps-dev): bump rexml from 3.3.9 to 3.4.0 (#36372) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index fe43a33631c..169eec10e89 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -111,7 +111,7 @@ GEM rbs (3.7.0) logger regexp_parser (2.9.3) - rexml (3.3.9) + rexml (3.4.0) rouge (4.5.1) rubocop (1.69.2) json (~> 2.3) From bd7cef6dd9669a94a7e943700615bd2fbbef85b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 08:04:12 +0100 Subject: [PATCH 168/169] build(deps-dev): bump rubocop-ast from 1.36.2 to 1.37.0 (#36373) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 169eec10e89..f5b3458f2e6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -123,7 +123,7 @@ GEM rubocop-ast (>= 1.36.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.36.2) + rubocop-ast (1.37.0) parser (>= 3.3.1.0) ruby-lsp (0.22.1) language_server-protocol (~> 3.17.0) From d9e8f7f90a62a4a7f04d09adbbc0173041ed529d Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Mon, 16 Dec 2024 01:32:15 -0600 Subject: [PATCH 169/169] Improve HEOS docs with quality-scale items (#36336) --- source/_integrations/heos.markdown | 68 +++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown index 4863edb87cc..4955bf6cd81 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -15,24 +15,43 @@ ha_platforms: ha_integration_type: integration --- -The HEOS integration adds support for a [HEOS](https://www.denon.com/en-gb/category/heos/) System in Home Assistant. +The HEOS {% term integration %} is used to connect a [HEOS](https://www.denon.com/en-gb/category/heos/) System to Home Assistant. HEOS is a wireless audio ecosystem +that allows you to stream music to HEOS Built-in products from [Denon](https://www.denon.com/en-us/category/heos/) and [Marantz](https://www.marantz.com/en/world-of-marantz/heos-built-in.html). + +Add this integration to automate playback and group configuration of HEOS-capable products. For example, when a scene is activated, set the volume and play a specific Playlist on your receiver. ## Supported functionality - [Media Player](/integrations/media_player) {% term entities %} for each HEOS-capable product, including speakers, amps, and receivers (Denon and Marantz) - Viewing the currently playing media -- Controlling play mode (i.e. play/pause), volume, mute, and shuffle +- Controlling play mode (e.g., play/pause), volume, mute, and shuffle - Playing HEOS favorites, playlists, quick selects, URLs -- Setting the source to physical inputs (i.e. `AUX1`) +- Setting the source to physical inputs (e.g., `AUX1`) - Grouping and ungrouping HEOS devices - Clearing playlists +## Prerequisites + +1. One or more [HEOS-capable products](/integrations/heos#supported-devices). +2. Optionally, a [HEOS Account](https://support.denon.com/app/answers/detail/a_id/17041) to access music services, playlists, and favorites. + {% include integrations/config_flow.md %} {% note %} -This integration only connects to a single {% term host %} to access the entire HEOS System on the network. Select, or enter a host, that is connected to the LAN via wire or has the strongest wireless signal. +Only a single instance of the integration is needed to access the entire HEOS system on the network. It will only connect to a single {% term host %}. {% endnote %} +{% configuration_basic %} +Host: + description: "The hostname or IP address (e.g., \"192.168.1.2\") of your HEOS device. If you have more than one device, select, or enter a host, that is connected to the LAN via wire or has the strongest wireless signal." +{% endconfiguration_basic %} + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} + ## Playing media ### Play a favorite @@ -51,7 +70,7 @@ data: | ---------------------- | -------- | ------------------------------------------------------------------- | | `entity_id` | yes | `entity_id` of the player(s) | | `media_content_type` | no | Set to the value `favorite` | -| `media_content_id` | no | (i.e., `1`) or name (i.e., `Thumbprint Radio`) of the HEOS favorite | +| `media_content_id` | no | (e.g., `1`) or name (e.g., `Thumbprint Radio`) of the HEOS favorite | ### Play a playlist @@ -87,7 +106,7 @@ data: | ---------------------- | -------- | -------------------------------------------------------------------- | | `entity_id` | yes | `entity_id` of the player(s) | | `media_content_type` | no | Set to the value `quick_select` | -| `media_content_id` | no | The quick select number (i.e., `1`) or name (i.e., `Quick Select 1`) | +| `media_content_id` | no | The quick select number (e.g., `1`) or name (e.g., `Quick Select 1`) | ### Play a URL @@ -190,6 +209,21 @@ action: heos.sign_out data: {% raw %}{}{% endraw %} ``` +## Supported devices + +Denon and Marantz do not currently publish an inventory of HEOS-enabled devices, however, many receiver and hi-fi products began including HEOS since 2013. Consult your product model to confirm support: + +- Denon [online manuals](https://www.denon.com/en-us/online-manuals.html) and [product archive](https://www.denon.com/en-us/support/product-archive/) +- Marantz [online manuals](https://www.marantz.com/en-us/support/online-manuals.html) and [product archive](https://www.marantz.com/en-us/category/archive/) + +## Unsupported devices + +Denon and Marantz products before 2013 and non-network connected products (e.g., turntables and some CD players) do not support HEOS. + +## Data updates + +HEOS pushes data to Home Assistant via the local network when data and entity states change in real-time. + ## Known limitations - AVR receiver features, such as zone selection/control and power on/off, cannot be controlled through this integration. Use the [Universal Media Player](/integrations/universal/#denon-avr--heos) to combine AVR receiver functionality with this integration. @@ -198,21 +232,17 @@ data: {% raw %}{}{% endraw %} ## Troubleshooting -### Debugging +### Missing favorites -The HEOS integration will log additional information about commands, events, and other messages when the log level is set to `debug`. Add the relevant line below to the {% term "`configuration.yaml`" %} to enable debug logging: +#### Symptom: "IP_ADDRESS is not logged in to a HEOS account and will be unable to retrieve HEOS favorites..." -```yaml -logger: - default: info - logs: - homeassistant.components.heos: debug - pyheos: debug -``` +The message above is logged and the `source_list` attribute of the integration's media_player entities are empty. Attempting call the `media_player.play_media` action +for `favorite` and `playlist` will fail. -### Missing Favorites +##### Description -If the HEOS controller is not signed in to a HEOS account, HEOS favorites will not be populated in the media player source selection and the `media_player.play_media` action for `favorite` and `playlist` will fail. Additionally, the following warning will be logged at startup: -> IP_ADDRESS is not logged in to a HEOS account and will be unable to retrieve HEOS favorites: Use the 'heos.sign_in' action to sign-in to a HEOS account +The HEOS system is not logged in to a HEOS account. This occurs when the integration is first added, the HEOS account has changed (e.g. password reset), and sometimes after a firmware update. -To resolve this issue, use the `heos.sign_in` action to sign the controller into an account as documented above. This only needs to be performed once, as the controller will remain signed in while the account credentials are valid. +##### Resolution + +Use the [heos.sign_in action](/integrations/heos#action-heossign_in) to sign the HEOS system into a HEOS account. This only needs to be performed once, as the system will remain signed in while the account credentials are valid.
    - {% if page.ha_quality_scale == "silver" %}🥈 This is a great integration!
    {%- endif -%} - {% if page.ha_quality_scale == "gold" %}🥇 This is a solid integration!
    {%- endif -%} - {% if page.ha_quality_scale == "platinum" %}🏆 Best of the best!
    {%- endif -%} - {% if page.ha_quality_scale == "internal" %}🏠 Under core!
    {%- endif -%} - It scores {{page.ha_quality_scale}} on our
    quality scale + {% if page.ha_quality_scale == "bronze" %}🥉 Bronze quality
    {%- endif -%} + {% if page.ha_quality_scale == "silver" %}🥈 Silver quality
    {%- endif -%} + {% if page.ha_quality_scale == "gold" %}🥇 Gold quality
    {%- endif -%} + {% if page.ha_quality_scale == "platinum" %}🏆 Platinum quality
    {%- endif -%} + {% if page.ha_quality_scale == "internal" %}🏠 Internal integration
    {%- endif -%} + {% if page.ha_quality_scale == "legacy" %}💾 Legacy integration
    {%- endif -%} + {% if page.ha_quality_scale == "custom" %}📦 Custom integration
    {%- endif -%}