Skip to content

Releases: Hypfer/Valetudo

Valetudo 2024.10.0

21 Oct 17:29
Compare
Choose a tag to compare
valetudo

2024.10.0

Obstacle Images - a surprisingly fun feature

Obstacle Images

On robots that support the feature, assuming the right zoom level, you will now be able to click on the obstacle in the map view and see what the robot saw. I didn't expect it to be, but it is very neat to view the world through the perspective of the robot.

image

I was quite hesitant to implement such a feature for a long time, because there is a lot that one can do wrong when reading arbitrary large files based on user input from the filesystem and delivering them via HTTP.
But, given that long time I had to think about it, I believe that the implementation is now solid.

image

I hope that you will have as much fun with this feature as I had.
And, if your robot sees something neat and shareable, feel free to post the obstacle image in the comments below.

Side-note:

This should go without saying but please don't use this feature for abuse.
Talk with everyone living in (or even just visiting) your household about this before you enable it.

Even if you live alone, you can be certain that the robot will take a picture at the most unfortunate and inopportune moment imaginable.
Keep that in mind and maybe just keep the feature turned off if unsure.

The obstacle avoidance works regardless of it, so you're not losing out on any functionality if you do decide to not enable it.

Improvements to the Virtual Restrictions Editor

A simple change with great impact to the UX:

The virtual restrictions editor now also renders the path

image

This makes it a lot easier to precisely place virtual restrictions based on the real struggles the robot faced.

UI UX Fixes

Cutting lines for segments now have a shadow to not become invisible in front of the white background of the light theme.

image

Furthermore, zooming the map in by 1 step and zooming back out by 1 step will now make you end up with the same zoom level you started with - as one would expect it to.

Thanks to @vivia for both of these!

Improvements to the System Information View

The System Information page now displays the actual CPU load:

image

Previously, it used the system load, which got very confusing on robots with kernels where that feature is broken for some reason.
Now, these bars make sense again instead of just being stuck at 100% all the time.

Misc

  1. Users of the Dreame L10s Pro Ultra Heat and X40 can now trigger the Mop-Dock cleaning procedure using a new quirk.

    image

  2. Non-feature-wise, this release comes with a bump to basically all dependencies, meaning that we're good on that front as well again.

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

  • vendor.dreame: D10s Pro/Plus also support Obstacle Images 63279c4
  • vendor.dreame: Add quirk for triggering the mop dock cleaning procedure 76280bd
  • vendor.dreame: ObstacleImagesCapability 67ee71c
  • ui: ObstacleImagesCapability 30b5fc8
  • core: ObstacleImagesCapability f9fa9d0
  • Display the actual CPU usage instead of the system load d0f754b
  • ui: Draw half-transparent path in virtual restrictions edit map to make placing restrictions correctly easier ca077b6

Fixes

  • ui: Fix zoom level after zooming in and back out again not ending up where it started 2e5a9c2
  • vendor.dreame: Fix MopDockCleanManualTriggerCapability for everything that is not a pure mop 3513cbc
  • webserver: Valetudo router rate limits should be global 7a6eb1e
  • vendor.dreame: Fix Mop Dock Water Heater quirk 20917a7
  • A config reset should not reset the robot config 28d674f
  • ui: Fix cutting line being invisible when using the light theme a2a1d40

Refactoring

  • vendor.dreame: Add more AI classifier IDs and pull the constant into DreameUtils 0928cf0
  • webserver: Use rate limiters instead of semaphore in ObstacleImagesCapabilityRouter 90e5ab9

Chores

  • Bump dependencies 5559f88
  • Upgrade react-router v5 to v6 fb600a8
  • Bump dependencies 79deca1
  • Fix the wrong link in the right place 2152e20
  • Bump some transitive dependencies dc3b96e
  • ui: Resolve issues detected by sonarcloud b56ed1c
  • Update PR template ddcf3e1

Valetudo 2024.06.2

23 Jun 16:04
Compare
Choose a tag to compare
valetudo

2024.06.2

Exciting new robots, lots of UI improvements, new features and some words on not burning out

Valetudo 2024.06.2

This version bumps the MQTT.js library once again to hopefully fix some more keepalive-related issues that apparently were caused by the prior fixes. They were causing issues in different setups than previously though, which I'd call a win 👍

