Kategorien
home automation

cloud-less vaccum cleaner

I own a robot vaccum cleaner from eufy (RoboVac 30C), but what i hate are chinese cloud applications. So one of the first steps of the cleaner was on my table. In parts.

Vaccum bot in parts

The main controller of the bot is a STM microcontroller with sensorcontroller, motor controller, … The interessting part is the 4-wire cable to the ‚TYWE1S‘ WiFi Modul. This module, based on the ESP8266 microcontroller, is tasmota capable. And fortunatly all pins are labeled. So at first, i soldered a ribbon cable to all interessting pins and place the connector in the battery box. You can see the grey ribbon cable and the connector on the pictures above and below also.

WIFI Module with soldered ribbon cable
All pins are labeled!
debugging connector in the battery box

I debugged a while with the original app and firmware and map the following commands at 115200 Baud:

ESP commands to the STM (And corresponding Tasmota TuyaMCU commands, if available):

55 AA 00 00 00 00 FF -> Heartbeat

55 AA 00 1C 00 08 01 14 01 03 0E 1E 0F 05 7C 
--> Time and Date, Example:
55 AA 00 1C 00 08 01 14  01  03  0E  1E  0F  05   7C
Preamble........... 020 001 003 014 035 015 005 Chksum
->	              20/01/03    14:35:15 Friday

55 AA 00 06 00 05 05 04 00 01 00 14 
-> Auto -> TuyaSend4 5,0 

55 AA 00 06 00 05 05 04 00 01 01 15 
-> 30 min -> TuyaSend4 5,1

55 AA 00 06 00 05 05 04 00 01 02 16 
-> Spot -> TuyaSend4 5,2

55 AA 00 06 00 05 05 04 00 01 03 17 
-> Edges-> TuyaSend4 5,3

55 AA 00 06 00 05 02 01 00 01 00 0E 
-> Stop -> TuyaSend1 2,0
-> Start -> TuyaSend1 2,1 

55 AA 00 06 00 05 65 01 00 01 01 72 
-> Home -> TuyaSend1 101,1

55 AA 00 06 00 05 67 01 00 01 01 74 
-> Find Start -> TuyaSend1 103,1

55 AA 00 06 00 05 67 01 00 01 00 73 
-> Find Stop -> TuyaSend1 103,0

55 AA 00 06 00 05 03 04 00 01 00 12 
-> Forward-> TuyaSend4 3,0

55 AA 00 06 00 05 03 04 00 01 01 13 
-> Backward-> TuyaSend4 3,1

55 AA 00 06 00 05 03 04 00 01 02 14 
-> to the left -> TuyaSend4 3,2

55 AA 00 06 00 05 03 04 00 01 03 15 
-> to the right -> TuyaSend4 3,3

If the robot is controlled with the ir-remote, the stm sends the following commands to the WIFI module:

55 AA 03 00 00 01 01 04 
-> Heartbeat, every 15 sec

55 AA 03 1C 00 00 1E 
-> Heartbeat #2, every 4 heartbeat ( =60sec ) 
-> actual time is requested

55 AA 03 07 00 05 02 01 00 01 01 13 
55 AA 03 07 00 05 0F 04 00 01 00 22 
55 AA 03 07 00 05 05 04 00 01 00 18 
-> Start (last Program)

55 AA 03 07 00 05 02 01 00 01 01 13 
55 AA 03 07 00 05 0F 04 00 01 00 22 
55 AA 03 07 00 05 05 04 00 01 00 18 
55 AA 03 07 00 05 66 04 00 01 01 7A 
-> Start (Auto)

55 AA 03 07 00 05 02 01 00 01 01 13 
55 AA 03 07 00 05 0F 04 00 01 00 22 
55 AA 03 07 00 05 05 04 00 01 01 19 
55 AA 03 07 00 05 66 04 00 01 01 7A 
-> Start (30 min)

55 AA 03 07 00 05 02 01 00 01 01 13 
55 AA 03 07 00 05 0F 04 00 01 00 22 
55 AA 03 07 00 05 05 04 00 01 02 1A 
55 AA 03 07 00 05 66 04 00 01 02 7B 
-> Start (Spot)

