Five new supported robots, Four new features and improvements, Three new icons, Two new firmwares, One new year
Viomi is dead, long live Viomi
The rising prices in Germany served as motivation to look into the Viomis again after having ended support for them a few releases ago.
Even though they're pretty mediocre robots, they're also relatively inexpensive and abundantly available both new and used.
Thanks to your donations, I was able to buy a few test devices to change that. Being able to directly verify correctness, reproduce issues and debug solutions yourself greatly helped with motivation. Furthermore, as they already had code for support in Valetudo, this wasn't actually all too much work.
I'd say that the implementation is now mostly on the quality level of the other supported robots. No more unparsable maps :)
The firmware itself is still a bit slow and weird, but you can very well live with that for the price of the unit.
Additionally, the rooting process has been reworked to be way more similar to other supported robots.
Plenty of Viomi
Another big announcement is that Viomi is actually many now.
As you may or may not have known, Viomi is not a real vacuum robot manufacturer. Instead, they're just ordering "Viomi"-branded robots from the ODM 3irobotix. Specifically in our case it's the CRL-200S vacuum robot which has Valetudo support under its Viomi identity. Viomi is not the only "brand" that does that. In fact, there are quite a few that all feature the same hardware specs.
A question we had in the back of our minds for a while now was: "Can you just flash those other robots with a Viomi firmware?"
Turns out: Yes, you can.
And so, with no additional changes in Valetudo required, you can now free even more robots from the cloud.
The following models have been tested so far by me:
- Proscenic M6 Pro
- Cecotec Conga 3290
- Cecotec Conga 3790
Additionally, these models look promising and should be evaluated in the future:
- Viomi SE
- All other Cecotec Conga 3****
- Wyze Robot Vacuum
- Commodore CVR 200
- Kärcher RCV 3
If you have any of those and would like to help, please ping me.
Roborock updates
While I was busy figuring out the Viomis, Dennis once again looked into new and existing Roborocks.
Also, once again thanks to your donations, I was able to buy a used S5 Max (and only got scammed once). Not only was this used for testing Valetudo but also to write step-by-step FEL rooting instructions for the Valetudo docs, which should make the whole process easier to understand.
Firmware updates
The latest firmware versions for the S5 Max and S7 will soon be available in the Dustbuilder.
These now include a mapping pass functionality, which is also supported by the latest version of Valetudo.
Note: As we don't have a test device for the S7 (yet?), we weren't able to verify that it works properly.
Q7 Max support
Due to - you guessed it - donations, we were able to buy this robot to see if it can be rooted.
And yes, we're pleased to announce that the FEL rooting method also works with the Q7 Max.
The Q7 Max and it's Auto-empty-dock sibling Q7 Max+ are now fully supported by Valetudo.
Expect to see it in the Dustbuilder soon.
Valetudo features
Apart from robot support, there were also quite a few other changes.
Live Map rework
This release introduces a Map Mode selector to the Live Map.
If you want to do something, first select what you want to do and then simply interact with the map.
The reasoning behind this change is that a few releases ago, it became possible to select segments by simply tapping on them anywhere.
As this conflicted with the Go-To marker feature, that feature was moved to press-and-hold. This wasn't because it was a particularly good idea to use a long press for that but because there was no other idea what to use.
With this change, the UX should be significantly better especially for newcomers, since you're now being shown directly which interactions with the map are possible and how you can do them.
This is also mostly just a return to the idea @Jomik proposed back in early 2021 when rewriting the frontend in react.
Thanks once again!
New Icons
The previously confusing "1x" button in the live map view now features an icon that should be self-explanatory.
Also, Icons in the menu have been updated for consistency and easier understanding.
Welcome Dialog
Speaking of newcomers, there's now a welcome dialog that tells a new user what their next steps should be.
It also conveniently features all the correct controls for their robot to make getting started even easier.
If you first want to play around with Valetudo without permanently dismissing the dialog, you can also temporarily hide it.
It will then reappear on the next page refresh.
Valetudo Options
A new sub-menu was introduced with this version of Valetudo
Config reset
It's now possible to reset the configuration via the UI. This can be useful if you'd like to gift a rooted robot to someone.
Unfortunately, we've slightly missed Christmas with this update.
If you'd like to see that welcome dialog again, resetting the config will allow you to do that.
Update Provider Settings
The UI now also allows you to select the update channel.
The default "Release" channel should be used by most people, however if you like to live dangerously and want to support the development by testing unreleased versions for bugs, you can pick "Nightly".
The updater will then continue to work as it did before but pull its updates from the selected channel.
Tray Companion
The Valetudo Tray Companion app now works on both Windows and Linux thanks to @NKnusperer.
https://github.com/Hypfer/valetudo-tray-companion
The usual
If you want to see Valetudo on more robots and/or like this release, you might want to consider donating:
https://github.com/sponsors/Hypfer
https://builder.dontvacuum.me/donations.txt
Autogenerated changelog
Breaking Changes
- ui: Restructure router and add controls for update provider and configuration reset
8706988
Features
- vendor.dreame: Add mop dock autorepair trigger quirk
9932b03
- vendor.roborock: Add support for the Q7 Max
bb6b66f
- vendor.roborock: Implement RoborockMappingPassCapability
8374951
- ContainerEntity upsert should return the previous attribute
38ccba5
- ui: Add proper robot options icon
046087c
- ui: Allow temporarily hiding the welcome dialog
f1c7238
- Allow selection of the update provider
68efeb8
- Add action to reset the config to defaults
e7959a4
- ui: Reintroduce live map mode toggle
27554be
- oobe: Don't show welcome dialog for existing installations
0695457
- ui: Change some icons
759288e
- ui: Add iterationsIcon to live map controls
0180c65
- oobe: Add welcome dialog
a43f30f
- vendor.roborock: Add implementations for Roborock S7 auto empty dock
39207e8
- vendor.dreame: D10S Pro
0939cbd
- vendor.viomi: Introduce ViomiOperationModeControlCapability
d764438
- vendor.viomi: Add y_mopping quirk
5ac847f
- vendor.3ir: Introduce common 3irobotix map parser
8f5013a
- vendor.viomi: Track active segments
56b0bf6
- vendor.viomi: Refactoring, fixes and tests
7882db4
- ui: remove redundant first confirmation dialog for fetching updates
4d01657
Fixes
- Handle additional content in iw command output
e5a2791
- vendor.viomi: Repoll map on state change if it is an active state
aac44b4
- vendor.roborock: Ignore unknown_method message caused by miio_client downgrade on newer roborocks
226a938
- vendor.roborock: Fix map not instantly repolling on state change for newer roborocks
559076d
- miio: Use non-0 uid for provisioning to fix a38 0866 provisioning
68e6d35
- ui: Welcome dialog should work especially when embedded
f97184d
- vendor.dreame: Add warning message workaround for the half-broken W10 MappingPass
2471c59
- ui: Fix segment actions for live map not handling the new live map mode selection properly
56193f8
- updater: Delete any downloaded binary when reconfiguring updater
2a74157
- ui: Clamp segment intersection calculation to map area
dec5efb
- ui: Fix dock controls on very small screens
492cb42
- Reduce map polling interval when dealing with huge maps to prevent valetudo from going OOM
718115c
- ui: Remove confusing state timestamp from NTPConnectivity
692085e
- updater: Better error message logging on http errors
b6e7820
- vendor.dreame: Remove broken operation mode control for W10 and reintroduce mop only quirk
8b8d7a2
- vendor.3ir: Fix segment name block parsing
99897a5
- vendor.viomi: Don't raise three events for a single error
f143319
- ui: Allow valid slashes in mqtt topic prefix
1f06b86
- ui: Fix occasional unexpected scrollbars
bafdb4d
- vendor.3ir: Parse temporary maps
f43a7ed
- vendor.3ir: Fix map parser going oom if uniqueMapId is all 0
b351686
- Add .catch() handler to previously unhandled promises
db5aeca
- miio: Protect against invalid Wi-Fi passwords
4c873b7
- mqtt: Make sure that we only refresh handles while we're connected
67e66a0