Nothing else has changed, so if you've already read the 2024.06.1 changelog, nothing new to see here.
If not, feel free to continue reading.

Valetudo 2024.06.1

Since I did not personally buy an X40 for this release, I kinda expected that there would be some minor additional issues that would show up as soon as someone attempts to root one. And indeed, there was one.

Specifically, we found out that the EU variant(?) is assigned a different Model ID than the US one.
Fortunately though, everything else seems to be the same as on the US model (which was the one we've tested prior to the release).

After then employing highly advanced OSINT research skills (thanks, UHD YouTube reviews), I've discovered that there are two additional Model ID identities the X40 might have.

This release is just 2024.06.0 plus three strings, enabling Valetudo to start on these robots.
Thus, if you have already read the 2024.06.0 release notes, you can skip the rest of this.

If not, feel free to continue reading.

New Robots

Since there has been quite some innovation going on in the robot space since the last time we've released support for a new robot, we figured that it would be time to take a closer look at new robots once more.

Unfortunately, with innovation also came a steep increase in price. But, after irresponsibly spending multiple thousand euros on new robots to void their warranty 30s after they've left the box, I have good news:

With the Dreame X40 and L10s Pro Ultra heat now being supported, we have Valetudo support for what according to reviewers and also our own experience is the best vacuum robot money can buy you right now.

image

image

This sounds amazing and also is amazing but do keep in mind that the previously recommended L10s Ultra already is a very good vacuum robot. There aren't many things to improve about it, and, frankly, there are no improvements that would warrant spending more than twice the money.

Still, there have been notable improvements:

  • Mops that extend to the side beyond the robot for better edge cleaning
  • X40 Only: A side brush that extends beyond the robot for better corner and edge cleaning
  • X40 Only: An integrated LED flashlight for much improved AI recognition in all lighting conditions
  • X40 Only: Mops that can be automatically detached and left in the dock
  • An improved dock design featuring bigger water tanks and easier cleaning
  • The ability to auto-empty multiple times during a cleanup
  • General cleaning/navigation logic updates
  • Updated AI models

As always, don't forget that Valetudo is Valetudo.
It does not strive to implement each and every feature the vendor app might offer. In fact, it strives to explicitly not do that.

UI improvements

Apart from support for these robots, a lot of things have changed about Valetudo itself too.

Custom Icons

Valetudo now has a custom icon set for all presets (Fan, Water, Operating mode).

image

Thanks a lot to everyone who took part in the iterative feedback process that led to these! :)
I think they really bring the UI together nicely. And, as an added bonus, they also work better on narrow screens.

Controls polish

Speaking of bringing the UI together nicely, the controls have all received some love.

image

  • They're now more unified, using the same padding and spacing and elements.
  • They now better show feedback to the user (check the dock controls or presets with a bad wifi connection)
  • And, the state flag display now doesn't clip anymore on very narrow screens.

HiDPI support

Screens bring us to the next topic:
Did you ever notice that on mobile, the map view looks a bit bad, blurry and low res?

You might've thought that it's for performance reasons, but it's actually due to this new and amazing innovation called HiDPI screens that has just been released… almost 15 years ago.
Starting with this release, the Valetudo Map renderer now also takes advantage of this revolutionary display technology.

image

Do note though that unfortunately, HiDPI support had to be disabled for Safari due to Safari being Safari.

Mobile map font rendering

Apart from HiDPI support, another thing that has been fixed in the map renderer is font rendering on firefox mobile.

image

Previously, fill and stroke were called in the wrong order, leading to those overlaps.
You can also see that this screenshot was taken before HiDPI support was implemented, because the text is still somewhat blocky.

Animations

The UI should now feel more snappy as all delays caused by animations have been cut in half or sped up 2x depending
on how you want to look at it.

Also, the loading animations and how they were used have been changed so that the content jumps around less.
It still jumps around, but it does so less and that's good enough. 👍

New and changed capabilities

As part of adding support for these new robots, Valetudo has been extended a bit

AutoEmptyDockAutoEmptyIntervalControlCapability

This new core capability allows selecting the interval at which the dock should auto-empty the robot.

image

Previously, this feature was already available as a quirk on some robots.

CarpetSensorModeControlCapability

The CarpetSensorModeControlCapability has gained a new mode with this release: Detach

image

