Skip to content

Valetudo 2024.06.2

Compare
Choose a tag to compare
@Hypfer Hypfer released this 23 Jun 16:04
· 62 commits to master since this release
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 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 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: Remove deprecated schema property from HA vacuum entity autodiscovery data ef92967

Features

  • ui: HiDPI support for the map renderer 86555ae
  • ui: Better feedback for the dock controls 7a318cf
  • mqtt: Optionally expose ObstacleAvoidanceControlCapability 9866d94
  • mqtt: Optionally expose KeyLockCapability 572e3ce
  • vendor.dreame: R2416 support d87dca8
  • OperationModeControlCapability: Vacuum then Mop Mode 1937de9
  • CarpetSensorModeControlCapability: Detach Mode 6c3dd7e
  • ui: Loading animation cleanup d8714dd
  • ui: Refactor, redesign and rearrange controls a bit 138f0d9
  • ui: Change desktop UI breakpoint from min 600px to min 750px width 97818ac
  • ui: Custom icons for Fan speeds, Water grades and Operation modes 03ff290
  • AutoEmptyDockAutoEmptyIntervalControlCapability 6465975
  • vendor.dreame: L10S Pro Ultra Heat support 99e13da
  • vendor.roborock: dryer module support for S8 Pro and G10s (#2037) 37f386a
  • Allow advanced users to customize their system ID a9868f7
  • ui: Speed up all animations by 2x 8f26ae7

Fixes

  • ui: Extending HTML elements is not supported by safari 4f72632
  • vendor.dreame: Reduce repoll delay right after startup to reduce the time to first map on some dreames a7b2cc4
  • ui: Fix some hiDPI related issues 13f7db3
  • ui: Draw stroke before fill for map structures that have text to fix rendering on firefox mobile 7d9255b
  • vendor.dreame: Fix detergent property value 3 mapping 09e2083
  • ui: Don't display preset value until it is actually committed 33615ec
  • vendor.dreame: Warn on unknown preset value 77be950
  • mqtt: Always refresh gettable handles after setting 6ca4eb9
  • MockRobot: Remove turbo water grade 92b351a
  • timers: Wait a few seconds after executing pre_actions to give the firmware some time to report back its state f0101b7
  • Don't crash the process if we're not able to persist the config cc0cd41
  • ui: Fix missing controls card content indentation 31519e1
  • mqtt: Bump to mqttjs v5.5.5 to fix some keep-alive related issues 9dab16c
  • vendor.roborock: The S6 does not support the MapSnapshotCapability 7362514
  • ui: Prevent the creation of virtual walls with a length of 0 b3417d2
  • vendor.dreame: GoTo support has been removed from later X10plus firmwares b1f58ab
  • vendor.3ir: Fix parsing of maps with different dimensions than 800x800px 648b07e
  • Fix ConfigPath env variable e7d2bc6
  • vendor.dreame: Document error code 117 (#2020) 4af21c7
  • vendor.dreame: Remove mop drying time quirk from the W10 Pro as it is not implemented by the firmware 28c91b6

Chores