github Hypfer/Valetudo 2021.04.0
Valetudo 2021.04.0

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

2021.04.0

This release features a complete rewrite of the MQTT interface, which brings superior OpenHAB support by fully
implementing the Homie specification, Segment renaming, Water Usage Controls, No-Mop-Zones, UI improvements and better
stability in low-mem environments such as the Roborock S5 Max

Newcomer Guide

To answer common questions newcomers or people that haven't actively been following the project may have, there's now
the Valetudo Newcomer Guide Early 2021 Edition in the docs.

MQTT Rewrite

@Depau has spent countless hours completely rewriting the MQTT Interface of Valetudo.
Note that this is a breaking change and will require additional attention from you on upgrade.

We're now fully Homie-compatible which brings much better support for Home Automation systems other than Home Assistant such as OpenHAB which has recently been completely overhauled.
Make sure to check out their new demo as well as the Valetudo OpenHAB integration docs.

If you're using something else such as FHEM or ioBroker, the new Homie MQTT implementation should also be much easier to work with.
Documentation on the new MQTT schema can be found in the MQTT Docs.

Davide also went the extra mile and wrote an excellent developer documentation for the new MQTT feature which is a must-read if you want to contribute to that part of Valetudo.

Home Assistant MQTT Rewrite FAQ

Valetudo will try its best to auto-migrate your configuration file and Home Assistant configuration.
However, the latter may not work 100% all the time. Therefore, here's an FAQ for Home Assistant users migrating to Valetudo 2021.04.0

Q: Home Assistant now shows everything as unavailable.
A: Refresh the page

Q: The consumables do not update in Home Assistant
A: Wait one minute, or open valetudo and navigate to the consumables page

Q: ICBINV does not seem to be retrieving the map
A: The map topic changed, it is now TOPIC_PREFIX/IDENTIFIER/MapData/map-data, update your ICBINV config and ICBINV to 2021.04.0

Q: Some stuff is still not detected by Home Assistant
A: Reset the autodiscovery configuration by performing the following:

  1. Go to the MQTT settings
  2. Disable MQTT, enable "Delete autodiscovery on shutdown" under "Home Assistant Autodscovery".
  3. Save MQTT configuration
  4. Check Hass to ensure everything has disappeared, refresh the page as needed.
  5. Enable MQTT, disable "Delete autodiscovery on shutdown" under "Home Assistant Autodscovery".
  6. Save MQTT configuration

Q: vacuum.send_command doesn't work anymore
A: Yep. The docs will be updated shortly with information on how to achieve the same stuff now

Segment Renaming

Valetudo now supports (re-)naming segments and cleaning them from the UI Homepage in the same way you'd trigger a
ZonePreset cleanup.

image

Water Usage Control and No-Mop Zones

It is now possible to control the water grades of your robot using Valetudo, which is a completely new feature
that never appeared elsewhere before :^)

Furthermore, no-mop-zones are back as well.

image
image

Lowmem enhancements

As it turns out, running nodejs in very resource-limited embedded environments such as vacuum robots isn't exactly
the intended core use-case of the runtime, which is why we seem to be pushing the limits especially on devices with
only 256mb ob ram such as the Roborock S5 Max.

Another surprising discovery is that Nodejs Buffers are not part of the configured heap, which is why even though we've
set the maximum heap size to under 40mb, in some cases, the rss of Valetudo grew to over 100mb, which then caused some
robots to go out of memory.

For some reason, the garbage collector simply doesn't care about old and unused Buffers even if the memory pressure rises.
Therefore, for now, we're forcing a manual garbage collection if the memory usage seems odd.

This significantly improved the stability on the S5 Max and is now enabled for all builds.
Still, I'd recommend choosing the lowmem build for 256mb ram roborock robots.

UI

Stuff such as Virtual Walls will now snap to reasonable angles on creation so that you don't get virtual walls that are infuriatingly almost straight but not quite.

Musl

Thanks to recent changes in vercel/pkg, the nodejs base binaries used are now statically linked against musl instead of glibc,
which apart from being neat enables us to drop the DNSHack.

Also, we've upgraded the runtime to Node v14.16.1

Dreame Support

The Dreame 1c support has been greatly improved thanks to the help of @FrankZZ

Public root coming soon™

Autogenerated changelog