55 AA 03 07 00 05 02 01 00 01 01 13 
55 AA 03 07 00 05 0F 04 00 01 00 22 
55 AA 03 07 00 05 05 04 00 01 03 1B 
55 AA 03 07 00 05 66 04 00 01 02 7B 
-> Start (Edges)

55 AA 03 07 00 05 02 01 00 01 00 12 
55 AA 03 07 00 05 0F 04 00 01 01 23 
55 AA 03 07 00 05 05 04 00 01 04 1C 
-> Stop

55 AA 03 07 00 05 65 01 00 01 01 76 
55 AA 03 07 00 05 0F 04 00 01 05 27 
-> Home

55 AA 03 07 00 05 65 01 00 01 00 75 
55 AA 03 07 00 05 0F 04 00 01 01 23 
-> Home interrupted

55 AA 03 07 00 05 65 01 00 01 00 75 
55 AA 03 07 00 05 0F 04 00 01 03 25 
-> Home successful

55 AA 03 07 00 05 0F 04 00 01 02 24
55 AA 03 07 00 05 0F 04 00 01 01 23 
-> ?

55 AA 03 07 00 08 68 02 00 04 00 00 00 5B DA
-> Battery percentage -> 5B = 91%

How can I now control the robot via WIFI and my Domoticz installation without the Tuya cloud?

I have started flashing Tasmota to the WIFI module. Unfortunately tasmota only supports Tuya devices with 9600 baud. So i need a custom tasmota build for the bot. In the tuyamcu code (xdrv_16_tuyamcu.ino) i set the baudrate to 115200 (i probably will fix this problem with a new command, because i want one build for all my devices…) :

// In function TuyaInit:
...
//if (TuyaSerial->begin(9600)) { // comment out this line
if (TuyaSerial->begin(115200)) { // add this line
...

Another problem is the battery percentage value of the bot, there i have two options: change the tasmota code or recalculate the percentage in domoticz. I choose the first option and changed the following line (because i map the battery percentage later to the active_power value with the tuyamcu command):

// In function TuyaProcessStatePacket
...
//Energy.active_power[0] = (float)packetValue / 10;
Energy.active_power[0] = (float)packetValue; // my line
...

After the code changes i build the firmware and flash the controller. Here are my tasmota settings:

Tasmota device settings
Tasmota domoticz parameter

In the console the following commands are executed to map from fnId to dpId:

CMD: TuyaMCU 11,2
-> Map 'Relay1' (fnId 11) to dpId 2 (Start/Stop)

TuyaMCU 31,104
-> Map 'Power' (fnId 31) to dpId 104 (Battery Percentage)

In domoticz a simple switch device control the bot now, the ‚action when off ‚ is for homing the bot when you ’switch off‘:

Domoticz switch definition

For the battery percentage i add a ‚general, percentage‘ device:

Domoticz battery percentage

And finally i can control the robot without any cloud with my smartphone and the domoticz app, even when i’m not at home (via OpenVPN).

reassembled vacuum cleaner

2 Antworten auf „cloud-less vaccum cleaner“

Hi,

I have a 25C Eufy and it has same Tuya module as yours. Do you have detailed steps on how to flash it while on MCU board (put it in flash mode) and is your code available on github?

regards

Hello Jean-Philippd,
you no longer need to change the code, there is now an option:
„SetOption97 – Set Baud rate for TuyaMCU serial communication (0 = 9600 or 1 = 115200)“

Please disconnect the mainboard before flashing the wifi module manually!

To flash the module you can use tuya-convert or an usb-serial converter. To flash manually i use the esptool software tool. At first i connect the serial data lines RX/TX to the corresponding pins of the usb-serial converter. Then i connect GPIO0 to ground. At last i connect the power supply pins ground and 3.3V (!! Not 5V !!). After that i start the esptool and flash tasmota to the module.

There are also some manuals in the tasmota docs:
https://tasmota.github.io/docs/TuyaMCU-Devices/

Best regards,
Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.