Closed panoslouk closed 3 years ago
Please also post your valetudo.conf.
Thanks for the replay! here is my config file.
{
"embedded": true,
"robot": {
"implementation": "auto",
"implementationSpecificConfig": {
"ip": "127.0.0.1"
}
},
"webserver": {
"port": 80,
"basicAuth": {
"enabled": false,
"username": "valetudo",
"password": "valetudo"
}
},
"zonePresets": {},
"goToLocationPresets": {},
"mqtt": {
"enabled": false,
"server": "",
"port": "1883",
"clientId": "",
"username": "",
"password": "",
"usetls": false,
"ca": "",
"clientCert": "",
"clientKey": "",
"qos": 0,
"identifier": "robot",
"topicPrefix": "valetudo",
"autoconfPrefix": "homeassistant",
"provideMapData": true,
"base64EncodeMapData": true
},
"allowSSHKeyUpload": true,
"logLevel": "trace",
"debug": {
"memoryStatInterval": false,
"enableRawCommandCapability": false
}
}
Looks like a port mismatch: config says 80, but iptables says 8080 see also https://valetudo.cloud/pages/installation/viomi.html
Actually i changed the port to 8080 and i got the same issue. After that i changed the port in iptables to 80 from 8080 and the port in config file from 8080 to 80 and i got the same issue again.
I found out that the data response from miio (??) cannot be mapped to the STATE_PROPERTIES object. After a few changes within ViomiValetudoRobot.js files i made it to work.
Since i don't have big knowledge of nodejs, im not sure if what i did is right. I thought that is good to mention what i did to solve the problem
What changes exactly?
ViomiValetudoRobot.js
I have exactly the same issue with a viomi v7. My debug log looks very much like above. I'm very much interested in the fix. If I can provide debug logs, please let me know what (and how).
[2020-09-26T18:42:27.208Z] [INFO] Dummycloud is spoofing 203.0.113.1:8053 on 127.0.0.1:8053
[2020-09-26T18:42:27.211Z] [INFO] Webserver running on port 80
[2020-09-26T18:42:27.225Z] [INFO] Map Upload Server running on port 8087
[2020-09-26T18:42:27.230Z] [DEBUG] >>> local: HandshakePacket()
[2020-09-26T18:42:27.241Z] [DEBUG] <<< local* {"stamp":1601145748}
[2020-09-26T18:42:27.242Z] [DEBUG] >>> local* {"stamp":1601145748}
[2020-09-26T18:42:27.244Z] [DEBUG] <<= local: handshake complete
[2020-09-26T18:42:27.247Z] [DEBUG] <<< local* {"stamp":1601145748}
[2020-09-26T18:42:27.248Z] [DEBUG] local: Discarding pong
[2020-09-26T18:42:27.250Z] [DEBUG] <<< local* {"stamp":1601145748}
[2020-09-26T18:42:27.251Z] [DEBUG] local: Discarding pong
[2020-09-26T18:42:27.682Z] [INFO] Connected successfully to mqtt server
[2020-09-26T18:42:27.750Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":2}
[2020-09-26T18:42:28.241Z] [DEBUG] local request 1 get_prop timed out
[2020-09-26T18:42:28.251Z] [DEBUG] local request 2 get_consumable timed out
[2020-09-26T18:42:28.255Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":2004}
[2020-09-26T18:42:28.747Z] [DEBUG] local request 1003 get_prop timed out
[2020-09-26T18:42:28.755Z] [DEBUG] local request 2004 get_consumable timed out
[2020-09-26T18:42:28.759Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":4006}
[2020-09-26T18:42:28.782Z] [DEBUG] <<< local: {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":1}
[2020-09-26T18:42:28.783Z] [INFO] << local: ignoring response for non-pending request {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":1}
[2020-09-26T18:42:29.250Z] [DEBUG] local request 3005 get_prop timed out
[2020-09-26T18:42:29.259Z] [DEBUG] local request 4006 get_consumable timed out
[2020-09-26T18:42:29.262Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":6008}
[2020-09-26T18:42:29.751Z] [DEBUG] local request 5007 get_prop timed out
[2020-09-26T18:42:29.763Z] [DEBUG] local request 6008 get_consumable timed out
[2020-09-26T18:42:29.769Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":8010}
[2020-09-26T18:42:30.254Z] [DEBUG] local request 7009 get_prop timed out
[2020-09-26T18:42:30.270Z] [DEBUG] local request 8010 get_consumable timed out
[2020-09-26T18:42:30.273Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":10012}
[2020-09-26T18:42:30.287Z] [DEBUG] <<< local: {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":5007}
[2020-09-26T18:42:30.288Z] [INFO] << local: ignoring response for non-pending request {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":5007}
[2020-09-26T18:42:30.757Z] [DEBUG] local request 9011 get_prop timed out
[2020-09-26T18:42:30.774Z] [DEBUG] local request 10012 get_consumable timed out
[2020-09-26T18:42:30.781Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":12014}
[2020-09-26T18:42:31.265Z] [DEBUG] local request 11013 get_prop timed out
[2020-09-26T18:42:31.280Z] [DEBUG] local request 12014 get_consumable timed out
[2020-09-26T18:42:31.283Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":14016}
[2020-09-26T18:42:31.769Z] [DEBUG] local request 13015 get_prop timed out
[2020-09-26T18:42:31.784Z] [DEBUG] local request 14016 get_consumable timed out
[2020-09-26T18:42:31.787Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":16018}
[2020-09-26T18:42:31.807Z] [DEBUG] <<< local: {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":11013}
[2020-09-26T18:42:31.808Z] [INFO] << local: ignoring response for non-pending request {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":11013}
[2020-09-26T18:42:32.271Z] [DEBUG] local request 15017 get_prop timed out
[2020-09-26T18:42:32.291Z] [DEBUG] local request 16018 get_consumable timed out
[2020-09-26T18:42:32.301Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":18020}
[2020-09-26T18:42:32.784Z] [DEBUG] local request 17019 get_prop timed out
[2020-09-26T18:42:32.788Z] [WARN] Token is okay, however we're unable to reach the vacuum {
retries: 10,
method: 'get_prop',
args: [
'run_state', 'mode',
'err_state', 'battary_life',
'box_type', 'mop_type',
's_time', 's_area',
'suction_grade', 'water_grade',
'remember_map', 'has_map',
'is_mop', 'has_newmap'
]
}
[2020-09-26T18:42:32.819Z] [DEBUG] >>> local: HandshakePacket()
[2020-09-26T18:42:32.821Z] [DEBUG] local request 18020 get_consumable timed out
[2020-09-26T18:42:32.823Z] [WARN] Token is okay, however we're unable to reach the vacuum { retries: 10, method: 'get_consumable', args: [] }
[2020-09-26T18:42:32.826Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":19021}
[2020-09-26T18:42:32.828Z] [DEBUG] <<< local* {"stamp":1601145753}
[2020-09-26T18:42:32.829Z] [DEBUG] >>> local* {"stamp":1601145753}
[2020-09-26T18:42:32.830Z] [DEBUG] <<= local: handshake complete
[2020-09-26T18:42:32.840Z] [DEBUG] <<< local* {"stamp":1601145753}
[2020-09-26T18:42:32.840Z] [DEBUG] local: Discarding pong
[2020-09-26T18:42:33.330Z] [DEBUG] local request 19021 get_consumable timed out
[2020-09-26T18:42:33.333Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":21023}
[2020-09-26T18:42:33.336Z] [DEBUG] <<< local: {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":17019}
[2020-09-26T18:42:33.337Z] [INFO] << local: ignoring response for non-pending request {"result":[5,0,2105,100,3,1,0,0,1,12,1,0,1,0],"id":17019}
[2020-09-26T18:42:33.623Z] [DEBUG] local request 20022 get_prop timed out
[2020-09-26T18:42:33.835Z] [DEBUG] local request 21023 get_consumable timed out
[2020-09-26T18:42:33.837Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":23025}
[2020-09-26T18:42:34.127Z] [DEBUG] local request 22024 get_prop timed out
[2020-09-26T18:42:34.338Z] [DEBUG] local request 23025 get_consumable timed out
[2020-09-26T18:42:34.341Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":25027}
[2020-09-26T18:42:34.630Z] [DEBUG] local request 24026 get_prop timed out
[2020-09-26T18:42:34.840Z] [DEBUG] local request 25027 get_consumable timed out
[2020-09-26T18:42:34.843Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":27029}
[2020-09-26T18:42:35.343Z] [DEBUG] local request 27029 get_consumable timed out
[2020-09-26T18:42:35.351Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":28030}
[2020-09-26T18:42:35.856Z] [DEBUG] local request 28030 get_consumable timed out
[2020-09-26T18:42:35.859Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":29031}
[2020-09-26T18:42:36.361Z] [DEBUG] local request 29031 get_consumable timed out
[2020-09-26T18:42:36.363Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":30032}
[2020-09-26T18:42:36.865Z] [DEBUG] local request 30032 get_consumable timed out
[2020-09-26T18:42:36.868Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":31033}
[2020-09-26T18:42:37.369Z] [DEBUG] local request 31033 get_consumable timed out
[2020-09-26T18:42:37.372Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":32034}
[2020-09-26T18:42:37.874Z] [DEBUG] local request 32034 get_consumable timed out
[2020-09-26T18:42:37.880Z] [WARN] Token is okay, however we're unable to reach the vacuum { retries: 20, method: 'get_consumable', args: [] }
[2020-09-26T18:42:37.884Z] [DEBUG] >>> local: HandshakePacket()
[2020-09-26T18:42:37.894Z] [DEBUG] <<< local* {"stamp":1601145758}
[2020-09-26T18:42:37.899Z] [DEBUG] >>> local* {"stamp":1601145758}
[2020-09-26T18:42:37.902Z] [DEBUG] <<= local: handshake complete
[2020-09-26T18:42:37.908Z] [DEBUG] <<< local* {"stamp":1601145758}
[2020-09-26T18:42:37.909Z] [DEBUG] local: Discarding pong
[2020-09-26T18:42:38.192Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":33035}
[2020-09-26T18:42:38.698Z] [DEBUG] local request 33035 get_consumable timed out
[2020-09-26T18:42:38.701Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":34036}
[2020-09-26T18:42:39.203Z] [DEBUG] local request 34036 get_consumable timed out
[2020-09-26T18:42:39.208Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":35037}
[2020-09-26T18:42:39.709Z] [DEBUG] local request 35037 get_consumable timed out
[2020-09-26T18:42:39.712Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":36038}
[2020-09-26T18:42:39.901Z] [DEBUG] <<< cloud* {"stamp":0}
[2020-09-26T18:42:39.902Z] [DEBUG] ^-- initial timesync packet
[2020-09-26T18:42:39.903Z] [DEBUG] >>> Responding to timesync request
[2020-09-26T18:42:39.905Z] [INFO] Cloud connected
Hi there
i have changed the pollState() function to
async pollState() {
const response = await this.sendCommand("get_prop", STATE_PROPERTIES);
if (response) {
this.parseAndUpdateState(response);
}
return this.state;
}
and i added to the begging of the function parseAndUpdateState and after the let newStateAttr; the following
data["run_state"] = data[0];
data["mode"] = data[1];
data["err_state"] = data[2];
data["battary_life"] = data[3];
data["box_type"] = data[4];
data["mop_type"] = data[5];
data["s_time"] = data[6];
data["s_area"] = data[7];
data["suction_grade"] = data[8];
data["water_grade"] = data[9];
data["remember_map"] = data[10];
data["has_map"] = data[11];
data["is_mop"] = data[12];
data["has_newmap"] = data[13];
After those changes UI started to receive the stats from the vacuum. I'm saying again, i m not sure about those changes. Seems that this isn't the way that the code doing the mapping of the data but its a quick fix until i have a better view of the code.
Same problem for me and also seems no maps generate. I am also running: Vacuum Model Viomi.v8 - STYTJ02YM Valetudo Version 2021.01.0b0
I have not tried workaround changes by panoslouk from above.
From my logs:
<27>Jan 2 05:09:17 valetudo[934]: [1970-01-01T21:09:17.672Z] [WARN] Token is okay, however we're unable to reach the vacuum { <27>Jan 2 05:09:17 valetudo[934]: retries: 10, <27>Jan 2 05:09:17 valetudo[934]: method: 'get_prop', <27>Jan 2 05:09:17 valetudo[934]: args: [ <27>Jan 2 05:09:17 valetudo[934]: 'run_state', 'mode', <27>Jan 2 05:09:17 valetudo[934]: 'err_state', 'battary_life', <27>Jan 2 05:09:17 valetudo[934]: 'box_type', 'mop_type', <27>Jan 2 05:09:17 valetudo[934]: 's_time', 's_area', <27>Jan 2 05:09:17 valetudo[934]: 'suction_grade', 'water_grade', <27>Jan 2 05:09:17 valetudo[934]: 'remember_map', 'has_map', <27>Jan 2 05:09:17 valetudo[934]: 'is_mop', 'has_newmap' <27>Jan 2 05:09:17 valetudo[934]: ] <27>Jan 2 05:09:17 valetudo[934]: } My nats: root@TinaLinux:/mnt/UDISK# iptables -L -n -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 203.0.113.1 tcp dpt:80 to:127.0.0.1:80 DNAT udp -- 0.0.0.0/0 203.0.113.1 udp dpt:8053 to:127.0.0.1:8053 DNAT tcp -- 0.0.0.0/0 203.0.113.5 tcp dpt:80 to:127.0.0.1:80 DNAT udp -- 0.0.0.0/0 203.0.113.5 udp dpt:8053 to:127.0.0.1:8053 My config: root@TinaLinux:/mnt/UDISK# cat valetudo_config.json { "embedded": true, "robot": { "implementation": "auto", "implementationSpecificConfig": { "ip": "127.0.0.1" } }, "webserver": { "port": 80, "basicAuth": { "enabled": false, "username": "valetudo", "password": "valetudo" } }, "zonePresets": {}, "goToLocationPresets": {}, "mqtt": { "enabled": false, "server": "foobar.example", "port": 1883, "clientId": "", "username": "user", "password": "pass", "usetls": false, "ca": "", "clientCert": "", "clientKey": "", "qos": 0, "identifier": "robot", "topicPrefix": "valetudo", "autoconfPrefix": "homeassistant", "provideMapData": true, "base64EncodeMapData": true }, "allowSSHKeyUpload": true, "logLevel": "debug", "debug": { "memoryStatInterval": false, "enableRawCommandCapability": false }, "map_upload_host": "http://127.0.0.1" Host file entries; 203.0.113.1 ot.io.mi.com ott.io.mi.com 203.0.113.1 de.ot.io.mi.com de.ott.io.mi.com 203.0.113.1 ea.ot.io.mi.com ea.ott.io.mi.com 203.0.113.1 in.ot.io.mi.com in.ott.io.mi.com 203.0.113.1 pv.ot.io.mi.com pv.ott.io.mi.com 203.0.113.1 ru.ot.io.mi.com ru.ott.io.mi.com 203.0.113.1 sg.ot.io.mi.com sg.ott.io.mi.com 203.0.113.1 st.ot.io.mi.com st.ott.io.mi.com 203.0.113.1 tw.ot.io.mi.com tw.ott.io.mi.com 203.0.113.1 us.ot.io.mi.com us.ott.io.mi.comI have the same vacuum robot, you must change the port in /etc/rc.d/S51valetudo from 80 to 8080. After that change the webserver port in config file to 8080 to receive map data.
I have the same vacuum robot, you must change the port in /etc/rc.d/S51valetudo from 80 to 8080. After that change the webserver port in config file to 8080 to receive map data.
Thanks panoslouk I will give this a try and do another full clean to see if the map appears. On another note: Where exactly do I find the ViomiValetudoRobot.js to try out your changes? Or do I have to edit locally and rebuild?
Download the pre-release from here https://github.com/Hypfer/Valetudo/archive/2021.01.0b0.zip Unzip that file and do run npm install inside valetudo folder just to Install dependencies, then change the /lib/robots/viomi/ViomiValetudoRobot.js file and run npm run build to generate a new valetudo binary file and transfer that file to your vacuum.
More details and instructions you will find here https://valetudo.cloud/pages/development/building-and-modifying-valetudo.html
Download the pre-release from here https://github.com/Hypfer/Valetudo/archive/2021.01.0b0.zip Unzip that file and do run npm install inside valetudo folder just to Install dependencies, then change the /lib/robots/viomi/ViomiValetudoRobot.js file and run npm run build to generate a new valetudo binary file and transfer that file to your vacuum.
More details and instructions you will find here https://valetudo.cloud/pages/development/building-and-modifying-valetudo.html
Thanks for this. I can confirm everything looks good now. I just need to get the map after a full clean.
Please share a trace level log with this modification
Please share a trace level log with this modification
See my trace log output below. Let me know if you want any other info.
< truncated >
@v0d0r It was missing the part with a successful get_prop command. The full raw request & reply is what I'm looking for
<30>Jan 2 14:27:13 valetudo[1025]: [1970-01-02T06:27:13.519Z] [TRACE] Trying to read token file at /etc/miio/device.token <27>Jan 2 14:27:13 valetudo[1025]: [1970-01-02T06:27:13.521Z] [WARN] Token is okay, however we're unable to reach the vacuum { <27>Jan 2 14:27:13 valetudo[1025]: retries: 10, <27>Jan 2 14:27:13 valetudo[1025]: method: 'get_prop', <27>Jan 2 14:27:13 valetudo[1025]: args: [ <27>Jan 2 14:27:13 valetudo[1025]: 'run_state', 'mode', <27>Jan 2 14:27:13 valetudo[1025]: 'err_state', 'battary_life', <27>Jan 2 14:27:13 valetudo[1025]: 'box_type', 'mop_type', <27>Jan 2 14:27:13 valetudo[1025]: 's_time', 's_area', <27>Jan 2 14:27:13 valetudo[1025]: 'suction_grade', 'water_grade', <27>Jan 2 14:27:13 valetudo[1025]: 'remember_map', 'has_map', <27>Jan 2 14:27:13 valetudo[1025]: 'is_mop', 'has_newmap' <27>Jan 2 14:27:13 valetudo[1025]: ] <27>Jan 2 14:27:13 valetudo[1025]: } <30>Jan 2 14:27:13 valetudo[1025]: [1970-01-02T06:27:13.528Z] [DEBUG] >>> local: HandshakePacket() <30>Jan 2 14:27:13 valetudo[1025]: [1970-01-02T06:27:13.830Z] [DEBUG] >>> local: HandshakePacket() <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.132Z] [DEBUG] >>> local: HandshakePacket() <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.435Z] [DEBUG] >>> local: HandshakePacket() <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.654Z] [DEBUG] <<< local* {"stamp":1191} <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.657Z] [DEBUG] >>> local* {"stamp":1191} <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.661Z] [DEBUG] <<= local: handshake complete <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.669Z] [DEBUG] <<< local* {"stamp":1191} <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.671Z] [DEBUG] local: Discarding pong <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.678Z] [DEBUG] <<< local* {"stamp":1191} <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.680Z] [DEBUG] local: Discarding pong <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.683Z] [DEBUG] <<< local* {"stamp":1191} <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.684Z] [DEBUG] local: Discarding pong <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.686Z] [DEBUG] <<< local* {"stamp":1191} <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.686Z] [DEBUG] local: Discarding pong <30>Jan 2 14:27:14 valetudo[1025]: [1970-01-02T06:27:14.746Z] [TRACE] >>> local: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":10001}@v0d0r It was missing the part with a successful get_prop command. The full raw request & reply is what I'm looking for I copied the log to quick. This showed up a few seconds later.
For what its worth. My maps still did not work after changing to port 8080. However I never saw the following log entry ever:
<30>Jan 2 15:13:34 valetudo[1292]: [1970-01-02T07:13:34.920Z] [INFO] Cloud connected I then did a tcpdump and just excluded port 22. I then saw 2 new IP addresses. 15:05:10.991951 IP 110.43.0.85.80 > 192.168.128.21.46157: Flags [.], ack 195, win 948, length 0 15:05:11.420475 IP 110.43.0.83.80 > 192.168.128.21.51736: Flags [.], ack 195, win 948, length 0 I am not sure why these werenot caught by the host file. I added them to my /etc/rc.d/S51valetudo with the existing hosts as follows: for host in 203.0.113.1 203.0.113.5 110.43.0.85 110.43.0.83 ; do iptables now caters for these IP's Chain OUTPUT (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 203.0.113.1 tcp dpt:80 to:127.0.0.1:8080 DNAT udp -- 0.0.0.0/0 203.0.113.1 udp dpt:8053 to:127.0.0.1:8053 DNAT tcp -- 0.0.0.0/0 203.0.113.5 tcp dpt:80 to:127.0.0.1:8080 DNAT udp -- 0.0.0.0/0 203.0.113.5 udp dpt:8053 to:127.0.0.1:8053 DNAT tcp -- 0.0.0.0/0 110.43.0.85 tcp dpt:80 to:127.0.0.1:8080 DNAT udp -- 0.0.0.0/0 110.43.0.85 udp dpt:8053 to:127.0.0.1:8053 DNAT tcp -- 0.0.0.0/0 110.43.0.83 tcp dpt:80 to:127.0.0.1:8080 DNAT udp -- 0.0.0.0/0 110.43.0.83 udp dpt:8053 to:127.0.0.1:8053 And my MAP now shows after the cloud connect is in the log. ![image](https://user-images.githubusercontent.com/12825145/104950099-c0541800-59c8-11eb-8a80-a73a927d1430.png)not sure if that trace log will help you out but im posting here just for the record.
[2021-01-18T20:20:24.246Z] [TRACE] fpos:abb8b take 1@trailing <Buffer ff>
[2021-01-18T20:20:24.521Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:24.523Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:24.526Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":11}
[2021-01-18T20:20:24.554Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":11}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:24.653Z] [DEBUG] prop.run_state <<< cloud: {"method":"prop.run_state","params":[5]}
---------------------------->{"method":"prop.run_state","params":[5]}
[2021-01-18T20:20:24.713Z] [DEBUG] prop.box_type <<< cloud: {"method":"prop.box_type","params":[1]}
---------------------------->{"method":"prop.box_type","params":[1]}
[2021-01-18T20:20:24.715Z] [DEBUG] prop.mop_type <<< cloud: {"method":"prop.mop_type","params":[0]}
---------------------------->{"method":"prop.mop_type","params":[0]}
[2021-01-18T20:20:24.716Z] [DEBUG] prop.err_state <<< cloud: {"method":"prop.err_state","params":[2105]}
---------------------------->{"method":"prop.err_state","params":[2105]}
[2021-01-18T20:20:24.718Z] [DEBUG] prop.suction_grade <<< cloud: {"method":"prop.suction_grade","params":[3]}
---------------------------->{"method":"prop.suction_grade","params":[3]}
[2021-01-18T20:20:24.719Z] [DEBUG] prop.is_charge <<< cloud: {"method":"prop.is_charge","params":[0]}
---------------------------->{"method":"prop.is_charge","params":[0]}
[2021-01-18T20:20:24.721Z] [DEBUG] prop.is_work <<< cloud: {"method":"prop.is_work","params":[1]}
---------------------------->{"method":"prop.is_work","params":[1]}
[2021-01-18T20:20:25.015Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:25.016Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:25.017Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":12}
[2021-01-18T20:20:25.038Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":12}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:25.523Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:25.524Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:25.526Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":13}
[2021-01-18T20:20:25.543Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":13}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:26.019Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:26.020Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:26.021Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":14}
[2021-01-18T20:20:26.043Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":14}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:26.525Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:26.526Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:26.528Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":15}
[2021-01-18T20:20:26.536Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":15}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:27.021Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:27.022Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:27.023Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":16}
[2021-01-18T20:20:27.047Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":16}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:27.528Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:27.530Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:27.533Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":17}
[2021-01-18T20:20:27.564Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":17}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:28.023Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:28.024Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:28.025Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":18}
[2021-01-18T20:20:28.036Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":18}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:28.529Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:28.529Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:28.531Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":19}
[2021-01-18T20:20:28.545Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":19}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:29.024Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:29.024Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:29.026Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":20}
[2021-01-18T20:20:29.046Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":20}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:29.533Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:29.534Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:29.537Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":21}
[2021-01-18T20:20:29.559Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":21}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:30.027Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:30.028Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:30.030Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":22}
[2021-01-18T20:20:30.040Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":22}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:30.529Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:30.529Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:30.530Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":23}
[2021-01-18T20:20:30.542Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":23}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:30.654Z] [DEBUG] prop.run_state <<< cloud: {"method":"prop.run_state","params":[5]}
---------------------------->{"method":"prop.run_state","params":[5]}
[2021-01-18T20:20:30.697Z] [DEBUG] prop.box_type <<< cloud: {"method":"prop.box_type","params":[1]}
---------------------------->{"method":"prop.box_type","params":[1]}
[2021-01-18T20:20:30.699Z] [DEBUG] prop.mop_type <<< cloud: {"method":"prop.mop_type","params":[0]}
---------------------------->{"method":"prop.mop_type","params":[0]}
[2021-01-18T20:20:30.702Z] [DEBUG] prop.err_state <<< cloud: {"method":"prop.err_state","params":[2105]}
---------------------------->{"method":"prop.err_state","params":[2105]}
[2021-01-18T20:20:30.704Z] [DEBUG] prop.suction_grade <<< cloud: {"method":"prop.suction_grade","params":[3]}
---------------------------->{"method":"prop.suction_grade","params":[3]}
[2021-01-18T20:20:30.706Z] [DEBUG] prop.is_charge <<< cloud: {"method":"prop.is_charge","params":[0]}
---------------------------->{"method":"prop.is_charge","params":[0]}
[2021-01-18T20:20:30.708Z] [DEBUG] prop.is_work <<< cloud: {"method":"prop.is_work","params":[1]}
---------------------------->{"method":"prop.is_work","params":[1]}
[2021-01-18T20:20:31.029Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:31.030Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:31.032Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":24}
[2021-01-18T20:20:31.041Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":24}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:31.537Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:31.539Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:31.541Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":25}
[2021-01-18T20:20:31.553Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":25}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:32.045Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:32.045Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:32.047Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":26}
[2021-01-18T20:20:32.065Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":26}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:32.554Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:32.555Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:32.557Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":27}
[2021-01-18T20:20:32.574Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":27}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:33.050Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:33.051Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:33.052Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":28}
[2021-01-18T20:20:33.063Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":28}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:33.554Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:33.555Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:33.557Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":29}
[2021-01-18T20:20:33.571Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":29}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:34.050Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:34.051Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:34.052Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":30}
[2021-01-18T20:20:34.074Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":30}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:34.557Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:34.558Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:34.561Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":31}
[2021-01-18T20:20:34.581Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":31}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:35.052Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:35.053Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:35.054Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":32}
[2021-01-18T20:20:35.077Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":32}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:35.559Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:35.561Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:35.563Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":33}
[2021-01-18T20:20:35.591Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":33}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:36.054Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:36.054Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:36.056Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":34}
[2021-01-18T20:20:36.064Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":34}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:36.561Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:36.562Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:36.564Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":35}
[2021-01-18T20:20:36.578Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":35}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:37.057Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:37.058Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:37.059Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":36}
[2021-01-18T20:20:37.072Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":36}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:37.559Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:37.560Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:37.561Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":37}
[2021-01-18T20:20:37.573Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":37}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:38.062Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:38.062Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:38.063Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":38}
[2021-01-18T20:20:38.090Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":38}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:38.565Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:38.566Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:38.568Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":39}
[2021-01-18T20:20:38.580Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":39}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:39.062Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:39.062Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:39.063Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":40}
[2021-01-18T20:20:39.071Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":40}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
^C[2021-01-18T20:20:39.450Z] [INFO] Valetudo shutdown in progress...
[2021-01-18T20:20:39.453Z] [DEBUG] Webserver shutdown in progress...
[2021-01-18T20:20:39.569Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:39.569Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:39.571Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":41}
[2021-01-18T20:20:39.585Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":41}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:39.807Z] [DEBUG] null <<< cloud* {"stamp":1611001240}
[2021-01-18T20:20:39.808Z] [DEBUG] >>> cloud* {"stamp":1611001240}
^C[2021-01-18T20:20:40.049Z] [INFO] Valetudo shutdown in progress...
[2021-01-18T20:20:40.051Z] [DEBUG] Webserver shutdown in progress...
[2021-01-18T20:20:40.066Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:40.066Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:40.067Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":42}
[2021-01-18T20:20:40.077Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":42}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:40.565Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:40.565Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:40.566Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":43}
[2021-01-18T20:20:40.594Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":43}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
^C[2021-01-18T20:20:40.649Z] [INFO] Valetudo shutdown in progress...
[2021-01-18T20:20:40.650Z] [DEBUG] Webserver shutdown in progress...
[2021-01-18T20:20:41.065Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:41.065Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:41.067Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":44}
[2021-01-18T20:20:41.076Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":44}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
^C[2021-01-18T20:20:41.249Z] [INFO] Valetudo shutdown in progress...
[2021-01-18T20:20:41.251Z] [DEBUG] Webserver shutdown in progress...
[2021-01-18T20:20:41.566Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:41.567Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:41.568Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":45}
[2021-01-18T20:20:41.589Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":45}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
[2021-01-18T20:20:42.084Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T20:20:42.085Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T20:20:42.087Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":46}
[2021-01-18T20:20:42.098Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":46}
Start Mapping data: 5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1
run_state 5 mode 0 err_state 2105 battary_life 100 box_type 1 mop_type 0
s_time 26 s_area 20.04 suction_grade 3 water_grade 12 remember_map 1
has_map 1 is_mop 0 has_newmap 1
In the old code, the response array was mapped to the requested properties before then parsing it: https://github.com/Hypfer/Valetudo/blob/6db8b76bddfea636303d1169fa7441ac21a5deca/lib/devices/Viomi.js#L416-L423
which would provide a working Valetudo on the robots of the users in this issue since it looks like this:
>>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":46}
<<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":46}
In the current codebase there's no such thing happening https://github.com/Hypfer/Valetudo/blob/cd76abe952cda43fd260eda2b217aff677b98d29/lib/robots/viomi/ViomiValetudoRobot.js#L121-L129
which apparently also works on at least @depau's viomi?
Why is that? It's not the model since there are both v7 and v8 with the same issue in this thread. Is it the fw version?
If i understand correctly you mean that maybe the fw version of the vacuum was create that issue?
btw according to the old code i changed the pollstate() function. Now the parseAndUpdateState() function seems to work good.
async pollState() {
const response = await this.sendCommand("get_prop", STATE_PROPERTIES);
let statusDict = {};
STATE_PROPERTIES.forEach((key, index) => statusDict[key] = response[index]);
if (response) {
this.parseAndUpdateState(statusDict);
}
return this.state;
}
[2021-01-18T21:25:24.871Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":8}
[2021-01-18T21:25:24.916Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":8}
[2021-01-18T21:25:25.369Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T21:25:25.369Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T21:25:25.371Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":9}
[2021-01-18T21:25:25.382Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":9}
[2021-01-18T21:25:25.870Z] [DEBUG] Sending command using CLOUD: Method ->"get_prop" Paramsrun_state,mode,err_state,battary_life,box_type,mop_type,s_time,s_area,suction_grade,water_grade,remember_map,has_map,is_mop,has_newmap Options: [object Object]
[2021-01-18T21:25:25.871Z] [DEBUG] Received command {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"]}
[2021-01-18T21:25:25.873Z] [TRACE] >>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":10}
[2021-01-18T21:25:25.891Z] [DEBUG] get_prop <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":10}
Not to hijack this issue but out of interest @panoslouk does your Zones work at all? The only thing I get working in Zones is restricted areas. As this is my first time on Valentudo I am not sure if this is meant to work and/or if it work in previous releases. Another thing that also does not work for me is the setting of the vacuum from max,medium low etc. Curious to hear if yours are working or if its just an issue on my end.
No zones and fan speed doesn't work. :/ Maybe this issue have to do with pre-release version of valetudo. I'm waiting for the next stable version to try it out.
No zones and fan speed doesn't doesn't work. :/ Maybe this issue have to do with pre-release version of valetudo. I'm waiting for the next stable version to try it out.
Thanks for confirming. I will also wait and see how things pan out on the next release. For now I am super happy with the features working as is. Well done to the entire dev team.
I can also confirm that using the old code fixes the issue for me
Running fw 3.5.3_0047
In the old code, the response array was mapped to the requested properties before then parsing it:
which would provide a working Valetudo on the robots of the users in this issue since it looks like this:
>>> cloud: {"method":"get_prop","params":["run_state","mode","err_state","battary_life","box_type","mop_type","s_time","s_area","suction_grade","water_grade","remember_map","has_map","is_mop","has_newmap"],"id":46} <<< cloud: {"result":[5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1],"id":46}
In the current codebase there's no such thing happening
which apparently also works on at least @Depau's viomi?
Why is that? It's not the model since there are both v7 and v8 with the same issue in this thread. Is it the fw version?
Hi, I can't give you a proper answer right now, but from what I can remember, yes, you send "get_prop" with all the data you need and it replies with that array.
I think the issue though might have to do with this line:
this.parseAndUpdateState(response[0]); // why [0]?
I don't remember any issues with the status polling code but I may have f'd up and never realized, and it looks like this might be the case.
Keep in mind that when I wrote the code the UI wasn't wired up to the capabilities system yet so I never got the chance to test it properly.
btw, I'm planning to finish up with the Viomi capabilities soon™ after I finish up with what I'm working right now ;)
Hi, I have same issue with my viomi.v8 When valetudo requests vacuum state (pollState()) it got something like this
response: [5,0,2105,100,1,0,26,20.04,3,12,1,1,0,1]
but on the next step in parseAndUpdateState() it expects dictionary with named fields instead of array of values like data["battary_life"] and so on. So there is no way this would work
I can confirm that @panoslouk fix above with statusDict mapping solves this particular issue for me.
This particular issue should be fixed in current HEAD. Much of the rest of the UI still isn’t functional though, looking forward to @Depau’s implementation of the missing capabilities.
Note that installation instructions have changed so when redeploying a new binary you’ll need some adjustments.
Describe the bug
I successfully installed valetudo but i can't find out why i can't retrieve information about battery status, area and time. I believe this issue have to do with miio (maybe i have done wrong about firewall rules or something wrong with config file). Any advice what can i do?
You can find some log files and screenshots bellow.
Screenshots
Vacuum Model
Viomi.v8 - STYTJ02YM
Valetudo Version
2021.01.0b0
Firmware Version
3.5.3_0017
User-Agent