github Hypfer/Valetudo 2022.03.1
Valetudo 2022.03.1

latest releases: 2024.02.0, 2023.12.0, 2023.10.0...
2 years ago
valetudo

2022.03.1

Ordered segment cleanups via the UI, MQTT deduplication and a lot of internal refactoring

Ordered segment cleanup

The UI now tracks the order in which segments were selected, meaning that if your robots' firmware supports it, they will be cleaned in the order you've specified.

If supported, the order will be displayed as a roman numeral above the segment label triangle.

image

MQTT

The MQTT connectivity feature now reports a state to the UI. Furthermore, it also collects some statistics.

image

By watching those stats, you will notice that this release also causes less traffic, as most outgoing messages are deduplicated.

Initially, I didn't want to do that as the solution proposed was to just store every payload in memory and then compare on each mqtt publish.
That would work, however it comes with a hefty ram overhead as you now have to constantly keep 300+ somewhat long string payloads in memory.
With each character taking up 2 byte, this approach isn't feasible with the ram budget we have (32 Mbyte or less).

To reduce the amount of ram required, we could use a hash function such as md5, however that would still be too much.
As they'd be saved as hex strings, that would mean 32 characters each with each character taking up 2 bytes, resulting in each pair of topic and payload using 128 byte or more.

Thus, instead we're now using 32-bit CRC32. With object keys being strings, I'd think that these pairs should use around 20 byte each.
The downside of CRC32 is that the risk of collisions is much higher. However, I highly doubt that that could actually happen in this application.

To save CPU time, which is also quite limited on our robots, the (in comparison) huge map data is not being deduplicated.

Misc

  • The system information page will now display the current robot firmware version if available
  • The UI will now prevent the user from configuring invalid MQTT topic names (containing spaces, # or +)
  • The UPnP/SSDP lib was dropped in favour of our own implementation, which should fix some unhandledRejections caused by the lib
  • The log viewer now doesn't scroll back down automatically if the user scrolled up
  • TotalStatistics should now also work for the Roborock S7
  • It is now possible to disable network advertisement (bonjour/mDNS and UPnP/SSDP) via the UI if you so desire
  • The nonsensical always-attached dustbin attachment has been removed
  • It is now possible to have 50% more virtual restrictions on roborock robots

Autogenerated changelog

Features

  • ui: Allow setting the order of segments cleaned if support by the robot (9eec3b6)
  • NetworkAdvertisementManager UI control (bd5fa9c), closes #1168
  • core: Remove outdated VirtualWallCapability and RestrictedZoneCapability (5e24783)
  • core: Remove SensorCalibrationCapability (5b081a7)
  • mqtt: Collect runtime metrics and provide them via REST (dcc1db4)
  • ui: Display firmware version if available (e78e9b4)
  • ui: Display MQTTClient status (c54ebc8)
  • vendor.roborock: Support S7 total statistics (d1926a9)

Bug Fixes

  • core: Fix free memory reporting on kernels >= 3.14 (dceea16)
  • miio: Don't throw plain objects on error responses (e84fe8c)
  • miio: Fix RetryWrapper never handshaking on stale stamp (326cb4b)
  • mqtt: Deduplicate outgoing messages (b835336)
  • networkadvertisement: Replace ssdp lib with custom implementation (f5e505a)
  • ui: Disallow whitespaces, + and # for mqtt topic customization (8148736)
  • ui: Make the logviewer only auto-scroll if it is already scrolled down (3c24eba)
  • vendor.dreame: Mapping passes can only be done by lidar-based robots (411fab5)
  • vendor.dreame: Re-enable custom order segment cleanups and hope for the best (744a4bb)
  • vendor.roborock: Fix roborock virtual restrictions counting vertices incorrectly (cc5e37b), closes #1423
  • vendor.roborock: Properly parse and handle lab_status and map_status (e158ac4), closes #1424
  • Remove nonsensical always-attached dustbin attachment (b9bd959)
  • SegmentIds should be strings (6325045)
  • SegmentIds should be strings pt2 (a8d314d)
  • ui: Fix customOrder flag for segmentActions (07c5281)

Don't miss a new Valetudo release

NewReleases is sending notifications on new releases.