Features

  • core: Collect our own garbage (3c3df9a)
  • core: MapSegmentRenameCapability (6371291)
  • MockRobot: add GoToLocationCapability and MockMap (2957e25)
  • MockRobot: add MapResetCapability (531498b)
  • MockRobot: Add MockCarpetModeControlCapability (#759) (5bd5fb7)
  • MockRobot: Add MockConsumableMonitoringCapability (6d8b8e0)
  • MockRobot: Add MockDoNotDisturbCapability (f85194c)
  • MockRobot: Add MockWifiConfigurationCapability (accba05)
  • MockRobot: add PersistentMapControlCapability (f91e8e7)
  • MockRobot: Add speaker capabilities (12d1a27)
  • mqtt: Add MapSegmentationCapabilityMqttHandle (#842) (0534888)
  • mqtt: Add vacuum error state description property (#850) (14793c7), closes #816
  • mqtt: Await MQTT disconnect before proceeding with shutdown (1c0410c)
  • mqtt: Provide segment information (f104189)
  • mqtt: Remove increase/decrease from intensity capability (#843) (e6fd6e4)
  • ui: Add dialog for renaming segments (#772) (306b8ba)
  • ui: add Segments on home (2129e22), closes #773
  • ui: capitalize robot states in UI (#765) (c988e69)
  • ui: Generate consumables list dynamically (#764) (05d658b)
  • ui: Snap zones and walls to grid and reasonable angles to implement #796 (25836e8)
  • ui: Toggle button states depending on Robot Capabilities (#769) (cc66d52)
  • ui: Water Usage Control (cf375ce)
  • vendor.dreame: 1C voicepack install support (#795) (b72ca53)
  • vendor.dreame: Add Dreame F9 (4fe0ff7)
  • vendor.dreame: Add more 1C variants (9e2e194)
  • vendor.dreame: Add MOVA Z500 (0107932)
  • vendor.dreame: DreameCarpetModeControlCapability (2d674d4)
  • vendor.dreame: DreameMapResetCapability (f60fe24)
  • vendor.dreame: DreameWaterUsageControlCapability (8be7cd4)
  • vendor.viomi: Add viomi.vacuum.v6 to supported devices (#849) (a18633c), closes #848
  • webserver: Add X-Valetudo-Version header (d494510)
  • Debug capability (#813) (4866475)
  • Remove DNSHack since we're using musl now (79194b6)
  • SSE Endpoints for State and StateAttributes (c90d426)
  • vendor.dreame: 1C active zone & segments (2281701)
  • vendor.dreame: DreameMapSegmentRenameCapability (1470c53)
  • vendor.dreame: Implement/setup most capabilities of the 1C (256b907)
  • vendor.dreame: Update 1C properties_changed handling (83dddfe)
  • vendor.dreame: Use currently configured water grade and fanspeed when starting a zone or segment cleanup (200b13b)
  • vendor.roborock: RoborockManualControlCapability (59b9bd5)
  • vendor.roborock: RoborockMapSegmentRenameCapability (4d6a1a4)
  • vendor.roborock: RoborockWaterUsageControlCapability (fdebd3c)
  • vendor.viomi: Add MapResetCapability (#785) (696d76b)
  • vendor.viomi: Add ViomiMapSegmentationCapability (#762) (1a9eef4)
  • vendor.viomi: Add ViomiMapSegmentRenamenCapability (0123f24)
  • vendor.viomi: Manual control capability (#740) (a5324e8)
  • vendor.viomi: ViomiMapSegmentEditCapability (#766) (a210b0e)
  • no-mop zones (f011023)

Bug Fixes

  • core: Add name to ValetudoMapSegment (e9da2cf)
  • core: Lowmem enhancements (5787afa)
  • core: Segment IDs should be strings (97c832e)
  • miio: Improve error message on missing keys in device.conf (7ed177a)
  • mqtt: Await close event before considering MQTT closed (1afa717)
  • mqtt: Do not disconnect on cfg reload if not connected (5c74342)
  • mqtt: Handle nested reconfiguration (#841) (c0ff5ce)
  • mqtt: Make BasicCtl actually home when HOME is sent (8272dd5)
  • mqtt: Map zone presets to zones (#839) (8ac882f)
  • mqtt: Remove test leftovers from consumable monitoring (#831) (ec289a0)
  • ui: instead of hiding settings based on capabilities at page load, unhide at page load (#774) (e5f0f4f)
  • vendor.roborock: do not send empty layers (#809) (a2e1c21)
  • vendor.roborock: Don't store null to this.state.map on map parse failure (ae4bf24)
  • vendor.roborock: Fix segment rename (0bed81a)
  • vendor.roborock: Fix V1 capabilities (6cdcc1e)
  • vendor.roborock: Renaming map segments always requires the full list of names (559d1ad)
  • vendor.roborock: Roborock expects a number as the segmentId (1e6db81)
  • vendor.viomi: Don't store paths with zero points (77e7128)
  • vendor.viomi: Fix "Unknown water grade" (#784) (04f2df4)
  • vendor.viomi: Fix basic control functionality (#782) (a0fa7f4)
  • vendor.viomi: Fix last clean time (#822) (21b5876)
  • vendor.viomi: Fix map issues (hopefully) (#819) (07a1c7a)
  • vendor.viomi: Fix operation mode selection (710758d)
  • vendor.viomi: Fix water grade controlling fan speed instead (#791) (3f4d844)
  • vendor.viomi: Increase timeout for set_timezone (#806) (a128a91), closes #799
  • vendor.viomi: Raise default miIO timeout (#817) (5f6068d)
  • vendor.viomi: replace fanSpeeds with waterGrades (#825) (2b5d3e6)
  • vendor.viomi: Viomi segment edit fixes (#821) (5c8495c)
  • Improve state handling in MockConsumableMonitoringCapability (1138c84)
  • MapParsers should not return empty path map entities (371ceea)
  • Typo in ConsumableStateAttribute (7d64a1a)

Don't miss a new Valetudo release

NewReleases is sending notifications on new releases.