Releases: Hypfer/Valetudo
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.
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
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.
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:
You can even have ones that are disabled by default for functionality that probably isn't needed by most users:
Overall these are just a few minor neat-ness improvements for the UX.
Bugfixes
- 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
- The
mop dock cleaning frequency
quirk for the roborock ultra dock now works correctly - 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
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.
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
Manual execution
It is now possible to execute a timer manually by pressing the play button.
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.
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.
The robot is now supported by Valetudo. It can be rooted and used right away.
Misc
- MQTT and NTP editor now automatically extract the host from pasted URLs for more convenience
- Headlines in the sidebar menu no longer overlap
- 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
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.
If you zoom in enough, they will also show a label with additional information (if available).
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.
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.
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
-
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. -
This release of Valetudo can now properly handle multiple comma-separated errors reported by some Dreame firmwares.
-
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
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
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.
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.
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.
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.
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.
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.
Misc
-
The Live Map now remembers the previously selected mode in the browser's local storage.
-
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. -
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
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
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.
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.
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.
Also, Icons in the menu have been updated for consistency and easier understanding.
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.
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
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
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 q...
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
Chores
Valetudo 2022.10.0
New Robot, new Firmware, Various UX improvements and MQTT changes
Dreame W10 support
Starting with this release, the Dreame W10 (not-pro!) is supported by Valetudo.
Because I got pretty annoyed by the lack of proper mopping robots supported by Valetudo, I've finally just bought one myself to check if it is rootable and suitable for Valetudo.
Turns out:
It is. Looks like it always was.
We were just misinformed because we never had bought one ourselves due to its pricing and people on the internet told us incorrect information about it. The lesson here is that we absolutely have to buy all robots ourselves or else we go nowhere.
Anyway, rooting is possible with the catch that you will need a new custom PCB to do so.
I do have ~250 of them lying here waiting to be soldered and used, however the logistical issue of me getting those to you yet remains to be solved.
Dreame D9 Pro firmware backport
Because I got pretty annoyed by the lack of firmware updates for the D9 Pro, I've finally just bought one myself to check if I can do anything about it.
It seemed pretty wrong that the older D9 has a recent 2022 firmware while the newer D9 Pro is stuck with a firmware from early 2021.
Thus, I wondered how different those robots really are and if it would be possible to port the D9 firmware over to it.
Turns out:
They're pretty similar but not entirely.
And so with a few changes, you can now upgrade your D9 Pro to a much more recent firmware using the Dustbuilder.
Gone should be the days of the robot bumping into everything and its map slowly deteriorating over time.
You're welcome :)
Reminder:
Do not try to install a regular D9 firmware on your D9 Pro. It will brick your robot.
You absolutely need to select the customized D9 Pro version in the dustbuilder.
MQTT
This release features a few MQTT improvements.
Optional exposed capabilities
Valetudo's MQTT client has gotten a bit more flexible with this release.
To avoid additional load and traffic for features that aren't required in 90% of setups, not every capability is exposed to MQTT.
This unfortunately meant that 10% of people had to also use the REST API to solve their automation needs.
With optional exposed capabilities, it is possible to cater to those needs without polluting the MQTT broker of people that don't require the functionality. For now, the only option to select is the SpeakerVolumeControlCapability. Others may follow if someone makes a solid case for why it should be controllable via MQTT.
Please only enable optional exposed capabilities that you actually plan on using as each additional one adds system load due to periodic polling.
Improved MQTT Errors
The error mapping improvements that have been implemented in the last release are now also being published to MQTT.
It should make building reliable automations based on the error state much easier
Please note that this could be a breaking change if you've hardcoded the MQTT error topic somewhere.
Users of Home Assistant should not notice anything changing as the autoconfiguration payload change should take care of everything.
If you've created automations based on the value of the error topic, this will be a breaking change for those as well.
Better map integration instructions
The process of getting the Valetudo Map into Home Assistant always has been challenging for newcomers as it is not straightforward.
Therefore, the image displayed in Home Assistant was changed and a new docs microsite was created.
If you navigate to hass.valetudo.cloud, you'll find a step-by-step walkthrough to get the map integrated.
Furthermore, there is also an explanation why things are that complicated.
UX Improvements
The Mop Attachment Reminder event now gets dismissed automatically when you detach the Mop Attachment from the robot.
If the user attempts to start a full cleanup after selecting something in the map view, they will now see a warning dialog.
The Wi-Fi configuration settings are now hidden and replaced by an info box if the robot does not support reconfiguration while provisioned.
Operation Mode Control
This release features support for changing the operation mode of the robot.
This enables you to e.g., tell your new W10 that it should only mop.
More error code mappings
After staring at Ghidra for a while, I've managed to discover the meaning of a few more hardware error codes of dreame robots.
Furthermore, roborock hardware error code mappings were updated as well.
The usual
As you've seen at the beginning of these release notes, we do have to buy all robots ourselves if we want stuff to happen.
Thus, if you want to see Valetudo on more robots and/or like this release, you might want to consider donating if you haven't done so already:
https://github.com/sponsors/Hypfer
https://builder.dontvacuum.me/donations.txt
Autogenerated changelog
Breaking Changes
- mqtt: Provide better error information
da6994a
Features
- vendor.dreame: Newer 1C firmwares do seem to support no mop zones
a06a86d
- vendor.dreame: Operation mode control
aefa436
- vendor.dreame: D9 Pro+ special edition support
ffbcb73
- vendor.dreame: Mop Stuff
0081cba
- ui: Allow configuration of optional exposable capabilities for mqtt
3f31186
- mqtt: Introduce optional exposed capabilities starting with the SpeakerVolumeControlCapabilityMqttHandle
685227b
- vendor.dreame: Initial support for the W10
6da6556
- ui: Warn the user when attempting to start a full cleanup with a MapAction pending
bc6a4ce
- ui: Add current browser timezone hint to timer timePicker
892cc09
- vendor.dreame: Automatically dismiss the MopAttachmentReminderValetudoEvent on Mop detachment
19f96a2
- mqtt: Update wrapper image to point to docs microsite
67f600a
- vendor.dreame: Map some internal error codes
c9bc1b8
- vendor.roborock: Add hardware fault error code mappings
19ce6aa
Fixes
Valetudo 2022.09.0
An interesting newly supported robot plus security and usability improvements
Dreame P2148 Ultra Slim
Thanks to generous user donations, I was able to buy a Mijia Ultra Slim Robot to take a look at.
As you can see, it is very small, measuring only 5.5cm in height and 32.3cm in diameter.
For comparison:
The Z10 next to it measures a height of 9.6cm and a diameter of 35cm.
This makes the ultra slim a very interesting robot as it fills a niche that no other supported one did previously.
Apart from that, it's a decent vSLAM robot that - thanks to the ToF sensor in the front - doesn't bump into every wall that it can find.
Fortunately it turned out that even the latest available firmware is rootable via the very easy debug UART rooting method :)
Thus, there's now support for it in Valetudo.
Unfortunately however, it is a china-exclusive model, meaning that both it and any spare part have to be imported to wherever you live (unless you live in china that is).
Because of its size, it also uses completely different consumables than other dreames. Do keep that in mind if you're thinking about buying one.
Nonetheless, I am very happy to have it supported, as it is a proper solution to a problem that previously was unsolvable without outright replacing your furniture. There is simply nothing else like it in the market.
Thus, if you've ever wanted to use Valetudo but couldn't as all supported robots were too large for your scenario, then now there's an option for you.
I do want to stress again that this would not have been possible if it weren't for user donations.
There simply is no way to pay for all those robots out of our own pocket... especially considering the pricing of some upcoming models and even more so since we'll need at least two of them
Thank you for your ongoing support!
Encrypted Wi-Fi provisioning
One thing that slightly annoyed me for a long time now was the fact that Wi-Fi provisioning was done via an unencrypted connection over an unencrypted Wi-Fi Access Point, meaning that anyone passively sniffing Wi-Fi traffic during the provisioning process could've in theory gained access to your Wi-Fi credentials.
To solve this unlikely scenario, the Valetudo frontend now requests an RSA-Key from the backend and encrypts the provisioning payload with it, before it is sent over the Wi-Fi.
This slight improvement in security does not prevent MITM-attacks, however that wasn't ever the goal to begin with as those are even less plausible than the passive Wi-Fi sniffing attack.
If you want to know more about the reasoning behind this, feel free to take a look at this very extensive code comment further explaining things.
Usability improvements
Larger ClientStructure hitboxes
It should now be easier to interact with the map on mobile as the hitbox size of various things has been increased.
Robot Coverage map
Based on user feedback, the coverage map now renders the coverage and the robots' path.
Map Data Export Button
There's now a button that allows the user to download a ValetudoMap JSON e.g., for use with the ValetudoMap to Minecraft Map converter.
Previously, users had to manually call the REST API route and save the JSON.
MQTT resubscribe workaround
In some setups with MQTT brokers that don't have any persistence enabled, a broker restart or a loss of connectivity could lead to Valetudo not reacting to any MQTT commands anymore as all subscriptions were gone. It would still continue publishing status updates though, leading to even more confusion.
This issue should now be solved.
Swagger UI
The Swagger UI now only displays routes that are supported by the currently running ValetudoRobot implementation.
Quality improvements
- Errors have been refactored to have a proper place in the abstraction
- The updater has been refactored
- Binaries are now 1MB smaller due to the removal of irrelevant sourcemaps
The usual
If you want to see Valetudo on more robots and/or like this release, you might want to consider donating if you haven't done so already:
https://github.com/sponsors/Hypfer
https://builder.dontvacuum.me/donations.txt
Autogenerated changelog
Features
- ui: ValetudoMap data export button
f1aea85
- vendor.dreame: Add support for the P2148 Xiaomi Mijia Ultra Slim
22419f4
- Encrypted Wi-Fi provisioning
2b6dd04
- Classify robot errors
e8715cb
- vendor.dreame: Add mop dock error code mapping
6179e19
- webserver: Filter openapi spec to only display endpoints supported by the implementation in swagger ui
3ab4033
- ui: Improve coverage view
4ac2928
- ui: Improve map interaction by allowing for slightly misaligned clicks/taps
6e87ba3
Fixes
- mqtt: Fix resubscribe on broker restart
be33e12
- vendor.dreame: Remove confusing MCU version logline
4c21394
- miio: Correctly update our stamp
ee6a60d
- vendor.dreame: Remove broken mop only quirk
dbbd0f0
- vendor.dreame: Fix wrong quirk description
afac067
- vendor.dreame: Ignore another useless piid on the 1C
922aece
- http.ServerResponse.socket can occasionally be null
03d22dc
Refactoring
- miio: Code cleanup
81809f1
- updater: Break updater up into multiple files
b9bcbe3
- vendor.dreame: Change implementation name to something pronounceable
b198b10
- ui: Reduce duplicate code in map structures and improve readability
4f05dcd
Chores
Valetudo 2022.08.0
New firmwares for dreame robots and some bugfixes
New dreame firmwares
It took quite a lot of time and work, but now we're proud to announce that we've managed to get newer dreame firmwares
to work rooted and with Valetudo. A big thank you to everyone who helped during the beta test!
Important: That does not mean that these newer firmwares have become rootable.
You will need to have an already rooted robot to install these latest rooted firmwares.
To update, head over to the dustbuilder at https://builder.dontvacuum.me/ to build and install a new image.
Make sure to update Valetudo before updating the firmware.
Other dreame news
Starting today, every firmware image built with the dustbuilder will contain a fix for the vanishing Valetudo issue,
which occasionally left people with a rooted robot but no Valetudo.
If a user starts a new mapping pass, the fresh map should now appear instantly.
Furthermore, issues with frozen maps either during cleanups or when editing segments were fixed as well.
Robot Coverage View
The UI has been extended with a view displaying a much thicker path.
This can be used to better see which areas of the map have been cleaned.
Whether this view will stick around long-term is yet to be decided. It was pretty easy to implement though.
Feel free to leave your feedback in the comments.
The usual
If you want to see Valetudo on more robots and/or like this release, you might want to consider donating if you haven't done so already:
https://github.com/sponsors/Hypfer
https://builder.dontvacuum.me/donations.txt
Misc
This changelog features artworks generated by DALL-E 2 because I thought it would be neat to have something to look at.
Unfortunately, it doesn't like generating artworks featuring lidar-based vacuum robots (yet?)
I hope they've nonetheless enhanced your changelog reading experience.
Feel free to leave feedback on that as well.
Autogenerated changelog
Features
- vendor.dreame: Newer D9 Firmwares also have a sensor consumable
17c0d27
- ui: Trim whitespaces when renaming segments
39d72f4
- ui: Add robot coverage map
a9661a0
- vendor.dreame: Add mop-only quirk for newer firmwares
a33afe3
- vendor.dreame: Add Mop Dock UV-C Toggle Quirk
7ce4abe
Fixes
- vendor.dreame: Add support for more features of newer firmwares
b74c281
- ui: Add margin to apple touch icon (#1526)
dc72ef0
- vendor.dreame: Ignore empty maps
99aad7b
- networkadvertisement: Don't crash the process on ssdp multicast membership errors
bfb96c0
- miio: Allow two simultaneous FDS uploads
6e26374
- vendor.dreame: Switch to async map preprocessing to not block the event loop
3b5743b
- miio: Further improve fds upload timeout handling
8c1ba9e
- miio: Gracefully handle connectivity issues when receiving fds uploads
8aab94f
- vendor.dreame: Ignore timezone update message
5ecf7fa
- ui: Allow sending home basic control command while paused
0dfb4ba
- vendor.dreame: Fix maps for newer firmwares
5f67103
- webserver: Fix openapi schema for MapSegmentEditCapability
f106735
Refactoring
- webserver: Response cleanup
839310a
- webserver: Actually make use of the openapi schema validation
6e2d2e1
- Introduce RobotFirmwareError and refactor CapabilityRouter for unified error logs
1d2ad47
Chores
- release: 2022.08.0
214b5c0
- Minor cleanup
9356ba8
- vendor.dreame: Fix tests
15eee37
- mqtt: Minor cleanup
4ae1d03
- Minor misc cleanups
7bf3c87
- Add eslintrc flavors
b3843f8
- Add close_threads github workflow
e10313d
- ui: Add missing rel="noopener" tag to menu bar
a7e6920
- build: Bump to NodeJS v18.5.0
66712f9
- Update wording in VoicepackHelp.ts
05a6b89
- Update issue template
cebca05
Valetudo 2022.06.0
Another maintenance release featuring upgraded dependencies, refactoring and some bugfixes
Bonjour/mDNS fixes
Users can now discover multiple robots of the same model in their home network:
Apparently, the Bonjour service name needs to be unique or else some bonjour implementations will deduplicate it.
Because of this, the companion app only displayed one robot even though there were multiple ones on the network.
Nightly build enhancements
The nightly update provider will now display a changelog of all changes since the last release.
You can switch to the nightly update provider by changing the updater.updateProvider.type
in your valetudo_config.json
to github_nightly
.
Please keep in mind that nightly builds might be unstable. They should only be used by people that know what they're doing and are willing to handle occasional breakage.
UI Improvements
Multiple issues that caused the live map to stop refreshing have been fixed.
Checking back on the Valetudo UI after having it in a background tab for a while during a cleanup will now display the latest map data.
Also, running Valetudo behind a flaky reverse proxy should not interfere with the SSE connection anymore.
Boring chores
This release features plenty of dependency upgrades, the migration to create-react-app 5 and more.
It also contains a lot of refactorings that should further improve the code quality.
While all that doesn't offer any directly noticeable benefits to the user, it is worth noting nonetheless, as keeping the project well-maintained is vital to its longevity.
The exciting stuff will hopefully happen later this year :-)
Apart from code changes, I've been busy figuring out how to build statically linked recent versions of common tools that might be added to our robot firmware images. It's all done using dockerfiles to make it easy to understand, document and reproduce.
Interestingly, information on the internet do to just that is rather sparse so this might also be useful to someone with a different embedded use-case.
You can find that stuff here: https://github.com/Hypfer/valetudo-misc
If you're missing a tool there please let me know
Other news
As mentioned in the previous release notes, we're currently still pretty busy figuring out how to root new robots and/or firmware versions.
Since that worked well in the past, I shall continue mentioning it here.
If you want to see Valetudo on more robots and/or like this release, you might want to consider donating if you haven't done so already:
https://github.com/sponsors/Hypfer
https://builder.dontvacuum.me/donations.txt
Autogenerated changelog
The autogenerated changelog generation has been updated to be even better and less of a hassle to use.
Enjoy
Breaking Changes
- timers: Updating timers should be a PUT instead of a POST
9c57f0c
Features
- updater: Add changelog to nightly update provider
3a874db
- mqtt: Deduplicate mqtt map data as well
269aa30
Fixes
- networkadvertisement: Bonjour service names need to be unique
956487e
- ui: Remove obsolete css statement
6793c67
- ui: Fix map SSE EventSource not reconnecting on error
d84efd5
- ui: fix circular chunk dependency
271e53c
- ui: Fix map not properly redrawing on visibility state change
bd77d2e
- utils: hash key instead of value (#1503)
bae09ab
- miio: Fix ERR_HTTP_HEADERS_SENT exception (#1501)
a47f3b9
- vendor.dreame: The STYTJO6ZHM does not feature a watertank
9b75974
- vendor.roborock: copy statusflag from previous state on state update (#1497)
84de0ef
Refactoring
- updater: Move type constant to update providers
5ca525e
- vendor.roborock: Improve logic legibility in ZoneCleaningCapability
560a50e
- ui: Port map color finder to typescript
6c1b126
- ui: Make use of webpack 5 and convert the map layer render webworker to typescript
d17b66d
- ui: Port map touch handling to typescript
9548012
- ui: Do not monkey patch the 2d context of the map renderer
212e4f5
- ui: Remove unnecessary nullchecks in the map component
96ba8cf
- vendor.dreame: Improve mop dock settings handling
412a65a
- miio: Unify previously duplicated map poll code
356d144
Chores
- release: 2022.06.0
3504a4a
- Fix nightly changelog generation
2c73de3
- Minor misc code cleanups
3c3c561
- More dependency changes
0becd44
- Delete obsolete Events.js
5176cce
- Bump dependencies
8ae420c
- bump GitHub codeql action to v2
643dcc5
- vendor.dreame: Add documentation on the mop dock settings data format
881f717
- typo fix
41055d1