github Hypfer/Valetudo 2025.10.0
Valetudo 2025.10.0

7 hours ago
valetudo

2025.10.0

Iterating on and due to the new vendor

Valetudo 2025.10.0

After the last release notes, which have been more of a devlog/manifesto, this one returns to a slightly more technical focus.

That said, things aren't over or resolved, so if you haven't read the 2025.08.0 release notes yet, I highly recommend you do: Valetudo 2025.08.0

So many new capabilities

As I wrote in the last release notes, with there now being two vendor implementations doing the same thing, a lot of quirks graduated and became capabilities. I am very glad for that, given that on recent supported Dreame robots, the quirks section contained more options than the regular robot settings, which was anything but good design.

Starting off with the first two, I'd like to again thank everyone who took part in the public brainstorming session for the icons.
Even after seeing them for a while now, I still think that they've turned out great, and, as suggested, they indeed look merch-able.
Though.. very obscure merch (which is usually the best kind of merch).

MopExtensionControlCapability

image

This one actually doesn't belong here, as it was introduced in the last release.
It however does now have this new and improved custom icon, hence, here it is again.

MopTwistControlCapability

image

If your robot can't extend its mop to reach closer to the walls, it might be able to twist to achieve the same.
Or, if it can extend it, it might still be able to twist to reach below some furniture overhangs.

The icon and description will reflect which of the two it is.

MopExtensionFurnitureLegHandlingControlCapability

image

Being named to prove just how enterprise-y Valetudo has become, this one allows you to enable logic in the firmware that extends the mop to clean closer to legs of tables and chairs.

MopDockMopWashTemperatureControlCapability

image

Pretty self-explanatory.
The available options are somewhat arbitrarily named, however so are the labels within the vendor apps, as even though they say e.g., 100°C, they do not actually reach 100°C.

/u/Maximus-CZ
This happens when the cost of lying is lower than potential profit

MopDockMopAutoDryingControlCapability

image

Also self-explanatory, with the icon TBD and currently being just a placeholder.
If you have ideas how that could look like, please let me know!

Also, I was thinking of having a MopDockMopCleaningFrequencyControlCapability, MopDockMopCleaningIntensityControlCapability and MopDockMopDryingControlCapability in the future.
It might make sense for those icons to become a whole consistent set.

I do have fun actually building them though, so unless you're like an actual professional graphics artist able to mimic the existing style, rough ideas would be best.

One capability less

Revisiting the existing capabilities, I noticed that with the introduction of the AutoEmptyDockAutoEmptyIntervalControlCapability the AutoEmptyDockAutoEmptyControlCapability became redundant, as "Off" is also an interval. A very long one.

Thus, these two have been merged, which is a breaking change.
I don't think that it will break anything for anyone, but spacebar heating is a thing after all.

image

Device and state classes for Home Assistant via MQTT

Someone asked why they couldn't change the precision of various Valetudo-provided Entities in Home Assistant (e.g., area in m² instead of cm²).
A few hours later, I asked myself why I hadn't done that a long time ago. Oh well.

Anyway, Entities for e.g., Area or Time provided by Valetudo now have the correct device_class and state_class set, meaning that Home Assistant now has the metadata to provide proper enriched handling.
They also now use the correct units as per the HA data model. No clue how I missed that up until now.

image

This is so much better.

Note: HA will likely tell you that some units changed due to this change. You can safely select "Update without converting".

Midea

The implementation for Midea is moving along.
Beside controls, Valetudo now even shows obstacle images on Midea! (Not all of them might be real)

image

There are still a bunch of things to do, but once that is done, I'd like to revisit rooting and hopefully come up with some nice guide as usual.
I've also bought another robot. Let's see how that will work out.

FWIW, it was cheap being an Amazon WHD. And also weird, because the original recipient clearly was not a real person + the address being not a real house + the thing being completely unused.
... not sure what was going on there, but cheap robot with Amazon invoice. I won't complain.

What else is going on?

You might have heard that Google is further closing down the formerly open platform known as Android. If you haven't heard, well now you do.
Here's F-Droid's statement for your convenience: https://f-droid.org/en/2025/09/29/google-developer-registration-decree.html

This is.. not ideal.. for many reasons.
It wouldn't make sense to go into all of them within this context, however, Cory Doctorow's prophecy of the (now no longer just coming) War on general computation is something to mention here.

Unfortunately, studies show that opposing authoritarian governments may have adverse effects on shareholder value, meaning that relying on big tech to not be evil might not be a winning strategy.
Thus, motivated by the distressed croaks of my almost boiling amphibious self, I started asking around what options we have.

