ILIFE V3S/V5S robot vacuum

This Robot vacuum is also known as Medion MD 18500.
It’s a pretty cheap and simple robot vacuum, and you can only control it with an IR remote control.

I was bored and looking for a soldering project, and found this:

This repository describes how to connect an ESP-device like a Wemos D1 to your ILIFE robot, which will allow you to control it with a web-frontend and by MQTT. And thus also allows us to have Homey interact with it!

The pictures on the repository are a bit unclear at times, but the build is pretty straightforward. I translated the mainboard pictures and description to a schematic. Don’t shoot me, it’s the first time I’ve made a graphic like this. This is how I’ve connected all my wires on my device. I am not fully certain about the way the battery and dock wires are connected, any feedback is welcome.

(According to the original dev, it’s like this:

  • (yellow heat shrink) 10 kOhm between G and D0 → 100 kOhm between D0 and DOCK+ (red)
  • (blue heat shrink) 10 kOhm between G and A0 → 100 kOhm between A0 and BAT+ (red)

See GitHub - ksya/ILIFERobot: Add WiFi capabilities to the ILIFE V5s using a NodeMCU or other ESP module. for the original pictures and wiring description.
I used info from GitHub - kbickham/iLife_Robotic_Vaccum_v3s_Reverse_Engineer: Project to reverse engineer the iLife v3s robotic vaccum. Trying to rewrite the firmware and use as a robotic platform and add a robotic arm. as well :slight_smile:

Once you’re done with all the wiring, it’s a matter of flashing the software to the ESP device. Here, I used the updated repository by Blakadder: GitHub - blakadder/ILIFERobot: Add WiFi capabilities to the ILIFE V5s using a NodeMCU or other ESP module.

Now I have a web-frontend, which looks neatly like the original remote:

I have created a Virtual Device (Virtuele Apparaten App voor Homey | Homey) of the type ‘vacuum cleaner’.

I’ve made a couple of flows that use the MQTT Client (MQTT Client App voor Homey | Homey ) which are listening for messages on MQTT topic ilife-vacuum/fan_speed and status, to update the virtual device status.

I also made some flows that are “if status of virtual device is changed to”, which will lead to sending a MQTT message. For instance: “robot:spot” to ilife-vacuum/command, when the status is changed to spot cleaning. Other commands: robot:home, robot:start, robot:stop. robot:edge.

All in all, it works. I need to do some work to do some more accurate status monitoring of the device, and at times it just cand find his home base anymore… but it got a bit smarter than before!

Some screenshots from the vacuum cleaner inside Homey:

Some of the flows:

And bonus picture of the vacuum cleaner on my desk, while it’s getting smarter: