0.113: Automations & Scripts, and even more performance!
Another special, themed, release inbound!
It seems like @bdraco
This release is about: Automations & Scripts! Yes!!!
A long, long time bug with automation triggering has been resolved, but not
only that, @pnbruckner
Adding repeat, a chooser and running modes (with cool down possibilities as a side-effect).
I’ve been playing with these features on my home already and I’ve
changed/improved quite a few things. For real, @pnbruckner
Enjoy the release!
../Frenck
Ludeeus joins Nabu Casa
Today we’re happy to announce that @ludeeus
Ludeeus has been a core contributor for a long time working on the Supervisor
panel and different bits of the frontend. He is, however, mainly known as the
creator of the Home Assistant Community Store (HACS)
We’re looking forward to seeing what he can do now that he is able to focus full-time on Home Assistant.
Welcome @ludeeus
Automations & Scripts
This release brings changes to our automations and scripts. Before we start with
this all, please note, that the action
part of an automation is a script
sequence
.
So, all discussed below, apply to both scripts and automations.
Before diving in: All automation and script changes, have been driven by
@pnbruckner
Automations & Scripts: Bug fix
There has been an issue with our automations for a long time already, which you actually might have never noticed. It is kinda hard to explain, so this needs an example.
Consider the following automation:
automation:
- alias: "Example"
description: "On button press, turn on the light bulb for 10 seconds."
trigger:
- platform: state
entity_id: binary_sensor.button
to: "on"
action:
- service: light.turn_on
target:
entity_id: light.bulb
- delay:
seconds: 10
- service: light.turn_off
target:
entity_id: light.bulb
This automation turns on a light bulb when the button is pressed, and after 10 seconds, it turns off the light bulb again. A fairly basic automation, which does exactly what one would expect, except when a button is pressed twice.
So it takes 10 seconds for the bulb to turn off, what if you press the button again after 5 seconds?
Please, think about this for a moment…
What actually happened before 0.113, is that the light bulb would turn off immediately! Chances are, you didn’t expect that.
Let’s explain this: So the first button push, turns on the light, and the delay is active for 10 seconds. The second button push, done after 5 seconds, is actually not handled, however, it does cause the delay of the first run to cancel itself and continues to run the rest of the actions/sequence, causing the light to turn off immediately!
That bug, has been fixed. As of this release, the second button press wouldn’t do anything and the light will now turn off after 10 seconds, which the first button push has triggered.
Automations & Scripts: Running modes
With the above-mentioned bug fix, it now becomes possible to introduce new running modes for both scripts and automations. It allows you to control what happens if actions of a previous trigger are still running.
Considering the light bulb example in the bug fix paraph above, it shows
the default mode: single
, which means: Do not run and ignore the trigger
if a previous action of the same automation is still running.
Besides the default single
mode, the following modes are now available:
Mode | Description |
---|---|
single |
Do not start a new run, if running already. |
restart |
Start a new run, after stopping the previous run. |
queued |
Start a new run after all previous runs complete. |
parallel |
Start a new, independent, run in parallel with previous runs. |
Automation/script running modes visual explained.
For the queued and parallel modes, an additional parameter max
is available
to control the maximum number of runs that are awaiting each other. When
omitting this setting, it would default to 10.
To clarify a little more, remember the first example in the bug fix paragraph where the light bulb would turn on for 10 seconds after a button press?
This would make every button press within the 10 seconds, restart the countdown again:
automation:
- trigger:
- ...
mode: restart
action:
- ...
And this example, would turn on/off the light, for 10 seconds twice, if the button was pressed after 5 seconds.
automation:
- trigger:
- ...
mode: queued
action:
- ...
The modes are also available for automations and scripts in the frontend UI:
Screenshot of running modes in the frontend.
This is a powerful feature, which allows you to control how automations and scripts are run in ways you could not do before.
More information about the running mode can be found in the automations and scripts documentation.
Automations & Scripts: Repeats
A brand new action is made to allow for repeating (also called loops) part of your automations or scripts.
The new repeat feature can be used in three different ways:
- Counted repeat: Control how many times to repeat a sequence.
- While loop: Keep repeating as long the condition(s) is/are met.
- Repeat until: Runs at least once, and decides after that to repeat until the condition(s) is/are met.
For example, this would spam your phone with the same message 10 times:
# Send notification spam to phone
script:
phone_spam:
sequence:
repeat:
count: 10
sequence:
- service: notify.frenck
data:
message: Ding dong! Someone is at the door!
More information about repeats can be found in the documentation.
Automations & Scripts: Chooser
Got multiple automations for that single light to turn it on/off? Or multiple automations/scripts to handle the different buttons on some remote?
You can now combine them using a chooser. The chooser is able to pick the first sequence that matches a condition, or if none match, run a default sequence.
This means each individual sequence in the chooser is paired with its own set of conditions.
automation:
- alias: "Example"
description: "On button press, choose the right thing to run."
trigger:
- platform: state
entity_id:
- binary_sensor.button1
- binary_sensor.button2
- binary_sensor.button3
action:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.button1
state: "on"
sequence:
- service: light.turn_on
target:
entity_id: light.bulb
- conditions:
- condition: state
entity_id: binary_sensor.button2
state: "on"
sequence:
- service: light.turn_off
target:
entity_id: light.bulb
default:
- service: notify.frenck
data:
message: Some other unknown button was pressed!
In the above example, pushing button1, turns on the bulb; while button2 turns it off again. The third button isn’t handled by any of the conditions in the chooser and the (optional) default is run instead.
The chooser can be used as an if
/else
statement, where the default
acts as
the else. Or even as if
/else if
/else
statement as shown in the YAML
example above.
More information about the chooser can be found in the documentation.
Automations & Scripts: Sub-second precision
Thanks to a bunch of optimizations done this release, which is discussed later in this blog post, we now have sub-second precision available to our delays.
This precision is helpful in case you want a delay that is less than a second, for example, 500 milliseconds.
An example script that toggles the light every 500 milliseconds 10 times.
script:
blink_light:
sequence:
repeat:
count: 10
sequence:
- service: light.toggle
target:
entity_id: light.bulb
- delay:
milliseconds: 500
Automations & Scripts: Bonus! Cool down
An often requested feature is to allow for a cool down time on an automation. What that entails is setting a limit on the run of an automation or script to a certain time frame.
While this is not a feature specifically added or build, it can be achieved now using the new run modes.
automation:
- alias: "Doorbell cool down"
description: "Prevent multiple message being send when spamming the doorbell."
mode: single # Which is the default
trigger:
- platform: state
state: binary_sensor.doorbell
to: "on"
action:
- service: notify.frenck
data:
message: Ding dong! Someone is at the door!
- delay:
seconds: 10
The single
run mode of this automation, combined with the last delay
of 10
seconds, prevents this automation from being ran more often than only once
every 10 seconds. This is ideal for things like a doorbell.
MDI icons updated
It has taken some time for us to upgrade to the newest version of
Material Design Icons
We wanted to handle these well, so it took some time.
A lot of icons are renamed, and some are removed. In this release, we included all new, and all removed icons and we made sure the new and the old name work.
If you use an icon that is renamed or removed we will show a warning in the log, in version 0.115, this conversion path will be removed and removed icons and old names will no longer work.
So make sure to check your logs if you need to adjust any of your used MDI icons.
Most of the removed MDI icons can be found in Simple icons
Please note: It is possible that custom integrations (also known as custom components) use deprecated icons. These can throw warnings that need to be addressed in the custom integration.
Script and Scene editor updates
The UI to edit or create a script has been updated, besides support for the new running mode, you can now give your scripts a custom icon and ID from the UI.
Especially the ID is helpful, you no longer have to search your states for a long numeric entity id that matches your script.
Screenshot of a script ID, icon and run mode.
The support for setting a custom icon, is also added to the scenes editor.
More speed optimizations
After, the well-received, speed optimization done in the 0.111 & 0.112 releases, the saga towards improving resource usage and responsiveness of the platform continues.
This time we have both @bdraco
First of all, if you are running a Home Assistant OS, Container or Supervised installation, then your Home Assistant instance will run on Python 3.8. No action from your end is needed for this.
It is not just a normal Python version, but @pvizeli
Then @bdraco
This lowers CPU usage and improves response speed when you have many state changes happening in a short time span, or when having a lot of automations.
Also, all time listeners now have microsecond precision as they are scheduled on the internal event loop, instead of the previous situation when it relied on the internal clock that triggered every second.
This release should drastically lower the CPU usage of Home Assistant for most installations.
Other noteworthy changes
- Philips Hue groups can now be turned on/off in the integration options via the UI.
- The OpenZWave (beta) got 3 new services. Two of those are for setting user codes on locks. The other allows for setting device-specific configuration parameters.
- After a moment of absence, @yosilevy
is back! He has been the one fixing all kinds of RTL issues we had in Home Assistant, with his return, this release is full of RTL tweaks again!
New Integrations
Three new integration added this release:
-
PoolSense, added by @haemishkyd
-
Dexcom, added by @gagebenne
-
Bond hub, added by @prystupa
New Platforms
The following integration got support for a new platform:
-
OpenZWave has now support for window covers, added by @Michsior14
Integrations now available to set up from the UI
The following integrations are now available via the Home Assistant UI:
If you need help…
…don’t hesitate to use our very active forums or join us for a little chat
Experiencing issues introduced by this release? Please report them in our issue tracker
Backward-incompatible changes
Below is a listing of the breaking change for this release, per subject or integration. Click on one of those to read more about the breaking change for that specific item.
Minimum Python version 3.7.1
The minimum required Python version has been bumped from Python 3.7.0 to 3.7.1.
TensorFlow
The TensorFlow integration will fail to upgrade due to missing wheels for Python 3.8. This affects all installations that rely on our default docker images running Python 3.8.
To work around this, remove the tensorflow
platform under the image_processing
domain from your
configuration.yaml, before upgrading to 0.113.
Work is under way to resolve the problem. For more information follow this issue: #38073
Automations/Scripts
The way automations behaved when they were triggered while “suspended” in a delay or wait_template step from a previous trigger event was unexpected. If this happened the suspended step would be aborted and the automation would continue the action sequence with the following step.
This change removes support for that “legacy” behavior, in both automations and scripts (although scripts were less affected by this.)
It also provides new “modes” of operation for these action sequences, namely
single
, restart
, queued
& parallel
. To minimize the impact on existing
automations and scripts, the default mode is single
.
In addition, for queued
& parallel
modes there is now a new configuration
option – max
– that controls the maximum number of “runs” that can be
running and/or queued up at a time.
And lastly, the delay step is now much more precise, and supports delays of less than one second.
(@pnbruckner
Templates
Most of the template platforms would check for extract_entities failing to extract entities and avoid setting up a state change listener for “all” after extract_entities had warned that it could not extract the entities and updates would need to be done manually.
This protection has been extended to all template platforms.
Alter the behavior of extract_entities to return the successfully extracted entities if one or more templates fail extraction instead of returning “all” and getting rejected by the platform itself.
(@bdraco
Relative time
Previously, the value used for displaying a relative time was floored before being interpolated into the localized string, leading to situations like these:
- 47 hours ago is displayed as “1 day ago” instead of “2 days ago”
- 13 days in the future is displayed as “in 1 week”
This change modifies the relativeTime
function to use Math.round
instead of
Math.floor
so the output more closely matches the actual relative time of the
input.
MQTT
Birth and will messages are now published by default.
MQTT birth message defaults to:{"topic": "homeassistant/status", "payload": "online"}
MQTT will message defaults to: {"topic": "homeassistant/status", "payload": "offline"}
MQTT will published also on clean connect from broker.
(@emontnemery
ZHA with Hue remotes
This update does contains a breaking change if you are using Device Triggers for the Hue Dimmer models RWL020 and RWL021.
We decided to configure these to use the extended manufacturer support so that we can support 4 triggers per button.
If you were previously using Device Triggers in automations for these devices you will have reconfigure the device leveraging the button on the device page or remove and re-pair the device after updating Home Assistant.
Then you will have to update the automations to use the new triggers.
Sorry for the inconvenience.
(@dmulcahey
ZHA power unit of measurement
Previously ZHA was displaying power as kilowatt (kW) for some devices (the ones with the SmartEnergy cluster), but since watts are more common as household power unit, ZHA will start using W for those instead.
If you have any calculations or accumulation based on power sensors, they may need to be updated.
Philips Hue
Configuring a Hue bridge via YAML configuration is now deprecated. Your current YAML configuration is imported and can be safely removed after upgrading.
Adding Hue bridges manually by IP can now be done via the UI. Changing allowing Hue groups or unreachable Hue bulb is now managed by clicking the options button on the Hue integration in the UI.
InfluxDB
Support for glob matching is added with InfluxDB filters.
InfluxDB was not using the common filtering logic shared by recorder
,
logbook
, homekit
, etc. and as a result had filtering logic that is
inconsistent with the filtering logic of every other recorder-like component.
This has been corrected causing the following changes in filtering logic.
Same domain specified in both include and exclude:
- Previous behavior: All entities in that domain excluded
- New behavior: All entities of that domain included unless entity is excluded by ID or by glob
Same entity ID specified in both include and exclude:
- Previous behavior: Entity excluded
- New behavior: Entity included
Filtering has 1+ exclude domains, 0 include domains, and 1+ include entity ID’s specified:
- Previous behavior: All entities not specifically listed by ID were excluded
- New behavior: All entities not specifically excluded by either domain or ID are included.
(@mdegat01
Transmission
For all torrents sensors (e.g., active_torrents
or started_torrents
) order
of the content of the torrent_info
attribute has changed to oldest first
which means older torrents will appear first in the list.
Also a default limit of 10 items is also applied to the list to avoid very long
strings stored in the recorder database. Both configuration options, order
and
limit
, can be adjusted in the integrations UI.
(@zhulik
Logitech Harmony Hub
New devices and activities are visible as harmony attributes. The current activity is now updated as soon as the remote starts the activity change instead of being delayed until the activity is finished setting up.
(@bdraco
Xiaomi Miio
Fan and remote components now have unique LED strings. If you had previously set your automation calls from “fan_set_led_on/off” to “remote_set_led_on/off”, you will now need to set those back to “fan”.
Samsung SyncThru Printer
Syncthru configuration is now done through the integrations UI page.
(@scop
Slack
Re-added the ability to use remote files (by URL) in Slack messages.
The data schema for sending files in Slack messages has changed, so be sure to update any Slack-related service calls with the new schema as listed in the Slack integration documentation.
(@bachya
RFXCOM RFXtrx
- Configuration of entity name must now be done inside home assistant
- Multiple entities may be generated for a single device
- The events signalled from entity id’s are removed in favor of events from an integration level.
- The events format has changed.
(@elupus
Fibaro
Fibaro Home Center switches that control light sources will now correctly be configured as Light entities (instead of Switch entities). This causes those entities IDs to change from switch
. to light
. If this is not desirable, change the device role in Home Center to something that isn’t a light source (e.g., Other device).
(@danielpervan
Frontend: Deprecated HTML imports
extra_html_url
is now deprecated and support will be removed in 0.115.
You can switch to the new extra_module_url
or extra_js_url_es5
by changing
your imported file to JavaScript.
With the start of custom components, you would import a HTML file for your component instead of JavaScript. That’s why we have always supported importing extra HTML in the frontend and custom panels.
This has been deprecated and superseded by ES modules since some time and has no support anymore in browsers. We have a polyfill in place to still support this, but we are going to remove this.
In version 0.115 we will remove the ability to import HTML, you can use ES modules as a replacement.
(@bramkragten
Frontend: Themes
The theme variable paper-card-background-color
is removed. You can use ha-card-background
or card-background-color
as a replacement.
In general, all variables that start with paper
will be removed at some point.
Release 0.113.1 - July 24
- Update discord.py to v1.3.4 for API change (@DubhAd
- #38060 ) (discord docs) - Fix issue with creation of PT2262 devices in rfxtrx integration (@RobBie1221
- #38074 ) (rfxtrx docs) - Fix route53 depending on broken package (@balloob
- #38079 ) (route53 docs) - Bump pysmartthings to v0.7.2 (@andrewsayre
- #38086 ) (smartthings docs) - Bump androidtv to 0.0.46 (@JeffLIrion
- #38090 ) (androidtv docs) - Prevent the zeroconf service browser from terminating when a device without any addresses is discovered. (@bdraco
- #38094 ) - Fix SimpliSafe to work with new MFA (@bachya
- #38097 ) (simplisafe docs) - Fix text error when getting getting external IP in route53 (@ludeeus
- #38100 ) (route53 docs) - Fix script repeat variable lifetime (@pnbruckner
- #38124 ) - Log which task is blocking startup when debug logging is on (@bdraco
- #38134 ) - Fix Xbox Live integration (@mKeRix
- #38146 ) (xbox_live docs) - Fix incorrect mesurement in Toon for meter low (@frenck
- #38149 ) (toon docs) - Fix Nuki Locks and Openers not being available after some time (@pschmitt
- #38159 ) (nuki docs) - Remove leftover print statement (@bachya
- #38163 ) (simplisafe docs)
Release 0.113.2 - July 28
- Bump netdisco to 2.8.1 (@bdraco
- #38173 ) (discovery docs) - Stop automation runs when turned off or reloaded (@pnbruckner
- #38174 ) (automation docs) - Bump tesla-powerwall to 0.2.12 to handle powerwall firmware 1.48+ (@bdraco
- #38180 ) (powerwall docs) - Ignore harmony hubs ips that are already configured during ssdp discovery (@bdraco
- #38181 ) (harmony docs) - Fix detection of zones 2 and 3 in Onkyo/Pioneer amplifiers (@vdkeybus
- #38234 ) (onkyo docs) - Fix repeat action when variables present (@pnbruckner
- #38237 ) (script docs) - Fix parallel script containing repeat or choose action with max_runs > 10 (@pnbruckner
- #38243 ) (automation docs) (script docs) - Fix Skybell useragent (@MisterWil
- #38245 ) (skybell docs) - Improve setup retry logic to handle inconsistent powerview hub availability (@bdraco
- #38249 ) (hunterdouglas_powerview docs) - Don’t set up callbacks until entity is created. (@pavoni
- #38251 ) (vera docs) - Prevent onvif from blocking startup (@bdraco
- #38256 ) (onvif docs) - Fix #38289 issue with xboxapi lib (@marciogranzotto
- #38293 ) (xbox_live docs) - Bump python-miio to 0.5.3 (@rytilahti
- #38300 ) (xiaomi_miio docs) - Prevent speedtest from blocking startup or causing other intergations to fail setup (@bdraco
- #38305 ) (speedtestdotnet docs) - Fix issue with certain Samsung TVs repeatedly showing auth dialog (@kylehendricks
- #38308 ) (samsungtv docs) - Add debug logging for when a chain of tasks blocks startup (@bdraco
- #38311 ) - Remove AdGuard version check (@frenck
- #38326 ) (adguard docs)
Release 0.113.3 - August 1
- Add Abode camera on and off support (@shred86
- #35164 ) (abode docs) - Fix songpal already configured check in config flow (@shenxn
- #37813 ) (songpal docs) - Prevent kodi from blocking startup (@bdraco
- #38257 ) (kodi docs) - Ignore remote Plex clients during plex.tv lookup (@jjlawren
- #38327 ) (plex docs) - Bump androidtv to 0.0.47 and adb-shell to 0.2.1 (@JeffLIrion
- #38344 ) (androidtv docs) - Bump pychromecast to 7.2.0 (@emontnemery
- #38351 ) (cast docs) - Update aioharmony to 0.2.6 (@ehendrix23
- #38360 ) (harmony docs) - Avoid error with ignored harmony config entries (@bdraco
- #38367 ) (harmony docs) - Prevent nut config flow error when checking ignored entries (@bdraco
- #38372 ) (nut docs) - Ensure Toon webhook ID isn’t registered on re-registration (@frenck
- #38376 ) (toon docs) - Fix rmvtransport breaking when destinations don’t match (@cgtobi
- #38401 ) (rmvtransport docs) - Fix ads integration after 0.113 (@stlehmann
- #38402 ) (ads docs) - Pin yarl dependency to 1.4.2 as core dependency (@frenck
- #38428 ) - Fix double encoding issue in google_translate TTS (@frenck
- #38429 ) (google_translate docs)
All changes
Click to see all changes!
- Zerproc cleanup (@emlove
- #37072 ) (zerproc docs) - Add concept of allowed external URLs to config (@bachya
- #36988 ) - Add legacy polling option for Amcrest motion detection (@pnbruckner
- #36955 ) (amcrest docs) - Improve setup (@balloob
- #37075 ) - Add worldclock custom format (@InduPrakash
- #36157 ) (worldclock docs) - Bump version to 0.113.0dev0 (@frenck
- #37071 ) - Migrate doorbird to use new logbook platform (@bdraco
- #37097 ) (doorbird docs) - Improve isoformat timestamp performance for full states (@bdraco
- #37105 ) (history docs) - Plex tests cleanup and additions (@jjlawren
- #37117 ) (plex docs) - Ensure doorbird events can be filtered by entity_id (@bdraco
- #37116 ) (doorbird docs) - Upgrade sqlalchemy to 1.3.18 (@frenck
- #37123 ) (recorder docs) (sql docs) - Add optimistic Guardian switch updating (@bachya
- #37141 ) (guardian docs) - Update remote_rpi_gpio switch parent (@Kdemontf
- #37136 ) (remote_rpi_gpio docs) - Improve Smappee integration (@bsmappee
- #37087 ) (smappee docs) - Add support for glob matching in InfluxDB filters (@mdegat01
- #37069 ) (influxdb docs) (breaking-change) - Update Plex tests to mock websockets (@jjlawren
- #37147 ) (plex docs) - add phillips remote cluster (@dmulcahey
- #37172 ) (zha docs) - Improve scalability of state change event routing (@bdraco
- #37174 ) (automation docs) - Ensure all async_track_state_change_event callbacks run if one throws (@bdraco
- #37179 ) - Fixup rfxtrx tests to at least run (@elupus
- #37186 ) (rfxtrx docs) - Attempt to set unique id of rfxtrx device (@elupus
- #37159 ) (rfxtrx docs) - Bump aioguardian (@bachya
- #37188 ) (guardian docs) - Add debug output for invalid service call data (@pnbruckner
- #37171 ) - Limit and sort transmission torrents_info attribute (@zhulik
- #35411 ) (transmission docs) (breaking-change) - Move transmission limit and order config options to the options flow (@zhulik
- #37198 ) (transmission docs) - Sensors sometimes are created without event (@elupus
- #37205 ) (rfxtrx docs) - Correct typo in input_number UI text (@davet2001
- #37208 ) (input_number docs) - Silence spurious warning when HomeKit is already running (@bdraco
- #37199 ) (homekit docs) - Additional testing for InfluxDB and some quality improvements (@mdegat01
- #37181 ) (influxdb docs) - Add first unit test to config flow for Plum Lightpad (@prystupa
- #37183 ) (plum_lightpad docs) - Ensure homekit state changed listeners are unsubscribed on reload (@bdraco
- #37200 ) (homekit docs) - Use eventloop for scheduling (@bdraco
- #37184 ) (asuswrt docs) (generic_thermostat docs) (breaking-change) - Add mdegat01 as code owner for InfluxDB (@mdegat01
- #37227 ) (influxdb docs) - Move Guardian services to entity platform services (@bachya
- #37189 ) (guardian docs) - Use shared zeroconf for discovery netdisco (@bdraco
- #37237 ) (discovery docs) - Register ‘androidtv.learn_sendevent’ service (@JeffLIrion
- #35707 ) (androidtv docs) - Add support for window covers to ozw integration (@Michsior14
- #37217 ) (ozw docs) (new-platform) - Remove Hue configurator demo from demo integration (@frenck
- #37250 ) (demo docs) - Bump pychromecast to 7.0.1 (@emontnemery
- #37225 ) (cast docs) - Changed FilterTest namedtuples to dataclasses (@mdegat01
- #37252 ) (apache_kafka docs) (azure_event_hub docs) (google_pubsub docs) (prometheus docs) - Enhance script integration to use new features in script helper (@pnbruckner
- #37201 ) (script docs) - Refactor Influx logic to reduce V1 vs V2 code paths (@mdegat01
- #37232 ) (influxdb docs) - Cache checking for entity exposure in emulated_hue (@bdraco
- #37260 ) (emulated_hue docs) - Add missed call sensor to Freebox (@Quentame
- #36895 ) (freebox docs) - Add humidifier support to google_assistant (@Shulyaka
- #37157 ) (google_assistant docs) - Improve support for homematic garage covers (@guillempages
- #35350 ) (homematic docs) - Create PoolSense integration (@haemishkyd
- #35561 ) (poolsense docs) (new-integration) - Add media_stop for volumio integration (@divanikus
- #37211 ) (volumio docs) - Clean up ‘androidtv.learn_sendevent’ service (@JeffLIrion
- #37276 ) (androidtv docs) - Add a service for setting the timer to tado water heaters (@jfearon
- #36533 ) (tado docs) - Add constant for PlatformNotReady wait time to use in tests (@mdegat01
- #37266 ) (influxdb docs) - Add Dexcom Integration (@gagebenne
- #33852 ) (dexcom docs) (new-integration) - Bump pynws-1.2.1 for NWS (@MatthewFlamm
- #37304 ) (nws docs) - Limit entity platform entity service to same integration (@balloob
- #37313 ) - Add Hue manual bridge config flow + options flow (@frenck
- #37268 ) (hue docs) (breaking-change) - Fix Influx V1 test query (@mdegat01
- #37309 ) (influxdb docs) - Fix flapping flux tests (@bdraco
- #37346 ) (flux docs) - Add humidifier support to homekit (@Shulyaka
- #37207 ) (homekit docs) - Fix flapping gdacs tests (@bdraco
- #37363 ) (gdacs docs) - Upgrade pre-commit to 2.6.0 (@frenck
- #37339 ) - Add ozw garage door barrier support (@firstof9
- #37316 ) (ozw docs) - Improve unifi device tracker performance (@bdraco
- #37308 ) (unifi docs) - Fix ozw garage door methods (@MartinHjelmare
- #37374 ) (ozw docs) - Modified Influx tests to mock test queries with accurate output (@mdegat01
- #37315 ) (influxdb docs) - Remove my codeownership over things I dont use anymore (@robbiet480
- #37401 ) - Convert rfxtrx tests to pytest async tests and re-enable (@elupus
- #37206 ) (rfxtrx docs) - Add GitHub Actions for CI (@frenck
- #37419 ) - Reduce time to run zha discover tests (@bdraco
- #37424 ) (zha docs) - Ensure async_setup is mocked in geonetnz intergration tests (@bdraco
- #37426 ) (geonetnz_quakes docs) (geonetnz_volcano docs) - Add helpers.location.coordinates (@eifinger
- #37234 ) - Replace asynctest with tests.async_mock (@balloob
- #37428 ) - Prevent verisure lock from looping forever and sleeping in test (@bdraco
- #37425 ) (verisure docs) - Fix undesired power toggling (@ktnrg45
- #37427 ) (ps4 docs) - Fix unmocked setup in garmin_connect test (@bdraco
- #37429 ) (garmin_connect docs) - Fix unmocked setup in ipp tests (@bdraco
- #37430 ) (ipp docs) - Stub out ecobee aux heat services (@balloob
- #37423 ) (ecobee docs) - Fix building of Python Wheels (@frenck
- #37433 ) - Mock setup in sonarr config flow tests (@bdraco
- #37432 ) (sonarr docs) - Add more unit tests for plum_lightpad (@prystupa
- #37275 ) (plum_lightpad docs) - Add Plugwise zeroconf discovery (@bouwew
- #37289 ) (plugwise docs) - Mock setup in directv config flow tests (@ctalkington
- #37439 ) (directv docs) (directv docs) - Apply some suggestions from poolsense code review (@ctalkington
- #37440 ) (poolsense docs) - Fix extremely minor typo: Cosumption -> Consumption (@smugleafdev
- #37322 ) (solaredge docs) - Fix DarkSky spamming the log (@RogerSelwyn
- #37421 ) (darksky docs) - Upgrade python-join-api to allow user to specify actions (@nkgilley
- #37394 ) (joaoapps_join docs) - Use a more detailed battery icon for Tesla cars (@jberstler
- #37154 ) (tesla docs) - Avoid selecting the states created column for history (@bdraco
- #37450 ) (history docs) - Use device class to isolate tesla battery icon (@ctalkington
- #37446 ) (tesla docs) - Remove pytest-xdist from tox now that it’s in requirements_test.txt (@scop
- #37455 ) - Fix Plugwise zeroconf discovery formatting (@CoMPaTech
- #37457 ) (plugwise docs) - Xiaomi Gateway subdevice support & AqaraHT + SensorHT devices (@starkillerOG
- #36539 ) (xiaomi_miio docs) - Fix entity_component test flapping (@bdraco
- #37445 ) - Fix flapping geo_json_events tests (@frenck
- #37471 ) (geo_json_events docs) - Fix geonetnz_quakes test flapping (@emontnemery
- #37473 ) (geonetnz_quakes docs) - Call sync function from async context (@timvancann
- #37324 ) - Support empty output of MQTT binary_sensor value_template (@emontnemery
- #37420 ) (mqtt docs) - Publish birth and will messages by default (@emontnemery
- #37371 ) (mqtt docs) (breaking-change) - Fix flapping google_assistant tests (@frenck
- #37480 ) (google_assistant docs) - Add humidifier support to emulated_hue (@Shulyaka
- #37110 ) (emulated_hue docs) - GitHub Actions: Add hadolint problem matcher (@frenck
- #37494 ) - GitHub Actions: Add codespell problem matcher (@frenck
- #37487 ) - GitHub Actions: Add json problem matcher (@frenck
- #37490 ) (hue docs) - GitHub Actions: Add pylint problem matcher (@frenck
- #37463 ) - GitHub Actions: Add check executables problem matcher (@frenck
- #37488 ) - GitHub Actions: Add mypy problem matcher (@frenck
- #37485 ) - GitHub Actions: Add yamllint problem matcher (@frenck
- #37468 ) (ads docs) - GitHub Actions: Add flake8 problem matcher (@frenck
- #37465 ) - GitHub Actions: Show diff on failure (@frenck
- #37461 ) - Fix flapping geonetnz_volcano test (@bdraco
- #37497 ) (geonetnz_volcano docs) - Upgrade flake8 to 3.8.3 (@scop
- #37501 ) - Use package constraints in tox lint (@scop
- #37500 ) - GitHub Actions: Add pytest problem matcher (@frenck
- #37508 ) (toon docs) - Enhance automation integration to use new features in script helper (@pnbruckner
- #37479 ) (automation docs) (script docs) - Do not count netdata cleared and undefined alarms as warnings (@jurgenhaas
- #37505 ) (netdata docs) - Bump env_canada to 0.1.0 (@michaeldavie
- #37483 ) (environment_canada docs) - Prebake common history queries (@bdraco
- #37496 ) (history docs) - Add prometheus metric naming guidelines (@knyar
- #37149 ) (prometheus docs) - Use the main event loop for homekit (@bdraco
- #37441 ) (homekit docs) - Add denonavr solution tip for connection_error (@starkillerOG
- #37405 ) (denonavr docs) - Fix Datadog boolean metrics (@shermdog
- #37273 ) (datadog docs) - Fix flapping demo geo_location test (@bdraco
- #37516 ) (demo docs) - Standardise geniusheub error levels (@RogerSelwyn
- #37512 ) (geniushub docs) - Standardis asuswrt error message level (@RogerSelwyn
- #37515 ) (asuswrt docs) - Convert Android TV integration to async (@JeffLIrion
- #37510 ) (androidtv docs) - Add config flow + async support for SmartHab integration (@outadoc
- #34387 ) (smarthab docs) - Tado climate entity timer service (@jfearon
- #37472 ) (tado docs) - Use async_track_state_change_event for automation numeric_state (@bdraco
- #37255 ) (automation docs) - Fix xiaomi_miio error when no sensors present (@starkillerOG
- #37531 ) (xiaomi_miio docs) - Switch tests to use hass objects instead of direct (@elupus
- #37530 ) (rfxtrx docs) - Log lines do not end with a full stop (@frenck
- #37527 ) - Fix flake8 problem matcher to handle fatals as errors (@frenck
- #37536 ) - Transition Guardian to use a DataUpdateCoordinator (@bachya
- #37380 ) (guardian docs) - Switch rfxtrx to dispatcher (@elupus
- #37271 ) (rfxtrx docs) - Cleanup async_track_state_change and augment docstring (@bdraco
- #37251 ) - Add Amcrest audio_detected binary sensor (@pnbruckner
- #37486 ) (amcrest docs) - Add new integration for Bond hub (@prystupa
- #37477 ) (bond docs) (new-integration) - Switch homekit to use async_track_state_change_event (@bdraco
- #37253 ) (homekit docs) - Add missing manifest object to the check (@ludeeus
- #37535 ) - Add dependabot for automatic updates to GitHub Actions (@frenck
- #37550 ) - Bump actions/upload-artifact from v1 to v2.0.1 (dependabot - #37555
) - Bump codecov/codecov-action from v1 to v1.0.10 (dependabot - #37556
) - Strings capitalization consistency fixes (@scop
- #37454 ) - Protect loop set default executor (@balloob
- #37438 ) - Add optimistic mode to template switch (@akloeckner
- #31637 ) (template docs) - Mock setup in plex test to prevent CI failure (@bdraco
- #37590 ) (plex docs) - Ensure homekit accessory reset only affect the bridges with the accessory (@bdraco
- #37588 ) (homekit docs) - apply small feedback suggestions from a previous PR that is already merged (@prystupa
- #37551 ) (bond docs) - Bump voluptuous-serialize 2.4.0 (@balloob
- #37241 ) - Fix missing Plex account mocks in tests (@jjlawren
- #37591 ) (plex docs) - Update Rejseplanen rjpl to 0.3.6 (@DarkFox
- #37215 ) (rejseplanen docs) - Make devices and activities visible as harmony attributes (@bdraco
- #37559 ) (harmony docs) (breaking-change) - Upgrade debugpy to 1.0.0b12 (@frenck
- #37599 ) (debugpy docs) - Upgrade coverage to 5.2 (@frenck
- #37598 ) - Fix typos in Hue integration (@frenck
- #37597 ) (hue docs) - Add current temperature as separate sensor in Toon (@frenck
- #37336 ) (toon docs) - Add host names in esphome logs (@TheLastGimbus
- #37587 ) (esphome docs) - Fix sync/async and small improvements to forked_daapd (@frenck
- #37619 ) (forked_daapd docs) - Remove dead code from cast (@frenck
- #37620 ) (cast docs) - Fix acmeda syn/async cover methods (@frenck
- #37618 ) (acmeda docs) - Fix sync/async override in sms (@frenck
- #37621 ) (sms docs) - Switch what is used for unique identifier (@elupus
- #37581 ) (rfxtrx docs) - Change MediaPlayerDevice into MediaPlayerEntity (@brefra
- #37629 ) (pioneer docs) - Ozw climate fixes (@marcelveldt
- #37560 ) (ozw docs) - Bump aiohomekit to 0.2.41 (@Jc2k
- #37602 ) (homekit_controller docs) - Fix homekit test mocking missed in loop changeover (@bdraco
- #37628 ) (homekit docs) - Reduce log level of unknown discovered services (@balloob
- #37617 ) (discovery docs) - fix erroneous dependency used by Bond integration (simplejson to json) (@prystupa
- #37642 ) (bond docs) - Mark the example values as strings because that’s what we expect (@balloob
- #37640 ) (alarm_control_panel docs) - Fix ozw entities cleanup on node removal (@marcelveldt
- #37630 ) (ozw docs) - bump pyvizio version (@raman325
- #37644 ) (vizio docs) - Add OZW support for set_config_parameter service (@firstof9
- #37523 ) (ozw docs) - Modify cast tests to setup via cast integration (@emontnemery
- #37256 ) (cast docs) - Give fan and remote components unique LED strings (@alexhardwicke
- #37605 ) (xiaomi_miio docs) (breaking-change) - Vizio: when checking new host against existing config entry hosts, make check hostname aware (@raman325
- #37397 ) (vizio docs) - Add preset modes to Touchline (@pilehave
- #36054 ) (touchline docs) - Updated influxdb-client dependency to 1.8.0 (@mdegat01
- #37396 ) (influxdb docs) - Check buckets/dbs for validity during Influx sensor startup (@mdegat01
- #37391 ) (influxdb docs) - Fix missing Guardian service strings (@bachya
- #37659 ) (guardian docs) - Apply more suggestions from bond code review (@ctalkington
- #37592 ) (bond docs) - Set MQTT sensor to state unavailable when value expires (@emontnemery
- #36609 ) (mqtt docs) (breaking-change) - Convert syncthru to config flow and native SSDP discovery (@scop
- #36690 ) (discovery docs) (syncthru docs) (breaking-change) - Use “next_state” attr instead of “post_pending” for ArmDisarm trait (@engrbm87
- #37325 ) (google_assistant docs) - Add ozw usercode support (@firstof9
- #37390 ) (ozw docs) - OZW Usercodes update services.yaml with examples (@firstof9
- #37667 ) (ozw docs) - Add humidifier support to prometheus (@Shulyaka
- #37112 ) (prometheus docs) - Refactor Enocean part 1 (@jduquennoy
- #35927 ) (enocean docs) - Add back Netatmo public weather sensors (@cgtobi
- #34401 ) (netatmo docs) - Split handling and application of event (@elupus
- #37665 ) (rfxtrx docs) - Python 3.8 on core Container (@pvizeli
- #37677 ) - Detect lingering threads after tests (@elupus
- #37270 ) - Change audio sample rate for apple watch homekit camera (@Harryjholmes
- #37637 ) (homekit docs) - Round time values in get_age() to better approximate the actual age (@GMTA
- #37125 ) (breaking-change) - Add bond cover assumed state and local polling (@prystupa
- #37666 ) (bond docs) - Actually fix Guardian entity services (@bachya
- #37700 ) (guardian docs) - Revert “Updated influxdb-client dependency to 1.8.0” (#37396)” (@mdegat01
- #37697 ) (influxdb docs) - Upgrade foobot-async (@balloob
- #37706 ) (foobot docs) - Rewrite rfxtrx init logic to do away with global object (@elupus
- #37699 ) (rfxtrx docs) - bump tuyaha 0.0.7 (@PaulAnnekov
- #37709 ) (tuya docs) - Fix get profiles checking if has ptz capabilities (@djpremier
- #37176 ) (onvif docs) - Update influxdb-client dependency to 1.8.0, fix test write for InfluxDB v2 (@bednar
- #37710 ) (influxdb docs) - Fix loopenergy callback updating HA before the object is initialised (@pavoni
- #37650 ) (loopenergy docs) - Fix Hue homekit discovery (@balloob
- #37694 ) (hue docs) - Add new repeat loop for scripts and automations (@pnbruckner
- #37589 ) (automation docs) (script docs) - Add rfxtrx device classes to known types (@elupus
- #37698 ) (rfxtrx docs) - Re-add ability to use remote files (by URL) in Slack messages (@bachya
- #37161 ) (slack docs) (breaking-change) - Use the shared zeroconf instance for homekit_controller (@bdraco
- #37691 ) (homekit_controller docs) - Uninstall typing (@balloob
- #37735 ) - Remove legacy script mode and simplify remaining modes (@pnbruckner
- #37729 ) (automation docs) (script docs) (breaking-change) - Support Fan domain in Bond integration (@prystupa
- #37703 ) (bond docs) (new-platform) - Fix incorrect comparison of speed “off” by identity instead of by value (@prystupa
- #37738 ) (fan docs) - Refactor Bond integration to remove duplication (@prystupa
- #37740 ) (bond docs) - Updates to poolsense integration (@haemishkyd
- #37613 ) (poolsense docs) (new-platform) - Bump ADS to 3.1.3 (@balloob
- #37748 ) (ads docs) - Reference constraint files from requirement files (@balloob
- #37751 ) - Bump pyHS100 to 3.5.1 (@balloob
- #37749 ) (tplink docs) - Fix script queued mode typo (@pnbruckner
- #37759 ) - Upgrade bond-home to 0.0.9 (@prystupa
- #37764 ) (bond docs) - Bump teslajsonpy to 0.9.3. (@alandtse
- #37771 ) (tesla docs) - Significantly improve logging performance when no integrations are requesting debug level (@bdraco
- #37776 ) (logger docs) - Add Bond hub as a device for bond entities (@prystupa
- #37772 ) (bond docs) - Add generic unavailable and last_updated metrics for prometheus (@esev
- #37456 ) (prometheus docs) - Switch rfxtrx to integration level config (@elupus
- #37742 ) (rfxtrx docs) (breaking-change) - Add support for fan direction in bond integration (@prystupa
- #37789 ) (bond docs) - Apply code quality updates to poolsense (@haemishkyd
- #37781 ) (poolsense docs) (new-platform) - Wrap possible I/O in executor (@jjlawren
- #37688 ) (plex docs) - Fix Dockerfile.dev for VS Code devcontainer (@ajschmidt8
- #37801 ) - Add basic support for lights in bond integration (@prystupa
- #37802 ) (bond docs) (new-platform) - Replace rfxtrx entity events with integration events (@elupus
- #37565 ) (rfxtrx docs) (breaking-change) - Bump aiokafka to 0.6.0 (@balloob
- #37778 ) (apache_kafka docs) - Drop dummy connection (@elupus
- #37805 ) (rfxtrx docs) - pydaikin version bump to 2.3.1: (@pnguyen-tyro
- #37682 ) (daikin docs) - Allow an extra packet without dts (for Arlo camera streaming) (@dermotduffy
- #37792 ) (stream docs) - Constraints pt3 (@balloob
- #37803 ) - Add urlencode template filter (@jschlyter
- #37753 ) - Add rfxtrx ability to send a raw command to device (@elupus
- #37793 ) (rfxtrx docs) - Drop white blacklist pt1 (@balloob
- #37816 ) - Simplify logger integration (@balloob
- #37780 ) (logger docs) - Add devolo binary sensor device class mapping (@2Fake
- #37350 ) (devolo_home_control docs) - Convert Toon expires_in value to float (@tizzen33
- #37716 ) (toon docs) - Apply bond python related feedback from a prior PR (@prystupa
- #37821 ) (bond docs) - Switch rfxtrx to config entries (@elupus
- #37794 ) (rfxtrx docs) - Update Travis-CI to use Python 3.7.1 (@scop
- #37830 ) - Map bond fan speeds to standard HA speeds (@prystupa
- #37808 ) (bond docs) - Apply code review changes for poolsense (@haemishkyd
- #37817 ) (poolsense docs) - Version bump for asuswrt (@kennedyshead
- #37827 ) (asuswrt docs) - Travis CI improvements (@scop
- #37840 ) - Bump actions/upload-artifact from v2.0.1 to 2.1.0 (dependabot - #37841
) - Add support for generic device (switch) to bond integration (@prystupa
- #37837 ) (bond docs) (new-platform) - Add choose script action (@pnbruckner
- #37818 ) - Attrs cleanups (@scop
- #37849 ) (camera docs) (cast docs) (device_tracker docs) (esphome docs) (mqtt docs) (stream docs) (zha docs) - Add mode info attributes to script and automation (@bramkragten
- #37815 ) (automation docs) (script docs) - Fix media_content_id attribute in Spotify integration (@aaliddell
- #37853 ) (spotify docs) - Frontend: deprecate
extra_html_url
(@bramkragten- #37843 ) (frontend docs) (breaking-change) - Switch async_track_state_change to the faster async_track_state_change_event part 3 (@bdraco
- #37852 ) (bayesian docs) (esphome docs) (filter docs) - Adjust icons for MDI bump (@bramkragten
- #37730 ) - Avoid homekit crash when temperature is clamped above max value (@bdraco
- #37746 ) (homekit docs) - Always expose Toon gas sensors (@frenck
- #37829 ) (toon docs) - Use size of camera in Agent DVR (@timmo001
- #36375 ) (agent_dvr docs) - Adjust history as all scripts can now be canceled (@bdraco
- #37820 ) (history docs) - Ensure HomeKit does not throw when a linked motion sensor is removed (@bdraco
- #37773 ) (homekit docs) - Add HmIP-FSI16 to HomematicIP Cloud (@SukramJ
- #37715 ) (homematicip_cloud docs) - Fix Fibaro HC light switches not being configured as Light entities (@danielpervan
- #37690 ) (fibaro docs) (breaking-change) - Do no crash Luftdaten on additional data returned by the API (@jbeyerstedt
- #37763 ) (luftdaten docs) - Fix zone cleaning and raise config entry not ready when needed (@dshokouhi
- #37741 ) (neato docs) - bump zigpy and zha quirks (@dmulcahey
- #37859 ) (zha docs) (breaking-change) - Updated frontend to 20200714.0 (@bramkragten
- #37862 ) (frontend docs) - Have async_track_point_in_utc_time call async_run_job directly from call_at (@bdraco
- #37790 ) - Add support for fireplaces to bond integration (@prystupa
- #37850 ) (bond docs) - Update august manufacturer name (@bdraco
- #37867 ) (august docs) - Switch async_track_state_change to the faster async_track_state_change_event part 6 (@bdraco
- #37869 ) (manual_mqtt docs) (min_max docs) (mold_indicator docs) (plant docs) - Switch async_track_state_change to the faster async_track_state_change_event part 5 (@bdraco
- #37866 ) - Switch async_track_state_change to the faster async_track_state_change_event part 4 (@bdraco
- #37863 ) (derivative docs) (generic_thermostat docs) (integration docs) (statistics docs) - Switch async_track_state_change to the faster async_track_state_change_event (@bdraco
- #37834 ) (group docs) - Switch a few more async_track_state_change to the faster async_track_state_change_event (@bdraco
- #37833 ) - Switch universal media_player to use async_track_state_change_event (@bdraco
- #37832 ) (universal docs) - Improve handling of template platforms when entity extraction fails (@bdraco
- #37831 ) (template docs) (breaking-change) - Switch async_track_state_change to the faster async_track_state_change_event part 7 (@bdraco
- #37870 ) (alert docs) (knx docs) (zha docs) - Prefer external URLs because internal can’t have valid SSL (@balloob
- #37872 ) (cast docs) - Use supervisord “group:name” when get process info (@serhtt
- #37678 ) (supervisord docs) - Don’t reuse venv cache when Python version changes (@frenck
- #37881 ) - Fix yeelight flash (@shenxn
- #37743 ) (yeelight docs) - Improve Neato error logging by including device name (@dshokouhi
- #37865 ) (neato docs) - Stop running scripts at shutdown (@pnbruckner
- #37858 ) - Updated frontend to 20200715.0 (@bramkragten
- #37884 ) (frontend docs) - Adapt MQTT config flow to default birth and will (@emontnemery
- #37875 ) (mqtt docs) - Provide workaround for missing/disabled/broken IPv6 (@bdraco
- #37887 ) (zeroconf docs) - Revert breaking change for Automation (@pvizeli
- #37885 ) (automation docs) - Update frontend to 20200715.1 (@bramkragten
- #37888 ) (frontend docs) (beta fix) - Fix swapped variables deprecation in log message (@frenck
- #37901 ) (beta fix) - Fix automation & script restart mode bug (@pnbruckner
- #37909 ) (beta fix) - Updated frontend to 20200716.0 (@bramkragten
- #37910 ) (frontend docs) (beta fix) - Fix ZHA electrical measurement sensor initialization (@Adminiuga
- #37915 ) (zha docs) (beta fix) - Fix unavailable when value is zero (@cgtobi
- #37918 ) (netatmo docs) (beta fix) - Upgrade pysonos to 0.0.32 (@amelchio
- #37923 ) (sonos docs) (beta fix) - Ensure a state change tracker setup from inside a state change listener does not fire immediately (@bdraco
- #37924 ) (beta fix) - Rfxtrx fixes for beta (@elupus
- #37957 ) (rfxtrx docs) (beta fix) - Add ozw support for single setpoint thermostat devices (@marcelveldt
- #37713 ) (ozw docs) (beta fix) - Fix bugs updating state of
hdmi_cec
switch (@rajlaud- #37786 ) (hdmi_cec docs) (beta fix) - fix (@bdraco
- #37889 ) (homekit docs) (beta fix) - Change ZHA power unit from kW to W (@abmantis
- #37896 ) (zha docs) (breaking-change) (beta fix) - Fix: Passes secure parameter when setting up Nuki (#36844) (@SeraphimSerapis
- #37932 ) (nuki docs) (beta fix) - Fix Sonos speaker lookup for Plex (@jjlawren
- #37942 ) (plex docs) (sonos docs) (beta fix) - Force updates for ZHA light group entity members (@dmulcahey
- #37961 ) (zha docs) (beta fix) - Bump pychromecast to 7.1.2 (@emontnemery
- #37976 ) (cast docs) (beta fix) - Force updates for ZHA light group entity members (Part 2) (@dmulcahey
- #37995 ) (zha docs) (beta fix) - Rfxtrx fixup restore (@elupus
- #38039 ) (rfxtrx docs) (beta fix) - Make nested get() statements safe (@michaeldavie
- #37965 ) (environment_canada docs) (beta fix) - Fix issue with Insteon events not firing correctly (@teharris1
- #37974 ) (insteon docs) (beta fix) - Fix notify.slack service calls using data_template (@jnewland
- #37980 ) (slack docs) (beta fix) - Check if robot has boundaries to update (@dshokouhi
- #38030 ) (neato docs) (beta fix) - Correct arguments to MQTT will_set (@emontnemery
- #38036 ) (mqtt docs) (beta fix) - Use keywords for MQTT birth and will (@emontnemery
- #38040 ) (mqtt docs) (beta fix) - ZHA dependencies bump bellows to 0.18.0 (@Adminiuga
- #38043 ) (zha docs) (beta fix) - Add MQTT to constraints file (@balloob
- #38049 ) (beta fix) - Fix rfxtrx stop after first non light (@elupus
- #38057 ) (rfxtrx docs) (beta fix)