This for now is only supported by the X40 and allows completely detaching the mop pads once it encounters a carpet.

OperationModeControlCapability

You might've already spotted the fourth icon further up in the changelog but if not, here it is again:

image

The new operation mode "Vacuum then mop" does exactly what you'd think it does (if your robot's firmware supports it).
I have no clue why one would want that over doing both at the same time, but it is here now so have fun I guess.

Also, if you have a use case for it, feel free to leave a comment and let me know. I am genuinely curious.

MQTT

This release comes with a breaking change for Home Assistant users.
Due to a schema change, you will have to run at least Home Assistant 2024.02 to use this version of Valetudo.

Given that it is June now, I think I've waited long enough to give everyone ample opportunity to update their setup to that version or later.

More optionally exposable capabilities

As requested by a user, it is now possible to optionally expose the KeyLockCapability via MQTT as a dynamic defense against toddlers and cats.

image

Furthermore, it is now also possible to expose the ObstacleAvoidanceControlCapability to e.g. turn off obstacle avoidance via MQTT
if the robot is sent to a room where there might be problematic curtains or similar.

MQTT fixes

This release includes an updated MQTT.js library, which should solve some weird and unexplainable reconnect issues in some setups.

Furthermore, a fix has been incorporated that should result in near-instant feedback when toggling stuff via MQTT.

Misc

Thanks to a user living in a large non-square house, we've learned that 3irobotix maps can actually be larger than 800x800px.
We also learned that due to the map assumed to be square, in some places, width and height were swapped, leading to a weirdly sliced non-square map.

image

This has now been fixed.

Lastly, an issue with timer pre_actions not being applied correctly should have been fixed by the use of sleep().
The best way of fixing concurrency issues.

On not burning out

I must say that working this much on improving Valetudo again has been a lot of fun.
I really enjoyed it, it gave me a lot of energy and I think it also produced great results.

What I do not enjoy however is that me gaining energy from maintaining the project is something so unusual, it's worth explicitly mentioning.

This is because most of the time I spend maintaining Valetudo, I spend fending off bullshit/abuse and having weekly internet fights over defending my personal boundaries.

  • Be it nonsense discussions fueled by emotions/entitlement/hidden agenda.
  • Be it callout posts on social media trying to frame me as some kind of bad guy for the mere act of saying "no".
  • Be it content creators or other commercial entities trying to non-consensually monetize the project for their own benefit.

This co...

Read more

Valetudo 2024.06.1

22 Jun 11:11
Compare
Choose a tag to compare
Valetudo 2024.06.1 Pre-release
Pre-release
valetudo

2024.06.1

Exciting new robots, lots of UI improvements, new features and some words on not burning out

Valetudo 2024.06.1

Since I did not personally buy an X40 for this release, I kinda expected that there would be some minor additional issues that would show up as soon as someone attempts to root one. And indeed, there was one.

Specifically, we found out that the EU variant(?) is assigned a different Model ID than the US one.
Fortunately though, everything else seems to be the same as on the US model (which was the one we've tested prior to the release).

After then employing highly advanced OSINT research skills (thanks, UHD YouTube reviews), I've discovered that there are two additional Model ID identities the X40 might have.

This release is just 2024.06.0 plus three strings, enabling Valetudo to start on these robots.
Thus, if you have already read the 2024.06.0 release notes, you can skip the rest of this.

If not, feel free to continue reading.

New Robots

Since there has been quite some innovation going on in the robot space since the last time we've released support for a new robot, we figured that it would be time to take a closer look at new robots once more.

Unfortunately, with innovation also came a steep increase in price. But, after irresponsibly spending multiple thousand euros on new robots to void their warranty 30s after they've left the box, I have good news:

With the Dreame X40 and L10s Pro Ultra heat now being supported, we have Valetudo support for what according to reviewers and also our own experience is the best vacuum robot money can buy you right now.

image

image

This sounds amazing and also is amazing but do keep in mind that the previously recommended L10s Ultra already is a very good vacuum robot. There aren't many things to improve about it, and, frankly, there are no improvements that would warrant spending more than twice the money.

Still, there have been notable improvements:

  • Mops that extend to the side beyond the robot for better edge cleaning
  • X40 Only: A side brush that extends beyond the robot for better corner and edge cleaning
  • X40 Only: An integrated LED flashlight for much improved AI recognition in all lighting conditions
  • X40 Only: Mops that can be automatically detached and left in the dock
  • An improved dock design featuring bigger water tanks and easier cleaning
  • The ability to auto-empty multiple times during a cleanup
  • General cleaning/navigation logic updates
  • Updated AI models

As always, don't forget that Valetudo is Valetudo.
It does not strive to implement each and every feature the vendor app might offer. In fact, it strives to explicitly not do that.

UI improvements

Apart from support for these robots, a lot of things have changed about Valetudo itself too.

Custom Icons

Valetudo now has a custom icon set for all presets (Fan, Water, Operating mode).

image

Thanks a lot to everyone who took part in the iterative feedback process that led to these! :)
I think they really bring the UI together nicely. And, as an added bonus, they also work better on narrow screens.

