Eufy RoboVac C30 Robot Vacuum
Eufy RoboVac C30 Robot Vacuum

Available from:


Install method:

GPIO #Component
GPIO00 None
GPIO01 None
GPIO02 None
GPIO03 None
GPIO04 None
GPIO05 None
GPIO09 None
GPIO10 None
GPIO12 None
GPIO13 Tuya Rx
GPIO14 None
GPIO15 Tuya Tx
GPIO16 None
GPIO17 None
{"NAME":"Eufy Robovac","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 11,2 | TuyaMCU 12,101 | TuyaMCU 13,103"}
Tuya-Convert might not be possible for this device since the template was added (2021-07-27). All new Tuya devices have firmware preventing flash but it is still possible to Tuya-Convert old stock devices without connecting them to the Tuya app.

Had to use AP config mode to provision the wifi first, then used standard tuya-convert process.

To use tuya-convert with AP mode:

  1. put the device in AP pairing mode
  2. connect with a linux computer
  3. fake the config packet:
    echo 000055aa00000000000000010000003e7b2273736964223a227674727573742d666c617368222c22706173737764223a22222c22746f6b656e223a223030303030303030227d726cfc610000aa55 | xxd -ps -r | socat - UDP-DATAGRAM:,broadcast
  4. run tuya-convert and press enter, it is already paired
  5. flash it!

After flashing, I used the following MCU config:

Backlog TuyaMCU 11,2; TuyaMCU 12,101; TuyaMCU 13,103;

This maps start/stop to POWER1, go home to POWER2, and find to POWER3.

Manual control can be performed on dpId 3, enum 0-3, ie: tuyasend4 3,{0-3}

Operating mode is on dpId 5, enum 0-4.

Fan speed is on dpId 102, enum 0-3.

And added rules for easy access to feedback data:

rule1 on tuyareceived#dptype4id5 do publish2 stat/%topic%/mode %value% endon on tuyareceived#dptype4id15 do publish2 stat/%topic%/status %value% endon on tuyareceived#dptype4id102 do publish2 stat/%topic%/speed %value% endon on tuyareceived#dptype2id104 do publish2 stat/%topic%/battery %value% endon on tuyareceived#dptype4id106 do publish2 stat/%topic%/error %value% endon

This will expose operating mode, operating status, fan speed, battery level, and error code under stat/devicename/{mode,status,speed,battery,error}.

I also exposed whether it is charging or not with:

rule2 on tuyareceived#dptype4id15==3 do publish2 stat/%topic%/charging 1 break on tuyareceived#dptype4id15==4 do publish2 stat/%topic%/charging 1 break on tuyareceived#dptype4id15 do publish2 stat/%topic%/charging 0 endon

You can then read charging state on stat/devicename/charging.