Skip to content

Releases: Hypfer/Valetudo

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

Valetudo 2023.03.0

23 Mar 18:51
Compare
Choose a tag to compare
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.

image

If you zoom in enough, they will also show a label with additional information (if available).

image

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.

image

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.

image

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

  1. 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.

  2. This release of Valetudo can now properly handle multiple comma-separated errors reported by some Dreame firmwares.

  3. 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

image

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

  • release: 2023.03.0 fc6b905
  • Un-bump backend axios version b4c9e32
  • Bump dependencies 979a8b6
  • vendor.dreame: Remove old logger calls used for early reverse engineering e2a8833
  • Remove config migration code d0172f1
  • Minor cleanup d8d7f82
  • Cleanup 30f629e
  • Viomi voicepack checksums do matter 87eb6af

Valetudo 2023.02.0

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

image

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.

image

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.

image

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.

image

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.

image

image

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.

image

Misc

  1. The Live Map now remembers the previously selected mode in the browser's local storage.

  2. 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.

  3. 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

  • release: 2023.02.0 6b01ed5
  • Update actions to fix github workflow deprecation warnings d4a7ae3
  • Formatting bebf0a4
  • Remove config migration code 50a15a0
  • Delete obsolete deployment instructions beee8b1

Valetudo 2023.01.0

06 Jan 21:09
Compare
Choose a tag to compare
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

image

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.

image

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.

image

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.

image

Also, Icons in the menu have been updated for consistency and easier understanding.

image

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.

image

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

image

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

image

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...
Read more

Valetudo 2022.11.0

30 Oct 13:20
Compare
Choose a tag to compare
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

  • ui: Reduce code duplication 23c5024
  • Replace deprecated Buffer.slice with Buffer.subarray 88db3be

Chores

  • release: 2022.11.0 61aa741
  • Minor cleanup 5f13e8f
  • Minor cleanup 1a614e9
  • build: More heap for regular armv7 08ec8b7
  • vendor.dreame: Add test case map with left cutoff by firmware 040d4fb
  • ui: 75% battery should not be displayed in a warning color a5e1bc2

Valetudo 2022.10.0

17 Oct 18:17
Compare
Choose a tag to compare
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 :)

image

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.

image

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.

image

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.

image

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

  • vendor.dreame: Fix generational differences in operation mode mapping 8b6643c
  • vendor.dreame: 1C error codes might occasionally be numbers 93fdfb9
  • Hide non-functional Wi-Fi configuration editor if not supported fbcfd47
  • vendor.dreame: Handle c...
Read more

Valetudo 2022.09.0

02 Sep 21:43
Compare
Choose a tag to compare
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

  • release: 2022.09.0 8e3c889
  • remove body-parser in favor of built-in feature (#1568) 4ee0004
  • Misc promise handling cleanup 278ba6e
  • Remove obsolete code + comments [7de1590](http:...
Read more

Valetudo 2022.08.0

02 Aug 19:20
Compare
Choose a tag to compare
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

Valetudo 2022.06.0

13 Jun 18:16
Compare
Choose a tag to compare
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