Some stuff you may find useful, lots of prose
Valetudo 2026.05.0
The last release notes opened with
A surprising amount of relevant things has happened since the last release.
Unsurprisingly, for Valetudo features, that momentum was not kept up. But still, a lot of things happened.
A lot of stuff always happens.
MQTT / Interfacing with Home Assistant
The meat of this release is in here.
Dock Components
As promised in the last release notes, Dock Components (Freshwater, Wastewater, Dustbin, Detergent) are now exposed to Home Assistant via MQTT (depending on your model of robot and Firmware of course).
This should make for some neat new automations.
Room Cleaning
Lately, the vacuum entity in Home Assistant gained the ability to start a cleanup on a selection of HA Areas.
Starting with HA 2026.5.2, thanks to @jbouwh, this can now be done via MQTT.
And, starting with this Valetudo release, thanks to @jhbruhn, it can be done with Valetudo.
I have slightly mixed feelings about this. I can see myself personally using this and it is objectively useful, but it also pushes Valetudo further down the stack and more into invisibility.
That might possibly have negative long-term impacts, however, with my cries of "I exist" being as loud as they are, this might already be compensated for.
Manual Control UI/UX Improvements
Why did I not add WASD controls sooner?
It's the obvious thing to do, so why didn't I?
It's fun!
Also, as you can see, you can now just select if you want a Joystick, the D-Pad or Keyboard Controls.
I remember someone asking for this at one point, because iirc their partner liked the D-Pad better or something like that?
There you go.
Eternal life
One day, I woke up and thought
Hey, doesn't fork() + exec() mean that the process clones itself and then swaps out its internals with something else?
Can you do that on yourself?
Answer being
Yes, that's execve()
Follow-up question being
Can I just patch my nodejs runtime to expose that to Valetudo?
Answer being
Someone beat me to it.
https://nodejs.org/docs/latest/api/process.html#processexecvefile-args-env
NodeJS can do it since v22.15.0. Valetudo (at the time of writing) uses v22.18.0
So, if Valetudo senses that its time has come, it can now write down its last thoughts, then replace itself with a clone and just continue as if nothing ever happened.
I take great joy out of building mini sci-fi horror stories.
But why?
There are currently two use-cases for this:
Updater
First one is the updater not doing a full system reboot.
That's very nice, but might possibly expose some yet unseen side-effects.
We shall see. It could easily be deactivated and rebooting was fine, but this is quicker, less disruptive, and also fun and cool.
Failsafe
Second one being Valetudo no longer killing itself if it ever reaches 1/3 of system memory.
This hasn't happened since probably at least 5-6 years, however, with the Midea bots no longer rebooting nightly, after a Month of uptime, someone found no Valetudo on their bot.
Ideally, you would fix this at the root, but the root - at least as far as I can tell - is not to be found in my JS code, but might instead be in the runtime itself.
Replacing yourself with an identical clone with a memory implant is thus the next best thing to a solution to issues such as memory fragmentation or tiny leaks.
Docs
The docs have been redone framework-wise. Content stayed the same, but tech and design changed massively.
Gone is the old, outdated and stale Jekyll version. In is eleventy (a JS-based generator).
Additionally, styling was greatly improved and now embodies the somewhat distinct visual identity Valetudo eventually grew.
This broke a few permalinks, so if you're coming from a third-party guide, [clarkson laughing at you meme].
What else is going on?
Welcome to the more blog than usual section of the release notes.
Marstek Venus A
I bought a battery storage system for my solar setup.
It comes with very attractive pricing (170-220€/kWh), is modular, expandable and has an ethernet interface.
It is also majorly broken and not for the faint of heart.
This thing is pain. Everything about it is pain.
They've moved from single units to a modular architecture, but the firmware doesn't really support it.
Meaning that if you add a new battery module later, the system just breaks until you pray to the support, which is ignoring your tickets.
So you instead contact the leaked email address of some random parent company employee and beg that they push an update via the cloud.
And then it still doesn't work.
The ethernet port was a great upgrade up until the point it stopped negotiating at fast ethernet speeds and just dropping offline.
Now, with the port in the switch forced to 10Mbit half-duplex, it works. Question is for how long.
But, I am now immersed deeply enough into its inner workings to not throw it into the trash.
Thanks sunk cost.
First thing I started with was getting rid of the App.
This sorta worked and produced Venuscontrol, which is a WebBluetooth reimplementation of said app.
It however doesn't do OTA Updates, and, as said above, you kinda need those if you want to do.. anything really.
If you're looking for something to hack, please, build a non-insane custom firmware for this thing.
From my understanding, those aren't signed, so you can just flash something else if you want. But maybe double-check that.
If you do just want a thing that works without the cloud.. uh. well.
I suppose you could buy just the Master with 0 Expansions. That should probably work and is attractively priced.
But I dunno.
BambiHeavy
After upgrading my living room from "Ikea galore" to "damn, you're 30 now. It is mid-century time.", it was time for a new TV.
This was a great opportunity to again learn why local businesses are dying and how doing anything else than buying online is a bad idea.
But anyway, before the return odyssey, this gave me 18h with a Philips-branded OLED TV.
The brand however no longer belongs to the dutch conglomerate but some Chinese corp called TPV Technology.
Same goes for "Philips Hue" which is also not Philips but Signify (7.54% annual dividend yield, btw. Fairly consistently.)
This split appears to have eventually led to a fallout between those two new corps, ending with Philips Hue lights and Philips TVs no longer playing nice with each other.
Recently, possibly in an effort to improve margins, Philips TVs moved from Android TV to TitanOS, which is some.. startup? I dunno.
It's some Linux thing, which is just customizing the SOC vendor SDK. Basically it's a Vacuum Robot with a screen.
Firmware updates were signed but not encrypted, so it was an interesting dive into the thing.
Learnings
- The OSD is just some HTML pages.
- The rest of the Firmware is just duct tape.
- The ambilight demos (I forgot to take pictures :( ) are just WebGL demos from random places on the web (including codepen).
- There was a 20€ Invoice PDF in that firmware, documenting the purchase of some background music to be used in said demos.
OLED, at least in that implementation, is bad tech. It can be super bright, but only if just a small object on screen is.
If the whole screen has to display something bright, it auto-brightness-limits itself to "broken CCFL in a Thinkpad T60 waiting to be replaced".
There is an OSD option to disable that, but then it just switches to that low brightness at all time.
Utterly useless.
Add to that that OLED can get sunburn (yes, really!) - meaning that you should not put it up in a room with windows - and you find yourself mentally cursing at the world, the shop, the salespeople and yourself for not just buying it online.
Of course, being the lokale Einzelhandel, you cannot just return the thing and get your money back.
Instead, you have to buy something more expensive from the store.
So now I have some slightly used Sony Bravia 5, which was the only non-shit non-OLED TV they had in stock.
It's alright I guess. Would've just been cheaper when bought online.
What to do about it
But anyway, the cool thing about the Philips-branded one was that Ambilight.
Even having it for just 18h was enough to make me miss it.
So I've pondered what to do.
Could do Hue entertainment, but that needs the proprietary Hue Bridge + the Hue Sync box between TV and content source.
Could do Hyperion, but that needs you to usually have very little expectations when it comes to aesthetics.
Could maybe.. solve it in software?
One cool thing that has happened is that someone reverse engineered the proprietary "Hue Entertainment" extension to the Zigbee protocol.
That's their secret sauce that enables a light update rate up to 25 updates per second.
This also was implemented in Zigbee2Mqtt, meaning that if you have Hue lights that support Hue Entertainment, the only missing piece is transforming screen content into light commands.
Thus, I figured that that might be a great test for Qwen3.6-27b and its abilities.
Now, there is BambiHeavy which does just that:
bambiheavy.mp4
It's alright. I'm mostly happy with it; apart from some minor tweaks to be done.
All in all, Project Hail Mary looked great with it.
It is still vibecoded jank, but you may find that useful regardless.
You may also find knowing that Z2M can do Hue entertainment useful, because Ambilight is just one use-case for that.
Someone please build a cool music visualizer.
Maybe hook up squeezelite to it?
Hotline Valetudo
In my continuing efforts of pivoting from "building software" to "making performance art that somehow also does real useful things", I've felt like leaning in some more on the corporate satire.
Therefore, the Valetudo Premium Support System VPSS is now available via +495021 / 9039940.
For privacy reasons, caller ID suppression via prefixing with #31# is advised, but you do you.
You can also run it locally if you do not want to pay for calls to germany. It's exactly the thing committed to GitHub.
Hopefully you will have fun.
Also, equally hopefully, some entitled idiot will gloss over all communication in the docs, skip right to the premium support hotline, and end up in a hell of his own making.
Please hold the line.
Meta
Qwen3.6-27b has been pretty much essential in all of these fun little hacking side-things.
It effectively substitutes the raw energy, free time and "this is all new and interesting"-boost I had ca 10 years ago (and now don't) with GPU compute.
I think with these open weights models, vibecoding is here and here to stay.
I suppose one will just have to make peace with that, the same way one will have to make peace with suddenly needing glasses, hearing aids, or really any kind of augmentation to compensate for biological reality being inadequate.
Which, I suppose, is fine, if there is no rent-seeking cloud landlord middleman.
Custom firmware hearing aids when?
Actually, I have no idea how good or bad that specific market is. I'm just pulling this example out of thin air without having any knowledge about it.
Please correct me in the comments.
Either way, I guess the aforementioned LLM assistance could actually have a positive impact in the development of such tech that people truly own themselves.
If we use these tools correctly that is. And if we don't shut off our brain entirely.
It would also be nice if the entry fee wasn't multiple thousand euros of hardware, but that's going to change with time (I hope).
The slightly less usual
Speaking of entry fee to AI, I've been hitting the VRAM limits of my 24GB RTX 4090 pretty hard and pretty consistently.
So if you have something with more of that (and equal or greater compute) lying around (e.g. decommissioned server or whatever), my NAS would be happy to receive an upgrade.
Beside that, as 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
Features
- mqtt: Room cleaning for HA 2026.5 and up
6bdef9f - ui: WASD manual control
80cf405 - updater: Allow force updating to the same version for dev testing purposes
38b943a - Biblically accurate exception handling
b786064 - mqtt: Publish Dock Component Status to MQTT
5d905ec
Fixes
- vendor.dreame: Obstacle naming
149a205 - vendor.dreame: Add additional model IDs
6c51d72 - vendor.dreame: Disable postWriteDelay for manual control commands
8a93d60 - ui: Some map touch handling cleanup
e9998d2 - webserver: Remove obsolete express-list-endpoints
00c61e3
Refactoring
- docs: Migrate to eleventy + redesign
0cf7d72 - vendor.dreame: Send all communication through the miot helper
6fc711d - vendor.dreame: Central miot helper
a9a5ab3