Controls polish

Speaking of bringing the UI together nicely, the controls have all received some love.

image

  • They're now more unified, using the same padding and spacing and elements.
  • They now better show feedback to the user (check the dock controls or presets with a bad wifi connection)
  • And, the state flag display now doesn't clip anymore on very narrow screens.

HiDPI support

Screens bring us to the next topic:
Did you ever notice that on mobile, the map view looks a bit bad, blurry and low res?

You might've thought that it's for performance reasons, but it's actually due to this new and amazing innovation called HiDPI screens that has just been released… almost 15 years ago.
Starting with this release, the Valetudo Map renderer now also takes advantage of this revolutionary display technology.

image

Do note though that unfortunately, HiDPI support had to be disabled for Safari due to Safari being Safari.

Mobile map font rendering

Apart from HiDPI support, another thing that has been fixed in the map renderer is font rendering on firefox mobile.

image

Previously, fill and stroke were called in the wrong order, leading to those overlaps.
You can also see that this screenshot was taken before HiDPI support was implemented, because the text is still somewhat blocky.

Animations

The UI should now feel more snappy as all delays caused by animations have been cut in half or sped up 2x depending
on how you want to look at it.

Also, the loading animations and how they were used have been changed so that the content jumps around less.
It still jumps around, but it does so less and that's good enough. 👍

New and changed capabilities

As part of adding support for these new robots, Valetudo has been extended a bit

AutoEmptyDockAutoEmptyIntervalControlCapability

This new core capability allows selecting the interval at which the dock should auto-empty the robot.

image

Previously, this feature was already available as a quirk on some robots.

CarpetSensorModeControlCapability

The CarpetSensorModeControlCapability has gained a new mode with this release: Detach

image

This for now is only supported by the X40 and allows completely detaching the mop pads once it encounters a carpet.

OperationModeControlCapability

You might've already spotted the fourth icon further up in the changelog but if not, here it is again:

image

The new operation mode "Vacuum then mop" does exactly what you'd think it does (if your robot's firmware supports it).
I have no clue why one would want that over doing both at the same time, but it is here now so have fun I guess.

Also, if you have a use case for it, feel free to leave a comment and let me know. I am genuinely curious.

MQTT

This release comes with a breaking change for Home Assistant users.
Due to a schema change, you will have to run at least Home Assistant 2024.02 to use this version of Valetudo.

Given that it is June now, I think I've waited long enough to give everyone ample opportunity to update their setup to that version or later.

More optionally exposable capabilities

As requested by a user, it is now possible to optionally expose the KeyLockCapability via MQTT as a dynamic defense against toddlers and cats.

image

Furthermore, it is now also possible to expose the ObstacleAvoidanceControlCapability to e.g. turn off obstacle avoidance via MQTT
if the robot is sent to a room where there might be problematic curtains or similar.

MQTT fixes

This release includes an updated MQTT.js library, which should solve some weird and unexplainable reconnect issues in some setups.

Furthermore, a fix has been incorporated that should result in near-instant feedback when toggling stuff via MQTT.

Misc

Thanks to a user living in a large non-square house, we've learned that 3irobotix maps can actually be larger than 800x800px.
We also learned that due to the map assumed to be square, in some places, width and height were swapped, leading to a weirdly sliced non-square map.

image

This has now been fixed.

Lastly, an issue with timer pre_actions not being applied correctly should have been fixed by the use of sleep().
The best way of fixing concurrency issues.

On not burning out

