Releases: Hypfer/Valetudo
Valetudo 2024.02.0
Events via MQTT, new default NTP server, maintenance & polish
Events via MQTT
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
New default NTP server
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.
Misc
- The NTP Connectivity view now displays the current robot time for peace of mind. Thanks, @stefanmd023 for the idea!
- The internal water tank of the Dreame L10s Ultra can now be drained for storage of the robot using a newly introduced quirk
- Setting the mop drying time on dreame now reports the correct value back
- Dreame error code 121 is no longer unknown and now mapped properly
- Zooming the map far out/in on mobile will now snap to the minimum/maximum zoom level with less jank
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
Features
- ntpClient: Double wait time to next attempt on each sync error
6b15920
- ntpClient: Use valetudo.pool.ntp.org as the default timeserver
1a3a9f8
- mqtt: Publish ValetudoEvents to MQTT and allow interacting with it via MQTT
cc2ecc3
- ui: Display current robot time in NTPConnectivity view
3880f8b
- vendor.dreame: Add drain internal water tank quirk
25f428f
- vendor.dreame: Add implementation for the R2211
9b01829
Fixes
Valetudo 2023.12.0
Quality of Life, Maintenance, Merry Christmas and it's finally 37c3 time
Map Action Icons
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.
Home Assistant device classes
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!
Maintenance Maintenance Maintenance
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.
Fixes to bugs and annoyances
- Disabling edge mopping via the Dreame Quirk now properly reports that it actually was disabled
- SSE subscriptions now have a delay until they disconnect from the server to avoid unnecessary dis- and reconnects when changing views
- The error message thrown on invalid characters in the Wi-Fi password now tries to inform the user that Valetudo is not doing that just to ruin their day - Honestly it's sad that this change was required
37c3
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.
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
Features
- ui: Replace new icons with custom new icons + remove new icon dependency
5621418
- ui: Add some nice icons to all map action buttons
4e958da
- vendor.roborock: Dock dustbin consumable for all auto-empty docks
e3d13fa
- Set the embedded process priority to below normal for good measure
eadc2a7
- mqtt: Add device_class attribute to battery and WiFi sensors for Home Assistant (#1910)
aac0f51
- vendor.dreame: Edge mopping for the L10 Ultra
744fe20
Fixes
- miio: Error message clarifications
d17b299
- ui: Fix achievement display and keep SSE connections alive for additional 500ms after the last subscriber disconnected
c20731d
- vendor.dreame: Remove CollisionAvoidantNavigationControl from the x10+ since it is not supported by the firmware
d4f37e4
- vendor.dreame: Fix edge mopping quirk state reporting
9e4617b
Refactoring
Chores
2023.10.0
Fixes for bugs and annoyances + support for the W10 Pro
W10 Pro support
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. :-)
Fixes to bugs and annoyances
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.
Icon rendering during pinch zoom
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.
Home Assistant 2023.8 naming requirements
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.
Dreame AI Camera Obstacle Avoidance
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.
Misc
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.
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
- mqtt: Comply with new home assistant 2023.8 naming requirements
9d0fed1
Features
- ui: Remove unnecessary confirm dialog from initial provisioning
1d0dec7
- MockRobot: Mock more capabilities
a7179d2
- vendor.dreame: W10 Pro
db52169
- Allow skipping the wifi credential validation
810e2e7
- vendor.roborock: G10S support
7e4fdfe
Fixes
- vendor.dreame: Fix obstacle avoidance control for camera models
7108bca
- vendor.dreame: Map error code 69 & 70
fd8193a
- ui: Correctly scale map structures during pinch zoom
1e0a306
Refactoring
- Remove old config migration code
d34f49c
- ui: Remove no longer needed workaround for a bug in DOMMatrix.invertSelf in Blink 107
9acc263
Chores
Valetudo 2023.08.0
DEFCON 31 - 7 newly rootable robots, new rooting method for 6 robots with a previous root, 5 more new robots in the pipeline
DEFCON 31
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:
Newly rootable robots
These robots are now rootable for the first time
- Dreame L10s Ultra
- Roborock S8
- Roborock S8 Pro Ultra
- Xiaomi X10+
- Dreame D10s Plus
- Dreame D10s Pro
Robots with a new rooting method
These robots have been rootable previously but received firmware patches that blocked the old methods
- Dreame Z10
- Dreame L10
- Dreame W10
- Dreame D9
- Dreame F9
- Xiaomi Vacuum-Mop 2 Ultra
Robots currently in the pipeline
Edit from the future (2024-04):
Since this text keeps haunting me, I need to add this note.
It didn't work out.
I've got way too hyped and wanted to help too many people and with that ended up spending more than 4000€ of my own hard-earned cash on dead-ends that led nowhere. Please stop asking about these or robots mentioned in the section above, okay?
It is frustrating enough as it is. No I did not accidentally forget to update the docs. No it's not just a tiny step away.I accidentally tried to be nice, wasting a lot of my own personal resources on that, and now the reminder of that waste of time and resources periodically pops up in my inbox as a "but but but you said that".
And yes, this also includes robots that might've been mentioned in other release notes. Let it go.
We're currently finishing up the rooting methods for these robots. It might take a little while as it's conference season
- Dreame L10 Ultra
- Dreame L10s Pro
- Dreame W10 Pro
- Roborock Q Revo
- Roborock S7 Max Ultra
Valetudo features
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
Return of the ObstacleAvoidanceCapability
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.
Even more capabilities
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.
MQTT Changes
New Entities
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.
Note regarding Home Assistant 2023.08 and newer
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.
The usual
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
Autogenerated changelog
Features
- ui: Include consumable name in consumable reset confirm dialog
7f7b218
- mqtt: Expose battery state and status flag as home assistant sensor entities
5f26145
- vendor.roborock: S8 Pro Ultra support
0f390e0
- vendor.viomi: Support outline cleaning mode (#1844)
f68b995
- CarpetSensorModeControlCapability
a4261b6
- CollisionAvoidantNavigationControlCapability
e22e532
- vendor.dreame: More quirks
5a3ecc6
- PetObstacleAvoidanceControlCapability
7eae549
- vendor.roborock: RoborockObstacleAvoidanceControlCapability
bd1febe
- Return of the ObstacleAvoidanceControlCapability
e48aa7e
- vendor.roborock: S8 support + map parser cleanup
12aa3a7
- vendor.dreame: L10 Ultra
4e4b7ae
Fixes
- vendor.roborock: Remove invalid quirk for S8 series
76bba87
- vendor.dreame: The L10S Pro does not support the CollisionAvoidantNavigationControlCapability
c3405bd
Refactoring
- vendor.dreame: Hard-code miot IDs for capabilities that are exclusive to the gen2 miot schema
ef93adf
Chores
Valetudo 2023.05.0
A few MQTT expansions plus some bugfixes
MQTT
All the feature changes in this release are related to the MQTT interface:
Consumables
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.
Total statistics
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.
Current statistics
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.
More MQTT buttons
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.
Bugfixes
- Map polling on roborock robots has been improved to fix issues with stale data e.g. when editing virtual restrictions on the S7 Pro Ultra
- The
mop dock cleaning frequency
quirk for the roborock ultra dock now works correctly - When creating multiple timers at once, the editor is now cleared in between to remove stale data
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
Features
- mqtt: Introduce autoconfigured home assistant buttons for AutoEmpty manual trigger and locate capabilities
246d655
- mqtt: Allow resetting consumables via MQTT and set consumables to be optionally exposed in new deployments
ac06012
- mqtt: Optionally expose total statistics and make exposure of current statistics optional for new deployments
5f85637
- mqtt: Expose fan speed as its own select entity to home assistant
4f03d6b
- ui: Refresh current statistics every 30s
63a49a1
- vendor.roborock: Map more error codes
1b55334
Fixes
- ui: Hide overflowing status state flag on small screens
3ccd63f
- ui: Fix timer editor not being reset when creating multiple timers
342b5e3
- vendor.dreame: Handle pixel type 3
91003db
- vendor.roborock: Fix MOP_DOCK_MOP_CLEANING_FREQUENCY quirk
15a6baa
- vendor.roborock: Fix virtual restrictions not appearing on refresh on the S7 Pro Ultra + map polling on S5e 1668
de9a085
- Satisfy new sonarcloud rules
c306028
Valetudo 2023.04.0
The Timer Update + Roborock S7 Pro Ultra support
Timers
Inbuilt timers have been greatly improved with the latest release.
Pre-Actions
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:
- one timer at 10am that cleans all rooms with tiled floors with a high water setting
followed by
- another timer at 11.30am that cleans all wooden floors with less water.
Custom Labels
Timers can now be named with a custom label to make it easy to keep track of which one does what
Manual execution
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.
UTC conversion bugfix
Lastly, a bug was fixed that caused the timers to be executed on the wrong day if UTC conversion crossed the midnight line.
S7 Pro Ultra support
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.
Misc
- MQTT and NTP editor now automatically extract the host from pasted URLs for more convenience
- Headlines in the sidebar menu no longer overlap
- CarpetModeControl is now also available for the W10
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
Features
- timers: Introduce custom labels for timers
eadff02
- timers: Allow manual execution of stored timers
a5f920e
- timers: Introduce pre_actions
6092d75
- vendor.roborock: Ultra dock consumables
1f624db
- vendor.roborock: Add support for the S7 Pro Ultra
87636ba
- ui: Improve UX when configuring MQTT or NTP hosts
cf982c0
Fixes
- ui: Fix Timer DoW shifting when encountering the midnight line during UTC conversion
a922877
- vendor.dreame: Add DreameCarpetModeControlCapability to DreameMopValetudoRobots such as the W10
c39cd7e
- vendor.dreame: Fix detergent consumable reset
8636e0c
- vendor.viomi: Fix parser freezing when encountering unexpected segment name data
fc73347
- ui: Hide clear button if there is no GoTo target
7c6c0a9
- ui: Fix sidebar menu subheader overlapping
c394a54
Refactoring
- Don't override inbuilt identifiers
3eb9548
Chores
Valetudo 2023.03.0
A pretty standard release with a few features and bugfixes
Obstacle locations
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.
Consumable status
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.
Updater download progress
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.
API Changes
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
.
Bugfixes
-
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.
Misc
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.
What's next?
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
Autogenerated changelog
Breaking Changes
- mqtt: Rename status detail to status flag for consistency
eb67fca
- Move zone iterations from zone-level to command-level to be consistent with segments
ec449d0
Features
- vendor.dreame: R2240 support
aaa01bf
- updater: Visualize download progress
992c38f
- ui: Consumable status progress bars
a427045
- Obstacle locations
222ba01
- mqtt: Allow ignoring certificate errors for brokers with self-signed certificates
e99bb6b
- vendor.viomi: Iterations via set_repeat
72e6b84
Fixes
- vendor.dreame: Handle invalid or unknown status data on the 1C
931ab79
- miio: Continue to poll the map in short intervals for a while after state transition from active to inactive
537f7af
- vendor.roborock: Remove incorrect mop pattern quirk option
c261d75
- mqtt: Trying to exterminate some concurrency gremlins
7bd9122
- ui: Fix zone integration help
5744e4e
- vendor.viomi: Fix operation mode selection
6b2a268
- networkadvertisement: Ensure that there's only one scheduled networkStateCheck
0af4703
- vendor.dreame: Gracefully handle comma-separated error codes
460c5d1
- vendor.roborock: Handle fan speed miot updates with correct and incorrect piid
51a412d
Refactoring
- ui: Cleaner use of mutexes in context of async functions
1055171
Chores
Valetudo 2023.02.0
Custom instance names, more robots and quality of life improvements for existing robots
Custom instance name
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.
New robots
Mi Robot Vacuum-Mop 2 Ultra
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.
More Viomis
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.
Existing robots
Roborock S7
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.
Roborock General
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 on vSLAM Dreames
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.
Misc
-
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.
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
- Allow setting a custom friendly name for the valetudo instance
612c484
Features
- Migrate existing MQTT friendlyName to instance friendlyName on upgrade
3d9c7c2
- vendor.roborock: Add manual map segment trigger quirk
54891dc
- ui: Replace consumables view with boring but unified ListMenu
7173bc6
- vendor.dreame: P2150 (Mi Robot Vacuum-Mop 2 Ultra) support
1909f24
- vendor.roborock: More quirks for the S7
f789df0
- Periodically ping the gateway when embedded to keep the wifi module alive
d2637fd
- ui: Remember the last selected live map mode in the browser
cf15896
- vendor.viomi: Add mop pattern quirk to Viomi V7 (#1682)
127a086
Fixes
- vendor.dreame: Don't raise the mop attachment reminder for robots that can dry their own mops
aba7931
- vendor.dreame: Display vSlam segments after initial cleanup
a00280a
- vendor.roborock: Fix map not immediately showing segments after a mapping pass
25a6670
- vendor.dreame: Newer 1T firmwares have a sensor consumable
ad59e09
- webserver: Add return after failing to load OpenAPI spec (#1689)
b37fb09
- vendor.viomi: Fix manual control state not being reported correctly
3fe2998
- Handle special character ssids in linux wifi status
d75514b
Chores
Valetudo 2023.01.0
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 q...
Valetudo 2022.11.0
Better segment interactions, better provisioning and better updates
Better segment interactions
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.
Better provisioning
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.
Better updates
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.
Misc
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.
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
Features
- ui: Limit wifi scan results
552e312
- ui: WiFiScanCapability support for the provisioning page
9a8691c
- ui: Cache layers in render worker for improved performance
3c9b469
- vendor.dreame: Some dreames allow for more than one zone
f7ff27c
- ui: Segment selection improvements
cc34e20
- ui: Render mapLayers to cropped imageData for better performance and less memory usage
5bb3fae
- vendor.dreame: More mop stuff
5a6d9d1
- vendor.dreame: Support for the L10 Plus
5ec12d3
- updater: Attempt to use upx in low storage situations
4227918
- ui: Provide some feedback on virtual restriction save
e685e3e
Fixes
- miio: Only poll maps via the cloud interface
62a666d
- Gracefully handle broken wifi drivers during scan
dd5198f
- ui: Reduce network scan result confusion
460b8e0
- ui: Fix vanishing final wifi provisioning dialog
91dc5c1
- miio: Fix deviceID being changed to an invalid value
3a1582d
- ui: Add workaround for DOMMatrix.invertSelf() issues with Chrome 107++
46ed757
- ui: Reset preset slider if value wasn't applied after 1s
c6cbdc2
- Fix incorrectly reported virtual restrictions
c4d5df8