This release features Home Assistant MQTT Autoconfig for the Map Data, an NTP Client and more.
Map Autodiscovery
The Valetudo Map Data is now optionally (on by default) provided as embedded and compressed text of a PNG file.
This is not only easy due to the nature of the PNG file format but also 100% according to specs.
We're actually publishing a completely valid PNG to MQTT containing the full Map as a JSON.
This enables Valetudo to do Home Assistant Autoconfiguration for the Map as well since camera entities aren't persistent to the HA database and therefore no user interaction regarding the exclusion of the map entity from the recorder is needed.
I'm quite happy with this approach because there's no added CPU load to Valetudo since we're just sandwiching the deflated Map JSON between other PNG chunks.
Furthermore, providing the raw map data instead of an image enables better interactions with the map such as
- better zooming
- custom colors
- custom icons
- mouseover things
- click-to-select things
etc.
The lovelace-valetudo-map-card is required to extract and render
the map data from the camera image.
If you were already using the Valetudo Map in Home Assistant, you will need to revise your setup.
No worries though. It is much easier now :)
NTP Client
During "normal" cloud operation, miio-based robots receive the time via the miio protocol. This of course resulted in
the robots syncing their time to their time, which doesn't make much sense and may even interfere with some features.
Also, not all robot firmwares contain a build of ntpd
and cross-compiling can be hard.
Therefore, there's now a simple NTP Client integrated into Valetudo, which by default fetches the time from pool.ntp.org
on startup
and every 8 hours after a successful sync.
It can be disabled via the configuration file and doesn't do anything if Valetudo isn't running in embedded
-mode.
Of course, you can also change the ntp server to a different one in the configuration file if you happen to own a
stratum-0 cesium atomic clock or even a fritzbox with an integrated ntp server.
UI-Accessible Logs
Thanks to @ccoors, you will now find the contents of your Valetudo logfile under Settings > Info in the Web UI.
No need for SSH anymore.
It is also possible to temporarily increase the Loglevel there until the next reboot.
If you're looking for stuff like the firmware version or your local token, the log viewer is the right place for you.
Misc
@bensweet86 ported even more capabilities over to the new capabilities system. Starting with this release, Valetudo is now
able to both control the volume and the carpet mode setting again.
Furthermore, he also fixed a long outstanding bug regarding pinch to zoom on iOS devices.
Dreame support has been improved as well.
Public root for those is still TBA.
There were also quite a few changes regarding the cloud redirection in this release.
Please make sure to follow the official upgrade instructions so that you don't run into any issues.
Autogenerated changelog
Features
- logger: Log config and logfile location to logfile (0171a8d)
- Add Valetudo log to UI (#690) (89320f4)
- Log the firmware version if embedded (4bd09c8)
- core: Change the interface of the SpeakerVolumeControlCapability and add the SpeakerTestCapability (56b0637)
- mqtt: Home Assistant Autodiscovery for Maps by embedding the map data in a png (83d1d13)
- vendor.dreame: Consumable monitoring (e986687)
- vendor.dreame: D9 error codes (669f192)
- vendor.dreame: Improve handling of RISM maps (186abd3)
- vendor.dreame: Minor improvements for D9 Firmware 1072 (ef949be)
- vendor.dreame: Virtual Restrictions (3f1f494)
- vendor.dreame: Volume Control + Volume Test (1509be3)
- vendor.roborock: Roborock/Capability Carpet Mode (#661) (54ca606), closes #656
- vendor.roborock: Volume Control + Volume Test (4a47939)
- NTPClient (8b54c7d)
Bug Fixes
- logger: Default loglevel should be info (3e23678)
- logger: Do not log twice if logfile is the same as stdout redirection (#691) (2bd4c82)
- logger: Logger should log 🪵 ([58515d9](58515d97559b 8bd2ab2ac12ddfbadd4fad576d9f))
- miio: Don't get confused by the system clock doing weird things (5e6d8df)
- miio: http_dns: Block ott.io.mi.com requests (#671) (852683b)
- miio: One failing message should not kill the process 20 minutes later (e5fd0a5)
- miio: Set ServerSocket to disconnected on timeouts to prevent valetudo breaking on wifi issues (e14935d)
- mqtt: Fix home assistant vacuum.send_command functionality (97ac35e)
- ntpClient: Intercept dns lookup calls for our ntp server as well (c7095a7)
- ui: Fix for pinch zoom bug in IOS / Safari (#683) (3c0a644)
- ui: SSE Map updates should use a relative path (54bc2b7)
- vendor.dreame: Don't store empty MapLayers (1230c08)
- vendor.dreame: Proper angles (43aa8c6)
- vendor.dreame: Properly parse map with correct rotation, offsets etc (5e037c2)
- vendor.roborock: calculation of max elements for virtual restrictions (#681) (2e4421b)
- vendor.viomi: consumables command fix for viaomi.v8 (#677) (bef609e)
- vendor.viomi: Resolve #672: Fix viomi fan speed control (#673) (be0efca)
- vendor.viomi: Various fixes for 2020.01.1 (a38987a), closes #641
- webserver: Fix handleHttpDnsRequest scope (8226e4a)
- webserver: Rate-limit logfile access (8fd53a5)