I must say that working this much on improving Valetudo again has been a lot of fun.
I really enjoyed it, it gave me a lot of energy and I think it also produced great results.

What I do not enjoy however is that me gaining energy from maintaining the project is something so unusual, it's worth explicitly mentioning.

This is because most of the time I spend maintaining Valetudo, I spend fending off bullshit/abuse and having weekly internet fights over defending my personal boundaries.

  • Be it nonsense discussions fueled by emotions/entitlement/hidden agenda.
  • Be it callout posts on social media trying to frame me as some kind of bad guy for the mere act of saying "no".
  • Be it content creators or other commercial entities trying to non-consensually monetize the project for their own benefit.

This comes on top of the daily grind consisting of but not being limited to:

  • People not reading instructions
  • People not reading the docs
  • People reading the docs but then asking if the docs are really correct on the matter, because they did not like what they read
  • People not doing their own homework
  • People throwing the mental load they're responsible to carry at random people on the internet
  • People ask...
Read more

Valetudo 2024.06.0

20 Jun 16:29
Compare
Choose a tag to compare
Valetudo 2024.06.0 Pre-release
Pre-release
valetudo

2024.06.0

Exciting new robots, lots of UI improvements, new features and some words on not burning out

New Robots

Since there has been quite some innovation going on in the robot space since the last time we've released support for a new robot, we figured that it would be time to take a closer look at new robots once more.

Unfortunately, with innovation also came a steep increase in price. But, after irresponsibly spending multiple thousand euros on new robots to void their warranty 30s after they've left the box, I have good news:

With the Dreame X40 and L10s Pro Ultra heat now being supported, we have Valetudo support for what according to reviewers and also our own experience is the best vacuum robot money can buy you right now.

image

image

This sounds amazing and also is amazing but do keep in mind that the previously recommended L10s Ultra already is a very good vacuum robot. There aren't many things to improve about it, and, frankly, there are no improvements that would warrant spending more than twice the money.

Still, there have been notable improvements:

  • Mops that extend to the side beyond the robot for better edge cleaning
  • X40 Only: A side brush that extends beyond the robot for better corner and edge cleaning
  • X40 Only: An integrated LED flashlight for much improved AI recognition in all lighting conditions
  • X40 Only: Mops that can be automatically detached and left in the dock
  • An improved dock design featuring bigger water tanks and easier cleaning
  • The ability to auto-empty multiple times during a cleanup
  • General cleaning/navigation logic updates
  • Updated AI models

As always, don't forget that Valetudo is Valetudo.
It does not strive to implement each and every feature the vendor app might offer. In fact, it strives to explicitly not do that.

UI improvements

Apart from support for these robots, a lot of things have changed about Valetudo itself too.

Custom Icons

Valetudo now has a custom icon set for all presets (Fan, Water, Operating mode).

image

Thanks a lot to everyone who took part in the iterative feedback process that led to these! :)
I think they really bring the UI together nicely. And, as an added bonus, they also work better on narrow screens.

Controls polish

Speaking of bringing the UI together nicely, the controls have all received some love.

image

  • They're now more unified, using the same padding and spacing and elements.
  • They now better show feedback to the user (check the dock controls or presets with a bad wifi connection)
  • And, the state flag display now doesn't clip anymore on very narrow screens.

HiDPI support

Screens bring us to the next topic:
Did you ever notice that on mobile, the map view looks a bit bad, blurry and low res?

You might've thought that it's for performance reasons, but it's actually due to this new and amazing innovation called HiDPI screens that has just been released… almost 15 years ago.
Starting with this release, the Valetudo Map renderer now also takes advantage of this revolutionary display technology.

image

Do note though that unfortunately, HiDPI support had to be disabled for Safari due to Safari being Safari.

Mobile map font rendering

Apart from HiDPI support, another thing that has been fixed in the map renderer is font rendering on firefox mobile.

image

Previously, fill and stroke were called in the wrong order, leading to those overlaps.
You can also see that this screenshot was taken before HiDPI support was implemented, because the text is still somewhat blocky.

Animations

The UI should now feel more snappy as all delays caused by animations have been cut in half or sped up 2x depending
on how you want to look at it.

Also, the loading animations and how they were used have been changed so that the content jumps around less.
It still jumps around, but it does so less and that's good enough. 👍

New and changed capabilities