Beside blissful ignorance and moving into a shed in the woods, those seem to be:

  • Android, but with a good vendor (e.g. Fairphone)
  • somewhat Android, but also different (e.g. GrapheneOS)
  • something else, but with an Android compatibility layer for transitioning (e.g. SailfishOS by Jolla)

Apparently, there are actually Valetudo users daily-driving SailfishOS phones.
Also, apparently, Jolla exists, is European, and has been actually shipping Linux phones for many years now.

Building on some of their tech (thanks, FOSS), there is also Debian-based smartphone Linux distribution Droidian, or, the "let's turn Droidian from a hack for existing products into an actual product on its own" FuriLabs FLX1s.
FuriLabs in this case is a startup founded by one of the maintainers of the aforementioned Droidian.

They are pretty new, small and appear to be neat, hence the mention here, as what I find interesting and neat, you might also find interesting and neat. Also, something something rooting for the underdog, though, keep in mind that I have not ever actually seen their product.
This is a pointer; not a recommendation.

It points here 👉 furilabs.com


To end on a high note, if you've been watching the Dreame subreddit, you might've seen something peculiar recently.
Some users reported that the app started showing them these new and exciting ads (click to enlarge):

Yes, those really are smut dark romance stories, so that.. idk.. you can "practice self-care and mindfulness" while the robot does its cleaning.

Unfortunately, Valetudo users missed out on that enriching and context-aware experience.
Sorry.

The usual

If you like this release or Valetudo in general, you might want to consider donating:

https://github.com/sponsors/Hypfer

https://builder.dontvacuum.me/donations.txt

Autogenerated changelog

Breaking Changes

  • Merge AutoEmptyDockAutoEmptyControlCapability into AutoEmptyDockAutoEmptyIntervalControlCapability 7d1aea3

Features

  • vendor.dreame: MopDockMopAutoDryingControlCapability 6fcfc6a
  • vendor.roborock: MopDockMopAutoDryingControlCapability 847093a
  • vendor.midea: MopDockMopAutoDryingControlCapability ed78538
  • core: MopDockMopAutoDryingControlCapability f150a89
  • mqtt: Add missing deviceClass + stateClass attributes, update enums and fix units for HA 921dd13
  • vendor.midea: Improve state reporting 0afc47e
  • vendor.midea: MopExtensionFurnitureLegHandlingControlCapability 7c0fc3a
  • vendor.dreame: MopExtensionFurnitureLegHandlingControlCapability 92cd7f6
  • core: MopExtensionFurnitureLegHandlingControlCapability e6615d2
  • ui: Improved MopExtension and MopTwist icons fd83cd3
  • webserver: You know the rules and so do I 0dcca1d
  • vendor.midea: MopTwistControlCapability 72444e6
  • vendor.dreame: MopTwistControlCapability ea236ab
  • core: MopTwistControlCapability 92ee9a5
  • vendor.midea: Pet obstacle avoidance and stain cleaning 0ea2a50
  • vendor.midea: Everything carpet f94f3c1
  • vendor.midea: MopDockMopWashTemperatureControlCapability 52c8c4b
  • vendor.dreame: MopDockMopWashTemperatureControlCapability 53ff4fa
  • core: MopDockMopWashTemperatureControlCapability de62cbf
  • vendor.midea: Auto empty controls ae01b69
  • vendor.midea: Obstacles galore 17ebfae
  • ui: Improve MopExtensionControl Icon 757e682

Fixes

  • vendor.dreame: Give the firmware some time to think ec61206
  • vendor.midea: Do not fail fast 5715fb0
  • ui: MopDockMopWashTemperatureControl should be a dockListItems 493c570
  • vendor.midea: Add missing return statement 52b4625
  • vendor.dreame: Fix connection timeout on startup on very recent firmwares 15c1f80
  • miio: Fix super rare bug crashing the process 0c6272f
  • vendor.midea: Fail any requests instantly on initial startup a963fa1
  • vendor.dreame: Add another new modelId df46e2e
  • vendor.dreame: Add missing model ID 87d0760
  • vendor.roborock: No-Op handle two more events 0261f57
  • vendor.dreame: Track emptying state of auto empty dock 6f0fc2a

Refactoring

  • vendor.dreame: Group all the ephemeral state into an object 2fdef9f
  • vendor.midea: Move specific capabilities into actual implementation class c0d1640
  • MockRobot: Smurf for consistency 5d40584
  • vendor.midea: Rename implementation class for J15PU 785e6b8

Chores

Don't miss a new Valetudo release

NewReleases is sending notifications on new releases.