Spring-cleaning 2022: Usability improvements, bugfixes and the removal of zone/goto presets + the old UI
Zone/GoTo Preset removal
Valetudo 2022.05.0 removes the Zone Preset/GoTo Location feature that has been deprecated since more than six months now.
As a replacement for this feature, the MQTT interface now accepts coordinates instead of preset IDs.
Thus, users can just change the place where they store their coordinates from the Valetudo config file to e.g., the Home Assistant config files.
Please head over to the MQTT docs to find out how to use it. Still, it has to be done once in a while to keep a clean codebase and focus on what is most important. If you've ever worked with larger legacy enterprise codebases, you should understand the issue. and
See also this anecdote on Oracle 12.2 found on Hackernews.
As avid listeners of my ramblings have likely been aware, I've been very unhappy with that preset feature for more much more than just half a year now. At the time when it was added, it was the best we had, given that map segments simply weren't invented just yet. That however was almost four years ago. Since then, the market changed a lot as you can tell. I know that this may be bad news for V1 owners who do not have segments support and also don't want to use something like Home Assistant. Therefore, for those who want to continue using zone presets and goto locations, it is recommended to stick with Valetudo 2022.03.1.
It's the same payload that is used by the REST API. No surprises there.
If you're unhappy and/or like to know more about why this change was done, feel free to click on this spoiler
Feature removal is delicate topic, since there always will be at least one person that is very upset and unhappy with whatever change was done to a project. See also: XKCD 1172.
Without these kinds of cleanups, projects eventually grow to a point when they start suffocating under their own weight.
They tend to be torn apart by
It was always a very fragile feature to begin with, given that Valetudo itself would store these coordinates without knowing anything about the underlying map.
The robot might've decided to rotate the map, leading to them pointing to a completely different location without Valetudo being able to catch that.
We didn't even have persistent maps, which is very strange to look back to.
Basically every robot now supports not only persistent maps but also the map segmentation, which is handled by the firmware and not Valetudo.
Those are objectively superior to some rectangles that are drawn onto the map, which is why it was finally time to remove this hack.
However, I'd like to point out that there is nothing forcing anyone to upgrade to a newer Valetudo version.
There is no automatic update check that periodically annoys the user.
There is no cloud that will change its API.
It just works and will continue to do so.
It also shouldn't be too hard to backport changes to that version. I however simply can't provide that kind of support.
I hope that you will all understand that.
Removal of the old UI
With the presets gone, we can finally remove the old frontend entirely, which reduced the binary size by around 1MiB.
While this doesn't sound like much given that it's "only" 3%, it's important to note that currently, 24MiB of the armv7 build consist of the bundled nodejs runtime. This means that with this update, the size of Valetudo itself shrunk by 15%!
UI improvements
The menu opening thingy of the mobile UI now always stays at the bottom of the screen to improve user experience when using long phones.
The live map now renders virtual restrictions with more opacity and less bright colors as they were pretty obstructive previously.
The edit map remains unchanged.
The log viewer now uses the jetbrains mono font.
Attachments
Your robot will now only report and display attachments whose state it is able to track. No more always attached dustbins confusing users.
Companion apps
Over the last weeks, a few new companion applications were built:
-
A tray icon that allows easy access to Valetudo instances on your network. It's mostly handy when dealing with 4+ robots
-
A standalone all-in-one firmware update flasher tool for roborock v1 and s5. The docs have been updated to suggest using it
-
A standalone self-contained utility webserver currently most useful for rooting dreames. The docs have been updated to suggest using it
-
A standalone self-contained utility to send raw miio commands. Useful for development of valetudo or other software interacting via miio
-
A WIP tool to help with Voicepacks
These should make installation and usage of Valetudo even easier than before.
Other news
We're currently pretty busy figuring out how to root new robots and/or firmware versions.
These endeavors are partly funded by your donations. Thank you!
If you want to see Valetudo on more robots, you might want to consider donating:
https://github.com/sponsors/Hypfer
https://builder.dontvacuum.me/donations.txt
Autogenerated changelog
Features
- mqtt: Provide attachment state attributes autodiscovery for home assistant (b7b6344)
- ui: Improve mobile controls for long screens (f7f3f0d)
- ui: Reduce live map obstructions caused by virtual restrictions (ddec0b3)
- ui: Use JetBrains Mono (5a7045c)
- vendor.dreame: 1C PendingMapChangeHandling (1b2f3bf)
- vendor.dreame: Add support for the STYTJO6ZHM (519c5b4)
- vendor.viomi: Fetch and display firmware version (7f08743)
- vendor.viomi: Raise zone count limit to 10 (8130e24)
- Provide list of attachments supported by the model of robot (fe65df3)
Bug Fixes
- mqtt: MqttController default state should be disconnected (137e630)
- networkadvertisement: Disabling the Network advertisement multiple times in a row should not cause any issues (789608f)
- ui: Allow closing of ValetudoEvents even if there are a lot (ec599b2)
- ui: Fix auto empty dock control loading state (7ec1e5d)
- ui: Handle timers with invalid actions (b467443)
- ui: use correct relative paths to allow hosting in a subdirectory (6129ec5)
- vendor.dreame: Fix 1C powersave state mapping (fdb51e7)
- vendor.roborock: Don't update state for attachments that we don't have (f27bbfd)
- vendor.roborock: Fix manual control for roborock v1 (abccee4)
- vendor.roborock: Fix obnoxious "no error" error event (f3b4a54)
- vendor.roborock: Remove confusing attachments that never get updated (e4274d3)