As part of adding support for these new robots, Valetudo has been extended a bit

AutoEmptyDockAutoEmptyIntervalControlCapability

This new core capability allows selecting the interval at which the dock should auto-empty the robot.

image

Previously, this feature was already available as a quirk on some robots.

CarpetSensorModeControlCapability

The CarpetSensorModeControlCapability has gained a new mode with this release: Detach

image

This for now is only supported by the X40 and allows completely detaching the mop pads once it encounters a carpet.

OperationModeControlCapability

You might've already spotted the fourth icon further up in the changelog but if not, here it is again:

image

The new operation mode "Vacuum then mop" does exactly what you'd think it does (if your robot's firmware supports it).
I have no clue why one would want that over doing both at the same time, but it is here now so have fun I guess.

Also, if you have a use case for it, feel free to leave a comment and let me know. I am genuinely curious.

MQTT

This release comes with a breaking change for Home Assistant users.
Due to a schema change, you will have to run at least Home Assistant 2024.02 to use this version of Valetudo.

Given that it is June now, I think I've waited long enough to give everyone ample opportunity to update their setup to that version or later.

More optionally exposable capabilities

As requested by a user, it is now possible to optionally expose the KeyLockCapability via MQTT as a dynamic defense against toddlers and cats.

image

Furthermore, it is now also possible to expose the ObstacleAvoidanceControlCapability to e.g. turn off obstacle avoidance via MQTT
if the robot is sent to a room where there might be problematic curtains or similar.

MQTT fixes

This release includes an updated MQTT.js library, which should solve some weird and unexplainable reconnect issues in some setups.

Furthermore, a fix has been incorporated that should result in near-instant feedback when toggling stuff via MQTT.

Misc

Thanks to a user living in a large non-square house, we've learned that 3irobotix maps can actually be larger than 800x800px.
We also learned that due to the map assumed to be square, in some places, width and height were swapped, leading to a weirdly sliced non-square map.

image

This has now been fixed.

Lastly, an issue with timer pre_actions not being applied correctly should have been fixed by the use of sleep().
The best way of fixing concurrency issues.

On not burning out

I must say that working this much on improving Valetudo again has been a lot of fun.
I really enjoyed it, it gave me a lot of energy and I think it also produced great results.

What I do not enjoy however is that me gaining energy from maintaining the project is something so unusual, it's worth explicitly mentioning.

This is because most of the time I spend maintaining Valetudo, I spend fending off bullshit/abuse and having weekly internet fights over defending my personal boundaries.

  • Be it nonsense discussions fueled by emotions/entitlement/hidden agenda.
  • Be it callout posts on social media trying to frame me as some kind of bad guy for the mere act of saying "no".
  • Be it content creators or other commercial entities trying to non-consensually monetize the project for their own benefit.

This comes on top of the daily grind consisting of but not being limited to:

  • People not reading instructions
  • People not reading the docs
  • People reading the docs but then asking if the docs are really correct on the matter, because they did not like what they read
  • People not doing their own homework
  • People throwing the mental load they're responsible to carry at random people on the internet
  • People asking questions they know the answer to but don't like and thus wanting to hear it again
  • People trying to make their completely unreasonable emotions my problem
  • People asking if unsupported robots are supported
  • People asking when a new robot will be supported
  • People not putting in the necessary effort required to practice this hobby

That said, I don't think that there is much point in whining about it, as that is just how it is if you run a project like this one.
The only thing you can do is improve your processes and learn how to better deal with it.

There is point though in documenting it and, most importantly, making it visible, which is why I did that just now.
And now that I did it, I think I'm good.

Thanks for reading!
And thanks a lot to the vast majority of the userbase that isn't like that. ❤

The usual

If you want to see ...

Read more

Valetudo 2024.02.0

14 Feb 19:40
Compare
Choose a tag to compare
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

Valetudo 2023.12.0

25 Dec 17:08
Compare
Choose a tag to compare
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

03 Oct 19:27
Compare
Choose a tag to compare
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

Valetudo 2023.08.0

13 Aug 18:04
Compare
Choose a tag to compare
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.

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

Valetudo 2023.05.0

29 May 16:22
Compare
Choose a tag to compare
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

Valetudo 2023.04.0

23 Apr 15:43
Compare
Choose a tag to compare
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