Cloud replacement for vacuum robots enabling local-only operation
Events via MQTT, new default NTP server, maintenance & polish
Starting with this release, ValetudoEvents are now being published to MQTT.
With that, you can now build automations that react on e.g. the DustBinFullValetudoEvent (if applicable to your robot).
It works similarly to how segment data is published to Home Assistant. Thanks, @mundschenk-at for the input on how to design that!
If you're using Home Assistant, you should have a new sensor entity after the update. If you're using something else or want to know how to interact with events, head over to the MQTT docs on https://valetudo.cloud
Valetudo by default now syncs its time from valetudo.pool.ntp.org
.
Using a vendor zone like that is a requirement from the people behind pool.ntp.org
for any larger project or product.
Thanks, @rimrul for pointing out that requirement!
If your deployment still uses pool.ntp.org
, it will be migrated automatically.
Also, the NTP Client now uses an exponential backoff retry strategy on error.
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
6b15920
1a3a9f8
cc2ecc3
3880f8b
25f428f
9b01829
Quality of Life, Maintenance, Merry Christmas and it's finally 37c3 time
All buttons floating on top of map views now have icons!
It's one of these changes that leaves you wondering why you didn't do that earlier. Thanks again for the input, @alufers!
With the play icon there, maybe less newcomers will click on the large play button provided by the BasicControlCapability?
I don't know what I expected for a join icon.
Virtual restrictions not only received custom icons but also a slight overhaul, adding counters, shortening button labels and adding a "Clear" button for consistency.
If you're using Home Assistant, with this release, you will see the battery state of the robot as an icon in the device overview. @mill1000 noticed that we previously forgot to set the correct device class on the battery entity.
Neat!
This release bumps (almost) all dependencies to their latest versions including the necessary refactorings caused by breaking API changes. Boring, tedious work that just needs to be done periodically. On top of that, the NodeJS base binary was upgraded to v20 from the v18 used previously.
I still need to upgrade from react-router v5 to v6, but that will be a new year's resolution.
With these changes, from a user perspective, things should be exactly the same as before.
With that whole pandemic thingy finally being resolved and behind us, the Chaos Communication Congress will return to Hamburg!
Dennis and I will be there with rooting PCBs for Dreame, Valetudo stickers, a weird robot that may or may not be rootable and also a new talk by Dennis.
Come say hi :)
If you don't know how to do that because you have no idea how I look like, just stand in front of a candle-lit mirror and say "multi-floor support" 13 times. Looking for a table with some vacuum robots on it might also work.
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
5621418
4e958da
e3d13fa
eadc2a7
aac0f51
744fe20
d17b299
c20731d
d4f37e4
9e4617b
Fixes for bugs and annoyances + support for the W10 Pro
In the last month I finally found a reasonably-priced used W10 Pro locally. As I expected, I got scammed by the seller since one of the pumps in the dock was broken but it worked well enough to figure out and validate the rooting mechanism.
What's interesting about this model is that it was dreame's first one with an AI camera and thus they apparently threw lots hardware at the problem.
It comes with an 8MP camera which I promptly took for a spin outside. I was a bit surprised that no one at the local supermarket said anything about that random guy pointing a vacuum robot at the local bodega cat but maybe they were all just scared?
Anyway, here you can see a few pictures taken with the robot. No post-processing applied (Click to enlarge)
Good thing that there is Valetudo to disconnect it from the cloud. :-)
Apart from W10 Pro support, this release also comes with fixes to a few annoyances and bugs. Unfortunately, none of these things can be captured by static screenshots so no visualization today.
If you've ever used the Valetudo UI on mobile, you might've noticed that the icons behaved strangely when zooming the map. I thought there was no way to fix that as my understanding of the issue was that it had to be like that due to performance limitations.
As it turns out, this wasn't true. After revisiting the code, it is now finally fixed.
No longer will icons grow super large and then suddenly snap to the right size once you let go of the screen.
Now that almost two months have passed since the Home Assistant 2023.8 release that introduced a breaking change to the way MQTT autodiscovery works, I hope that this should have given Valetudo users enough time to update their Home Assistant instance without being forced to take some quick and unplanned action.
Thus, Valetudo now complies with the new requirements regarding their device and entity naming. This is a somewhat breaking change on the Valetudo side which might cause names but not IDs to change in older Home Assistant releases.
Overall not a big deal but it should get rid of a confusing warning message in HA that was especially confusing for newcomers.
While implementing and testing support for the W10 Pro, I've noticed that the way Valetudo implemented the ObstacleAvoidanceControl was wrong for the AI Camera based models. The way it worked before only influenced the Line laser obstacle avoidance which doesn't exist on W10 Pro and D10s Pro/Plus.
I missed that, because there is both Line Laser and AI Camera obstacle avoidance on the L10s Ultra and disabling one of them made a difference in navigation leading to me asking no further questions.
Interestingly, it seems that disabling the Line Laser Obstacle Avoidance on the L10s Ultra isn't possible at all using the Vendor app? Weird.
But no matter. Valetudo now does the correct thing on all supported robots.
During this release cycle, I did take the time to write down the promised rooting instructions for the freshly supported models from the last release. They are now available on valetudo.cloud.
Additionally, we've finally been successful in eliminating the need for a Windows machine for the new fastboot rooting procedure. All you will need is Debian - a statement that applies to not just these rooting instructions :)
Lastly, as might've already noticed, the OpenAPI spec is now also one of the release assets and can be found in the nightly repo as well. This should be helpful for people wanting to take a look at the API without having a robot at hand.
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
9d0fed1
1d0dec7
a7179d2
db52169
810e2e7
7e4fdfe
7108bca
fd8193a
1e0a306
d34f49c
9acc263
DEFCON 31 - 7 newly rootable robots, new rooting method for 6 robots with a previous root, 5 more new robots in the pipeline
If you haven't seen it already, I highly recommend watching our latest talk:
https://media.ccc.de/v/camp2023-57158-vacuum_robot_security_and_privacy (CCCamp 2023 version)
The Valetudo docs have already been partially updates with new rooting methods and robot details. It will take some more time to fully finish all documentation. Please bear with me :)
The new Dreame Rooting PCB can be found here: https://github.com/Hypfer/valetudo-dreameadapter
As a spoiler, here's the full list of what we just released in that talk:
These robots are now rootable for the first time
These robots have been rootable previously but received firmware patches that blocked the old methods
We're currently finishing up the rooting methods for these robots. It might take a little while as it's conference season
While most of our time was spent getting the fresh rooting methods ready, a few things extending beyond adding support for the new robots also happened to Valetudo
With the Roborock S8 now being officially rootable and supported, toggling the obstacle avoidance on or off was reintroduced as a full capability again after it was previously demoted to being just a dreame-specific quirk.
Furthermore, the PetObstacleAvoidanceControlCapability
was introduced as a way to tell the Obstacle Detection AI to be especially
careful with some particularly dangerous kinds of obstacles.
With the CarpetSensorModeControlCapability
there's now proper UI to select how a robot equipped with a dedicated carpet
sensor should deal with detected carpet. This feature was previously found in the quirks section.
The last new capability for this release is the CollisionAvoidantNavigationControlCapability
which toggles what the name suggests.
For convenience and better automations, Battery Level and Status Flag are now being exposed to Home Assistant as separate entities. Previously, the Battery Level was only available as an attribute of the Vacuum entity.
Valetudo users that have upgraded their Home Assistant Instance to 2023.8 are currently being confronted with a scary error message that looks like this:
This is neither an actual functional issue nor a bug in Valetudo.
There were some architectural and strategic changes inside Home Assistant that affect some details about how MQTT Autodiscovery should be implemented by other software that wants to show up in Home Assistant. Implementing the requested changes not very hard, however doing so would break the naming of Valetudo-related entities in older versions of Home Assistant.
Since the release of HA 2023.8 happened less than two weeks ago, it would be unreasonable to force all users of Valetudo to upgrade their HA instances. Especially since due to migration logic in HA, things work just fine and will continue to work like that until 02/2024.
For now, simply click on the "Ignore" Button in Home Assistant. No need to rename anything.
I am quite happy with what we've released today and I think you will be too :)
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
7f7b218
5f26145
0f390e0
f68b995
a4261b6
e22e532
5a3ecc6
7eae549
bd1febe
e48aa7e
12aa3a7
4e4b7ae
76bba87
c3405bd
ef93adf
A few MQTT expansions plus some bugfixes
All the feature changes in this release are related to the MQTT interface:
It is now possible to reset consumables via MQTT.
For users of home assistant, this is as easy as clicking on the button entity for the respective consumable that is now also being autoconfigured. If you're using a different smarthome software, you can find out how to issue the reset command in the MQTT docs.
Note: Starting with this release, consumables by default aren't exposed to MQTT anymore, as the information value of them is rather mediocre at best. This is because at the end of the day, you're looking at linearly decrementing counters that convey a lifetime assumption. A better way to check for the actual consumable state is to just look at the part in question during regular maintenance.
Fear not however, as the functionality is just a checkbox in the MQTT settings away. If you have an existing deployment, said checkbox will be checked automatically for you during the update process so no breakage here.
Speaking of optionally exposable capabilities, there's now a new one: Total Statistics
They work exactly the same as the current statistics but provide all-time values for your automation needs.
As with the consumables, current statistics are not exposed to MQTT by default anymore in new deployments.
This is all part of an effort to reduce the amount of data constantly polled from the robot firmware in scenarios where it isn't actually requested or needed by anyone.
Now that I've figured out that home assistant button.mqtt
entities exist, I've also added two more to the autodiscovery:
You can even have ones that are disabled by default for functionality that probably isn't needed by most users:
Overall these are just a few minor neat-ness improvements for the UX.
mop dock cleaning frequency
quirk for the roborock ultra dock now works correctlyIf 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
246d655
ac06012
5f85637
4f03d6b
63a49a1
1b55334
3ccd63f
342b5e3
91003db
15a6baa
de9a085
c306028
The Timer Update + Roborock S7 Pro Ultra support
Inbuilt timers have been greatly improved with the latest release.
Since we now have supported robots where the Water setting actually makes a noticeable difference, timers needed a way to control those settings. For that, Pre-Actions have been introduced.
If you enable any of those, they will execute the command to e.g. set the fan, water or operation mode before starting the configured action for the timer.
For example, you can now have:
followed by
Timers can now be named with a custom label to make it easy to keep track of which one does what
It is now possible to execute a timer manually by pressing the play button.
As the timer doesn't have to be enabled to be manually executable, this can also be (ab-)used to recall specific cleaning scenarios without having to select the same segments and settings over and over again.
Lastly, a bug was fixed that caused the timers to be executed on the wrong day if UTC conversion crossed the midnight line.
Thanks to your donations, I was able to buy a Roborock S7 Pro Ultra.
The robot is now supported by Valetudo. It can be rooted and used right away.
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
eadff02
a5f920e
6092d75
1f624db
87636ba
cf982c0
a922877
c39cd7e
8636e0c
fc73347
7c6c0a9
c394a54
3eb9548
A pretty standard release with a few features and bugfixes
If you run Valetudo on a robot that reports obstacle locations, you will now be able to see them in your map.
If you zoom in enough, they will also show a label with additional information (if available).
Right now, you probably won't be able to see these as there are 0 robots with a public root that support this. Once that changes though, this feature will be waiting.
Consumables are now displayed with a progress bar indicating the remaining life.
Previously, the reported numbers lacked context and thus left users wondering if 3 days remaining is a lot or a little or something in-between. Now that should be clear.
Speaking of progress bars, the updater has also been extended to report the download progress.
This should be comforting when updating valetudo via a slow network connection.
This release also comes with two breaking changes.
The first is in how the ZoneCleaningCapability
works.
To be consistent with the MapSegmentationCapability
, the iterations
parameter is now a top level property:
{
"action": "clean",
"zones": [
...
],
"iterations": 1
}
If you do zone cleaning via the REST API or MQTT interface, you will have to slightly modify your payloads.
The second breaking change is also for consistency reasons.
Previously, the StatusStateAttribute
flag
was reported via the <TOPIC PREFIX>/<IDENTIFIER>/StatusStateAttribute/detail
topic.
As that was the only place where it was called detail
it is now instead available via <TOPIC PREFIX>/<IDENTIFIER>/StatusStateAttribute/flag
.
Multiple race conditions in the MQTT Client and other components have been identified and fixed. If you had trouble with connecting to your MQTT broker, this should likely fix that.
This release of Valetudo can now properly handle multiple comma-separated errors reported by some Dreame firmwares.
Lastly, the OperationModeControl
on Viomi has been fixed. If you had trouble getting your robot to mop, that should now work again.
By buying more robots, another supported CRL200S variant was found: The Commodore CVR 200
I also bought a Xiaomi Robot Vacuum-Mop 2S
and a Kärcher RCV 3
, however unfortunately those aren't based on the CRL200S but the CRL200SD which is entirely different hardware and hence incompatible with Valetudo right now.
Robots that are based on the supported CRL200S can now select between 1
and 2
iterations for segments and zones starting with this release.
After reevaluating a few things, we have a suspicion that the Roborock S7 Pro Ultra
might be worth further investigation.
However, doing that unfortunately will cost at least ~850€.
That alone would be expensive but doable, but it is of course not the only robot we're looking at. I've been buying quite a few other robots for evaluation including most of the new Dreame lineup, which makes this a very expensive hobby.
While there's nothing to announce yet, what I can say is that we're quite busy looking at interesting robots.
Therefore and as always: 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
eb67fca
ec449d0
aaa01bf
992c38f
a427045
222ba01
e99bb6b
72e6b84
931ab79
537f7af
c261d75
7bd9122
5744e4e
6b2a268
0af4703
460c5d1
51a412d
1055171
Custom instance names, more robots and quality of life improvements for existing robots
It is now possible to set a custom name for your Valetudo instance.
This should be especially helpful for setups with multiple floors and thus multiple robots.
Additionally, this name is also part of the data advertised via MQTT, meaning that the robot will show up like that in Home Assistant as well.
After buying a Mi Robot Vacuum-Mop 2 Ultra
to evaluate if it can be rooted and supported, I can now answer yes to both questions.
It's like a Dreame Z10 Pro but with the auto-empty dock being optional and a ToF sensor instead of line lasers for obstacle avoidance.
Valetudo users Matthias and @Zombielinux meanwhile tried the CRL200S rooting instructions with the Viomi SE
and Wyze Robot Vacuum
and succeeded in doing so.
Unfortunately though, shortly after that, another user reported that they've bricked their Wyze Robot Vacuum
while attempting to root it :(
Thus, for now only the Viomi SE
will be part of the Supported Robots list until we gain further insight into the issue.
In the last month, I've also bought a Roborock S7
. Using this test device, I was able to work through the rooting procedure, fixing things along the way. Apart from that, Quirks for a few additional S7 features have been added to Valetudo as well.
As of now, there are no more known issues with the S7 excluding the rather complicated disassembly that is unsuited for beginners. It is now considered supported by Valetudo and rootable with the latest firmware.
People with a Roborock supporting the MappingPassCapability
should now instantly see segments after the mapping pass has finished.
For owners of a Roborock that needs to do a full cleanup to split the map into segments, a new Quirk was added that allows to manually trigger the split. While janky in implementation, it can nonetheless be helpful for quick remappings using for example the go-to feature.
Segments should now appear instantly after a full cleanup on vSLAM Dreames such as the 1C, 1T or F9. Previously it was necessary to trigger a second cleanup for that.
The Live Map now remembers the previously selected mode in the browser's local storage.
Valetudo now pings the Gateway every 15 Minutes to keep the Wi-Fi module alive. This should help in situations where the Webinterface became unresponsive after being idle for a few hours.
There's now no more mop attachment reminder on Dreame robots that feature automatic mop drying.
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
612c484
3d9c7c2
54891dc
7173bc6
1909f24
f789df0
d2637fd
cf15896
127a086
aba7931
a00280a
25a6670
ad59e09
b37fb09
3fe2998
d75514b
Five new supported robots, Four new features and improvements, Three new icons, Two new firmwares, One new year
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.
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:
Additionally, these models look promising and should be evaluated in the future:
If you have any of those and would like to help, please ping me.
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.
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.
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.
Apart from robot support, there were also quite a few other changes.
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!
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.
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.
A new sub-menu was introduced with this version of Valetudo
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.
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.
The Valetudo Tray Companion app now works on both Windows and Linux thanks to @NKnusperer.
https://github.com/Hypfer/valetudo-tray-companion
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
8706988
9932b03
bb6b66f
8374951
38ccba5
046087c
f1c7238
68efeb8
e7959a4
27554be
0695457
759288e
0180c65
a43f30f
39207e8
0939cbd
d764438
5ac847f
8f5013a
56b0bf6
7882db4
4d01657
e5a2791
aac44b4
226a938
559076d
68e6d35
f97184d
2471c59
56193f8
2a74157
dec5efb
492cb42
718115c
692085e
b6e7820
8b8d7a2
99897a5
f143319
1f06b86
bafdb4d
f43a7ed
b351686
db5aeca
4c873b7
67e66a0
Better segment interactions, better provisioning and better updates
Interacting with the map has gotten more intuitive with this version of Valetudo.
Instead of having to hit a small triangle, you can now tap on the whole segment to select it. Instead of having to look for a tiny bit of blue color inside that small triangle, the whole segment will now light up on selection.
Additionally, the map now prevents stuff such as selecting a segment when there is already a Zone pending for improved UX
Note for users with a robot that supports the GoToLocationCapability: To place a GoTo marker with Valetudo 2022.11.0 and up, you simply have to use a long-press instead.
The provisioning page has been extended to show Wi-Fi scan results if supported by your robot and deployment.
Don't be confused by the initial lack of scan results. Scanning can be a bit slow at times.
Furthermore, multiple issues that might've caused the Wi-Fi provisioning to fail and require a reboot have been fixed as well.
The updater now tries to update using the much smaller UPX-compressed Valetudo binaries if there is not enough space for a regular one. Fortunately those builds have almost no downsides apart from the initial Valetudo startup taking a few more seconds.
This change makes it possible for some low storage robots to use the inbuilt updater.
This version contains a workaround for an issue with Chrome and >= 107 that randomly breaks all map interactions.
If you don't want to update Valetudo to fix that, consider switching to Firefox.
Actually you should probably switch to Firefox regardless of this issue.
And lastly there's now a user feedback toast when saving virtual restrictions. Previously there was no way of knowing if virtual restriction changes had been persisted.
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
552e312
9a8691c
3c9b469
f7ff27c
cc34e20
5bb3fae
5a6d9d1
5ec12d3
4227918
e685e3e
62a666d
dd5198f
460b8e0
91dc5c1
3a1582d
46ed757
c6cbdc2
c4d5df8