Releases: rytilahti/python-miio
0.6.0.dev0: introspectable APIs and miot support
This is a pre-release for 0.6.0 to make the current state of the library
available via PyPI for testing and development, and is not yet ready for
end users. There are several breaking changes as detailed in the PRs
below, but for most library users, the most visible change being that
the integrations have moved into their own packages under
miio.integrations
instead being available under the main package.
Instead of directly importing the wanted implementation class, you can
now use DeviceFactory
to construct an instance.
This release is a huge with over 200 pull requests with 364 files
changed, including 13748 insertions and 5114 deletions. It is also the
largest release in terms of device support, as it adds support for all
miot/miotspec devices using the genericmiot integration. This is a big
change in how the library was originally designed, as these devices will
require downloading externally hosted specification files to function.
These files are downloaded automatically when the device is used for the
first time and cached for some time for later invocations.
The major highlights of this release include:
- Introspectable interfaces for accessing supported features (status(),
sensors(), settings(), actions()) that will allow downstream users (like
homeassistant) to support devices without hardcoding details in their
codebases. - Generic support for all locally controllable, modern miot devices
(using genericmiot integration,miiocli genericmiot
). - Factory method for creating device instances instead of requiring to
hardcode them (seeDeviceFactory
). - miio and miot simulators to allow development without having access to
devices. This was used to create the miot support and might be useful
for other developers.
There are plenty of more in this release, so huge thanks to everyone who
has contributed to this release and my apologies that it has taken so
long to prepare this. I am hoping that we will get the release blockers
fixed in a timely manner to make these new improvements available for
everyone without having to use the git version.
Help is needed to add the metadata required for the introspectable
interfaces to all existing integrations, see
https://python-miio.readthedocs.io/en/latest/contributing.html#status-containers
and its subsections, if you are looking to contribute. Otherwise, feel
free to test and report any issues, so that we can get those fixed for
the 0.6.0! :-)
Note: the current homeassistant integration requires major refactoring
effort to make use of the new interfaces, so this release will not be
directly useful for most of the users until that work is done. This
release aims to unblock other homeassistant PRs that have been pending
for a long time.
Breaking changes:
- Introduce common interfaces based on device descriptors #1845 (@rytilahti)
- Rename descriptor's 'property' to 'status_attribute' #1759 (@rytilahti)
- Remove {Light,Vacuum}Interfaces #1743 (@rytilahti)
- Rename SettingDescriptor's type to setting_type #1715 (@rytilahti)
- Allow defining device_id for push server #1710 (@rytilahti)
- Reorganize all integrations to vendor-specific dirs #1697 (@rytilahti)
- Remove long-deprecated miio.vacuum module #1607 (@rytilahti)
- Allow passing custom name for miotdevice.set_property_by #1576 (@rytilahti)
- Improve viomi.vacuum.v8 (styj02ym) support #1559 (@rytilahti)
- Clean up raised library exceptions #1558 (@rytilahti)
- Move test-properties to under devtools command #1505 (@rytilahti)
- Implement introspectable settings #1500 (@rytilahti)
- Drop support for python 3.7 #1469 (@rytilahti)
Implemented enhancements:
- Added support for Xiaomi Tower Fan (dmaker.fan.p39) #1877 (@paranerd)
- Raise InvalidTokenException on invalid token #1874 (@rytilahti)
- Added support for Xiaomi Smart Space Heater 1S (zhimi.heater.mc2a) #1868 (@paranerd)
- Add specification for yeelink.light.lamp2 #1859 (@izacus)
- Add support for dmaker.fan.p45 #1853 (@saxel)
- Improve Yeelight by using common facilities #1846 (@rytilahti)
- Mark xiaomi.repeater.v3 as supported for wifirepeater #1812 (@kebianizao)
- Set zhimi.fan.za4 countdown timer to minutes #1787 (@alex3305)
- Add
repeat
param to Roborock segment clean #1771 (@MrBartusek) - Add standard identifiers for fans #1741 (@rytilahti)
- Add standard identifiers for lights #1739 (@rytilahti)
- Make optional deps really optional #1738 (@rytilahti)
- Add roborock mop washing actions #1730 (@starkillerOG)
- Use standard identifiers for roborock #1729 (@starkillerOG)
- Allow defining id for descriptor decorators #1724 (@rytilahti)
- Use normalized property names for genericmiotstatus #1723 (@rytilahti)
- Require name for status embedding #1712 (@rytilahti)
- Add parent reference to embedded containers #1711 (@rytilahti)
- add specs for yeelink.light.colorb #1709 (@Mostalk)
- Cache descriptors on first access #1701 (@starkillerOG)
- Improve cloud interface and cli #1699 (@rytilahti)
- Improve roborock update handling #1685 (@rytilahti)
- Use descriptors for default status command cli output #1684 (@rytilahti)
- Fix access to embedded status containers #1682 (@rytilahti)
- Prettier settings and status for genericmiot #1664 (@rytilahti)
- Implement input parameters for actions #1663 (@rytilahti)
- Handle non-readable miot properties #1662 (@rytilahti)
- Add firmware_features command to roborock #1661 (@rytilahti)
- Improve info output (command to use, miot support) #1660 (@rytilahti)
- Add supports_miot to device class #1659 (@rytilahti)
- Add more status codes for dreamevacuum #1650 (@zoic21)
- roborock: Fix waterflow setting for Q7 Max+ #1646 (@nijel)
- Add support for pet waterer mmgg.pet_waterer.wi11 #1630 (@Alex-ala)
- Add mop dryer add-on of the S7 MaxV Ultra station #1621 (@jpbede)
- Add Roborock S7 MaxV Ultra station sensors #1608 (@jpbede)
- Expose dnd status, add actions for viomivacuum #1603 (@rytilahti)
- Add range_attribute parameter to NumberSettingDescriptor #1602 (@rytilahti)
- Off fan speed for Roborock S7 #1601 (@rogelio-o)
- Add multi map handling to roborock #1596 (@starkillerOG)
- Implement introspectable actions #1588 (@starkillerOG)
- Implement choices_attribute for setting decorator #1587 (@starkillerOG)
- Add additional sensors and settings to Roborock vacuums #1585 (@starkillerOG)
- Add generic miot support #1581 (@rytilahti)
- Add interface to obtain miot schemas #1578 (@rytilahti)
- Add models to parse miotspec files to miio module #1577 (@rytilahti)
- Use rich for logging and cli print outs #1568 (@rytila...
0.5.12
Release highlights:
-
Thanks to @starkillerOG, this library now supports event handling using
miio.PushServer
,
making it possible to support instantenous event-based callbacks on supported devices.
This works by leveraging the scene functionality for subscribing to events, and is
at the moment only known to be supported by gateway devices.
See the documentation for details: https://python-miio.readthedocs.io/en/latest/push_server.html -
Optional support for obtaining tokens from the cloud (using
micloud
library by @Squachen),
making onboarding new devices out-of-the-box simpler than ever.
You can access this feature usingmiiocli cloud
command, or throughmiio.CloudInterface
API. -
And of course support for new devices, various enhancements to existing ones as well as bug fixes
Thanks to all 20 individual contributors for this release, see the full changelog below for details!
Breaking changes:
- Require click8+ (API incompatibility on result_callback) #1378 (@Sir-Photch)
- Move yeelight to integrations.light package #1367 (@rytilahti)
- Move humidifier implementations to miio.integrations.humidifier package #1365 (@rytilahti)
- Move airpurifier impls to miio.integrations.airpurifier package #1364 (@rytilahti)
Implemented enhancements:
- Implement fetching device tokens from the cloud #1460 (@rytilahti)
- Implement push notifications for gateway #1459 (@starkillerOG)
- Add soundpack install support for vacuum/dreame #1457 (@GH0st3rs)
- Improve gateway get_devices_from_dict #1456 (@starkillerOG)
- Improved fanspeed mapping for Roborock S7 MaxV #1454 (@arthur-morgan-1)
- Add push server implementation to enable event handling #1446 (@starkillerOG)
- Add yeelink.light.color7 for yeelight #1426 (@rytilahti)
- vacuum/roborock: Allow custom timer ids #1423 (@rytilahti)
- Add fan speed presets to VacuumInterface #1405 (@2pirko)
- Add device_id property to Device class #1384 (@starkillerOG)
- Add common interface for vacuums #1368 (@2pirko)
- roborock: auto empty dustbin support #1188 (@craigcabrey)
Fixed bugs:
- Consolidate supported models for class and instance properties #1462 (@rytilahti)
- fix lumi.plug.mmeu01 ZNCZ04LM #1449 (@starkillerOG)
- Add quirk fix for double-oh values #1438 (@rytilahti)
- Use result_callback (click8+) in roborock integration #1390 (@DoganM95)
- Retry on error code -9999 #1363 (@rytilahti)
- Catch exceptions during quirk handling #1360 (@rytilahti)
- Use devinfo.model for unsupported model warning
#1359 (@MPThLee)
New devices:
- Add support for Xiaomi Smart Standing Fan 2 Pro (dmaker.fan.p33) #1467 (@dainnilsson)
- add zhimi.airpurifier.amp1 support #1464 (@dsh0416)
- roborock: Add support for Roborock G10S (roborock.vacuum.a46) #1437 (@rytilahti)
- Add support for Smartmi Air Purifier (zhimi.airpurifier.za1) #1417 (@julian-klode)
- Add zhimi.airp.rmb1 support #1402 (@jedziemyjedziemy)
- Add zhimi.airp.vb4 support (air purifier 4 pro) #1399 (@rperrell)
- Add support for dreame.vacuum.p2150o #1382 (@icepie)
- Add support for Air Purifier 4 (zhimi.airp.mb5) #1357 (@MPThLee)
- Support for Xiaomi Vaccum Mop 2 Ultra and Pro+ (dreame) #1356 (@2pirko)
Documentation updates:
- Various documentation cleanups #1466 (@rytilahti)
- Remove docs for now-removed mi{ceil,plug,eyecare} cli tools #1465 (@rytilahti)
- Fix outdated vacuum mentions in README #1442 (@rytilahti)
- Update troubleshooting to note discovery issues with roborock.vacuum.a27 #1414 (@golddragon007)
- Add cloud extractor for token extraction to documentation #1383 (@NiRi0004)
Merged pull requests:
- Mark zhimi.airp.mb3a as supported #1468 (@rytilahti)
- Disable 3.11-dev builds on mac and windows #1461 (@rytilahti)
- Fix doc8 regression #1458 (@rytilahti)
- Disable fail-fast on CI tests #1450 (@rytilahti)
- Mark roborock q5 (roborock.vacuum.a34) as supported #1448 (@rytilahti)
- zhimi_miot: Rename fan_speed to speed #1439 (@syssi)
- Add viomi.vacuum.v13 for viomivacuum #1432 (@rytilahti)
- Add python 3.11-dev to CI #1427 (@rytilahti)
- Add codeql checks #1403 (@rytilahti)
- Update pre-commit hooks to fix black in CI #1380 (@rytilahti)
- Mark chuangmi.camera.038a2 as supported #1371 (@rockyzhang)
- Mark roborock.vacuum.c1 as supported #1370 (@rytilahti)
- Use integration type specific imports #1366 (@rytilahti)
- Mark dmaker.fan.p{15,18} as supported #1362 (@rytilahti)
- Mark philips.light.sread2 as supported for philips_eyecare #1355 (@rytilahti)
- Use _mappings for all miot integrations #1349 (@rytilahti)
0.5.11
This release fixes zhimi.fan.za5 support and makes all integrations introspectable for their supported models.
For developers, there is now a network trace parser (in devtools/parse_pcap.py) that prints the decrypted the traffic for given tokens.
The following previously deprecated classes in favor of model-based discovery, if you were using these classes directly you need to adjust your code:
- AirFreshVA4 - use AirFresh
- AirHumidifierCA1, AirHumidifierCB1, AirHumidifierCB2 - use AirHumidifier
- AirDogX5, AirDogX7SM - use AirDogX3
- AirPurifierMB4 - use AirPurifierMiot
- Plug, PlugV1, PlugV3 - use ChuangmiPlug
- FanP9, FanP10, FanP11 - use FanMiot
- DreameVacuumMiot - use DreameVacuum
- Vacuum - use RoborockVacuum
Breaking changes:
- Remove deprecated integration classes #1343 (@rytilahti)
Implemented enhancements:
- Add PCAP file parser for protocol analysis #1331 (@rytilahti)
Fixed bugs:
Deprecated:
- Deprecate wifi_led in favor of led #1342 (@rytilahti)
Merged pull requests:
- Make sure miotdevice implementations define supported models #1345 (@rytilahti)
- Add Viomi V2 (viomi.vacuum.v6) as supported #1340 (@rytilahti)
- Mark Roborock S7 MaxV (roborock.vacuum.a27) as supported #1337 (@rytilahti)
- Add pyupgrade to CI runs #1329 (@rytilahti)
0.5.10
This release adds support for several new devices (see details below, thanks to @PRO-2684, @peleccom, @ymj0424, and @supar), and contains improvements to Roborock S7, yeelight and gateway integrations (thanks to @starkillerOG, @Kirmas, and @shred86).
Thanks also to everyone who has reported their working model information, we can use this information to provide better discovery in the future and this release silences the warning for known working models.
Python 3.6 is no longer supported, and Fan{V2,SA1,ZA1,ZA3,ZA4} utility classes are now removed in favor of using Fan class.
Breaking changes:
- Split fan.py to vendor-specific fan integrations #1304 (@rytilahti)
- Drop python 3.6 support #1263 (@rytilahti)
Implemented enhancements:
- Improve miotdevice mappings handling #1302 (@rytilahti)
- airpurifier_miot: force aqi update prior fetching data #1282 (@rytilahti)
- improve gateway error messages #1261 (@starkillerOG)
- yeelight: use and expose the color temp range from specs #1247 (@Kirmas)
- Add Roborock S7 mop scrub intensity #1236 (@shred86)
New devices:
- Add support for zhimi.heater.za2 #1301 (@PRO-2684)
- Dreame F9 Vacuum (dreame.vacuum.p2008) support #1290 (@peleccom)
- Add support for Air Purifier 4 Pro (zhimi.airp.va2) #1287 (@ymj0424)
- Add support for deerma.humidifier.jsq{s,5} #1193 (@supar)
Merged pull requests:
- Add roborock.vacuum.a23 to supported models #1314 (@rytilahti)
- Move philips light implementations to integrations/light/philips #1306 (@rytilahti)
- Move leshow fan implementation to integrations/fan/leshow/ #1305 (@rytilahti)
- Split fan_miot.py to vendor-specific fan integrations #1303 (@rytilahti)
- Add chuangmi.remote.v2 to chuangmiir #1299 (@rytilahti)
- Perform pypi release on github release #1298 (@rytilahti)
- Print debug recv contents prior accessing its contents #1293 (@rytilahti)
- Add more supported models #1292 (@rytilahti)
- Add more supported models #1275 (@rytilahti)
- Update installation instructions to use poetry #1259 (@rytilahti)
- Add more supported models based on discovery.py's mdns records #1258 (@rytilahti)
0.5.9.2
This release fixes regressions caused by the recent refactoring related to supported models:
- philips_bulb now defaults to a bulb that has color temperature setting
- gateway devices do not perform an info query as that is handled by their parent
Also, the list of the supported models was extended thanks to the feedback from the community!
Implemented enhancements:
- Add yeelink.bhf_light.v2 and yeelink.light.lamp22 support #1250 (FaintGhost)
- Skip warning if the unknown model is reported on a base class #1243 (rytilahti)
- Add emptying bin status for roborock s7+ #1190 (rytilahti)
Fixed bugs:
- Fix Roborock S7 fan speed #1235 (shred86)
- gateway: remove click support for gateway devices #1229 (starkillerOG)
- mirobo: make sure config always exists #1207 (rytilahti)
- Fix typo #1204 (com30n)
Merged pull requests:
- philips_eyecare: add philips.light.sread1 as supported #1246 (rytilahti)
- Add yeelink.light.color3 support #1245 (Kirmas)
- Use codecov-action@v2 for CI #1244 (rytilahti)
- Add yeelink.light.color5 support #1242 (Kirmas)
- Add more supported devices to their corresponding classes #1237 (rytilahti)
- Add zhimi.humidfier.ca4 as supported model #1220 (jbouwh)
- vacuum: Add t7s (roborock.vacuum.a14) #1214 (rytilahti)
- philips_bulb: add philips.light.downlight to supported devices #1212 (rytilahti)
0.5.9.1 - before the storm
0.5.9.1 (2021-12-01)
This minor release only adds already known models pre-emptively to the lists of supported models to avoid flooding the issue tracker on reports after the next homeassistant release.
Merged pull requests:
0.5.9
0.5.9 (2021-11-30)
Besides enhancements and bug fixes, this release includes plenty of janitoral work to enable common base classes in the future.
For library users:
- Integrations are slowly moving to their own packages and directories, e.g. the vacuum module is now located in
miio.integrations.vacuum.roborock
. - Using
Vacuum
is now deprecated and will be later used as the common interface class for all vacuum implementations. For roborock vacuums, useRoborockVacuum
instead.
Breaking changes:
- Move vacuums to self-contained integrations #1165 (rytilahti)
- Remove unnecessary subclass constructors, deprecate subclasses only setting the model #1146 (rytilahti)
- Remove deprecated cli tools (plug,miceil,mieye) #1130 (rytilahti)
Implemented enhancements:
- Upgrage install and pre-commit dependencies #1192 (rytilahti)
- Add py.typed to the package #1184 (rytilahti)
- airhumidifer_(mj)jsq: Add use_time for better API compatibility #1179 (rytilahti)
- vacuum: return none on is_water_box_attached if unsupported #1178 (rytilahti)
- Add more supported vacuum models #1173 (OGKevin)
- Reorganize yeelight specs file #1166 (Kirmas)
- enable G1 vacuum for miiocli #1164 (ghoost82)
- Add light specs for yeelight #1163 (Kirmas)
- Add S5 MAX model to support models list. #1157 (OGKevin)
- Use poetry-core as build-system #1152 (rytilahti)
- Support for Xiaomi Mijia G1 (mijia.vacuum.v2) #867 (neturmel)
Fixed bugs:
- Fix test_properties command logic #1180 (Zuz666)
- Make sure all device-derived classes accept model kwarg #1143 (rytilahti)
- Make cli work again for offline gen1 vacs, fix tests #1141 (rytilahti)
- Fix
water_level
calculation for humidifiers #1140 (bieniu) - fix TypeError in gateway property exception handling #1138 (starkillerOG)
- Do not get battery status for mains powered devices #1131 (starkillerOG)
Deprecated:
New devices:
Documentation updates:
- Docs: Add workaround for file upload failure #1155 (martin-kokos)
- Add examples how to avoid model autodetection #1142 (rytilahti)
- Restructure & improve documentation #1139 (rytilahti)
Merged pull requests:
- Add Air Purifier Pro H support #1185 (pvizeli)
- Allow publish on test pypi workflow to fail #1177 (rytilahti)
- Relax pyyaml version requirement #1176 (rytilahti)
- create separate directory for yeelight #1160 (Kirmas)
- Add workflow to publish packages on pypi #1145 (rytilahti)
- Add tests for DeviceInfo #1144 (rytilahti)
- Mark device_classes inside devicegroupmeta as private #1129 (rytilahti)
0.5.8
- Add support for smart mi standing fan 3 (zhimi.fan.za5)
- Fix usage of deprecated depth for airhumidifer
Implemented enhancements:
Closed issues:
- Smart Mi Standing fan 3 (Xiaomi Pedestal Fan 3, zhimi.fan.za5) #788
Merged pull requests:
- readme: add micloudfaker to list of related projects #1127 (unrelentingtech)
- Update readme with section for related projects #1126 (rytilahti)
- add lumi.plug.mmeu01 - ZNCZ04LM #1125 (starkillerOG)
- Do not use deprecated
depth
property #1124 (bieniu) - vacuum: remove long-deprecated 'return_list' for clean_details #1123 (rytilahti)
- deprecate Fan{V2,SA1,ZA1,ZA3,ZA4} in favor of model kwarg #1119 (rytilahti)
- Add support for Smartmi Standing Fan 3 (zhimi.fan.za5) #1087 (rnovatorov)
0.5.7
0.5.7 (2021-08-13)
This release improves several integrations (including yeelight, airpurifier_miot, dreamevacuum, rockrobo) and adds support for Roidmi Eve vacuums, see the full changelog for more details.
Note that this will likely be the last release on the 0.5 series before breaking the API to reorganize the project structure and provide common device type specific interfaces.
Implemented enhancements:
- Add setting for carpet avoidance to vacuums #1040
- Add optional "Length" parameter to chuangmi_ir.py play_raw(). for "chuangmi.remote.v2" to send some command properly #820
- Add update_service callback for zeroconf listener #1112 (rytilahti)
- Add rockrobo-vacuum-a10 to mdns discovery list #1110 (rytilahti)
- Added additional OperatingModes and FaultStatuses for dreamevacuum #1090 (StarterCraft)
- yeelight: add dump_ble_debug #1053 (rytilahti)
- Convert codebase to pass mypy checks #1046 (rytilahti)
- Add optional length parameter to play_* for chuangmi_ir #1043 (Dozku)
- Add features for newer vacuums (eg Roborock S7) #1039 (fettlaus)
Fixed bugs:
- air purifier unknown oprating mode #1106
- Missing Listener method for current zeroconf library #1101
- DeviceError when trying to turn on my Xiaomi Mi Smart Pedestal Fan #1100
- Unable to discover vacuum cleaner: Xiaomi Mi Robot Vacuum Mop (aka dreame.vacuum.mc1808) #1086
- Crashes if no hw_ver present #1084
- Viomi S9 does not expose hv_wer #1082
- set_rotate FanP10 sends the wrong command #1076
- Vacuum 1C STYTJ01ZHM (dreame.vacuum.mc1808) is not update, 0% battery #1069
- Requirement is pinned for python-miio 0.5.6: defusedxml>=0.6,<0.7 #1062
- Problem with dmaker.fan.1c #1036
- Yeelight Smart Dual Control Module (yeelink.switch.sw1) - discovered by HA but can not configure #1033
- Update-firmware not working for Roborock S5 #1000
- Roborock S7 #994
- airpurifier_miot: return OperationMode.Unknown if mode is unknown #1111 (rytilahti)
- Fix set_rotate for dmaker.fan.p10 (#1076) #1078 (pooyashahidi)
Closed issues:
- Xiaomi Roborock S6 MaxV #1108
- dreame.vacuum.mb1808 unsupported #1104
- The new way to get device token #1088
- Add Air Conditioning Partner 2 support #1058
- Please add support for the Mijia 1G Vacuum! #1057
- ble_dbg_tbl_dump user ack timeout #1051
- Roborock S7 can't be added to Home Assistant #1041
- Cannot get status from my zhimi.airpurifier.mb3(Airpurifier 3H) #1037
- Xiaomi Mi Robot (viomivacuum), command stability #800
- [meta] list of miot-enabled devices #627
Merged pull requests:
- Fix cct_max for ZNLDP12LM #1098 (mouth4war)
- deprecate old helper scripts in favor of miiocli #1096 (rytilahti)
- Add link to the Home Assistant custom component hass-xiaomi-miot #1095 (al-one)
- Update chuangmi_ir.py to accept 2 arguments (frequency and length) #1091 (mpsOxygen)
- Add
water_level
andwater_tank_detached
property for humidifiers, deprecatedepth
#1089 (bieniu) - DeviceInfo refactor, do not crash on missing fields #1083 (rytilahti)
- Calculate
depth
for zhimi.humidifier.ca1 #1077 (bieniu) - increase socket buffer size 1024->4096 #1075 (starkillerOG)
- Loosen defusedxml version requirement #1073 (rytilahti)
- Added support for Roidmi Eve #1072 (martin9000andersen)
- airpurifier_miot: Move favorite_rpm from MB4 to Basic #1070 (SylvainPer)
- fix error on GATEWAY_MODEL_ZIG3 when no zigbee devices connected #1065 (starkillerOG)
- add fan speed enum 106 as "Auto" for Roborock S6 MaxV #1063 (RubenKelevra)
- Add additional mode of Air Purifier Super 2 #1054 (daxingplay)
- Fix home() for Roborock S7 #1050 (whig0)
- Added Roborock s7 to troubleshooting guide #1045 (Claustn)
- Add github flow for ci #1044 (rytilahti)
- Improve Yeelight support (expose more properties, add support for secondary lights) #1035 (Kirmas)
- README.md improvements #1032 (rytilahti)
0.5.6
Implemented enhancements:
- RFC: Add a script to simplify finding supported properties for miio #919
- Improve test_properties output #1024 (rytilahti)
- Relax zeroconf version requirement #1023 (rytilahti)
- Add test_properties command to device class #1014 (rytilahti)
- Add discover command to miiocli #1013 (rytilahti)
- Fix supported oscillation angles of the dmaker.fan.p9 #1011 (syssi)
- Add additional operation mode of the deerma.humidifier.jsq1 #1010 (syssi)
- Roborock S7: Parse history details returned as dict #1006 (fettlaus)
Fixed bugs:
- zeroconf 0.29.0 which is incompatible #1022
- Remove superfluous decryption failure for handshake responses #1008
- Skip pausing on Roborock S50 #1005
- Roborock S7 after Firmware Update 4.1.2-0928 - KeyError #1004
- No air quality value when aqi is 1 #958
- Fix exception on devices with removed lan_ctrl #1028 (Kirmas)
- Fix start bug and improve error handling in walkingpad integration #1017 (dewgenenny)
- gateway: fix zigbee lights #1016 (starkillerOG)
- Silence unable to decrypt warning for handshake responses #1015 (rytilahti)
- Fix set_mode_and_speed mode for airdog airpurifier #993 (alexeypetrenko)
Closed issues:
Merged pull requests:
- Add basic dmaker.fan.1c support #1012 (syssi)
- Always return aqi value [Revert PR#930] #1007 (bieniu)
- Added S6 to skip pause on docking #1002 (Sian-Lee-SA)
- Added number of dust collections to CleaningSummary if available #992 (fettlaus)
- Reformat history data if returned as a dict/Roborock S7 Support (#989) #990 (fettlaus)
- Add support for Walkingpad A1 (ksmb.walkingpad.v3) #975 (dewgenenny)