Valetudo Versions Save

Cloud replacement for vacuum robots enabling local-only operation

2024.02.0

1 month ago
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.

image

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

  • ui: Fix zustand deprecation warning f3b531e
  • vendor.dreame: Add error code mapping for code 121 dbbb58a
  • Gracefully handle development on systems with bonded network interfaces 9969307
  • vendor.dreame: Fix mop dock drying time quirk 7c87bf6
  • ui: Improve map zoom range clipping ebf8e9f

2023.12.0

3 months ago
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!

image

With the play icon there, maybe less newcomers will click on the large play button provided by the BasicControlCapability?

image

I don't know what I expected for a join icon.

image

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.

image

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

image

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

  • Minor code cleanup ddb49e7
  • Bump all dependencies to latest versions + minor code cleanup 5a364ef

Chores

  • release: 2023.12.0 ce683c5
  • Bump dependencies d63e325
  • build: Bump to NodeJS v20.10.0 25eaa76
  • Disallow some more footguns with eslint 9d9213c
  • vendor.dreame: Add test case with a ginormous map file from an industrial building 0d5a7df
  • build: Bump to NodeJS v18.18.2 ba90e9b

2023.10.0

5 months ago
valetudo

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.

dreame_w10pro

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

2023.08.0

7 months ago
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

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.

image

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.

image

The last new capability for this release is the CollisionAvoidantNavigationControlCapability which toggles what the name suggests.

image

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.

image

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:

image

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

  • release: 2023.08.0 ed051c6
  • vendor.dreame: Minor cleanup of confusing loglines eb73525
  • build: Include openAPI spec json as a release asset for prod and nightly db9f42e

2023.05.0

9 months ago
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.

image

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

image

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.

image

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:

image

You can even have ones that are disabled by default for functionality that probably isn't needed by most users:

image

Overall these are just a few minor neat-ness improvements for the UX.

Bugfixes

  1. 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
  2. The mop dock cleaning frequency quirk for the roborock ultra dock now works correctly
  3. 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

2023.04.0

11 months ago
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.

image

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

image

Manual execution

It is now possible to execute a timer manually by pressing the play button.

image

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.

image

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.

image

The robot is now supported by Valetudo. It can be rooted and used right away.

Misc

  1. MQTT and NTP editor now automatically extract the host from pasted URLs for more convenience
  2. Headlines in the sidebar menu no longer overlap
  3. 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

2023.03.0

1 year ago
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.

image

If you zoom in enough, they will also show a label with additional information (if available).

image

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.

image

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.

image

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

  1. 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.

  2. This release of Valetudo can now properly handle multiple comma-separated errors reported by some Dreame firmwares.

  3. 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

image

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

  • release: 2023.03.0 fc6b905
  • Un-bump backend axios version b4c9e32
  • Bump dependencies 979a8b6
  • vendor.dreame: Remove old logger calls used for early reverse engineering e2a8833
  • Remove config migration code d0172f1
  • Minor cleanup d8d7f82
  • Cleanup 30f629e
  • Viomi voicepack checksums do matter 87eb6af

2023.02.0

1 year ago
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.

image

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.

image

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.

image

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.

image

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.

image

image

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.

image

Misc

  1. The Live Map now remembers the previously selected mode in the browser's local storage.

  2. 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.

  3. 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

  • release: 2023.02.0 6b01ed5
  • Update actions to fix github workflow deprecation warnings d4a7ae3
  • Formatting bebf0a4
  • Remove config migration code 50a15a0
  • Delete obsolete deployment instructions beee8b1

2023.01.0

1 year ago
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

image

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.

image

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.

image

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.

image

Also, Icons in the menu have been updated for consistency and easier understanding.

image

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.

image

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

image

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

image

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

Refactoring

Chores

  • release: 2023.01.0 3d6ef60
  • vendor.roborock: Formatting 2798fed
  • build: Bump to NodeJS v18.12.1 25b7061
  • vendor.viomi: Remove unused map parser 0c7d757
  • minor cleanup 79229f9
  • Add hint regarding maps and reboots to the updater 69b0ae7

2022.11.0

1 year ago
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

Refactoring

  • ui: Reduce code duplication 23c5024
  • Replace deprecated Buffer.slice with Buffer.subarray 88db3be

Chores

  • release: 2022.11.0 61aa741
  • Minor cleanup 5f13e8f
  • Minor cleanup 1a614e9
  • build: More heap for regular armv7 08ec8b7
  • vendor.dreame: Add test case map with left cutoff by firmware 040d4fb
  • ui: 75% battery should not be displayed in a warning color a5e1bc2