Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No infomation about battery - area - time. #641

Closed
panoslouk opened this issue Jan 7, 2021 · 28 comments
Closed

No infomation about battery - area - time. #641

panoslouk opened this issue Jan 7, 2021 · 28 comments
Labels
bug Something isn't working vendor: viomi Viomi-specific issue

Comments

@panoslouk
Copy link

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

Screenshot_1

<30>Jan  8 05:51:36 valetudo[712]: [1970-01-07T21:51:36.445Z] [DEBUG] local request 2 get_consumable timed out
<30>Jan  8 05:51:36 valetudo[712]: [1970-01-07T21:51:36.457Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":1003}
<30>Jan  8 05:51:36 valetudo[712]: [1970-01-07T21:51:36.961Z] [DEBUG] local request 1003 get_consumable timed out
<30>Jan  8 05:51:36 valetudo[712]: [1970-01-07T21:51:36.965Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":2004}
<30>Jan  8 05:51:37 valetudo[712]: [1970-01-07T21:51:37.467Z] [DEBUG] local request 2004 get_consumable timed out
<30>Jan  8 05:51:37 valetudo[712]: [1970-01-07T21:51:37.476Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":3005}
<30>Jan  8 05:51:37 valetudo[712]: [1970-01-07T21:51:37.981Z] [DEBUG] local request 3005 get_consumable timed out
<30>Jan  8 05:51:37 valetudo[712]: [1970-01-07T21:51:37.991Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":4006}
<30>Jan  8 05:51:38 valetudo[712]: [1970-01-07T21:51:38.497Z] [DEBUG] local request 4006 get_consumable timed out
<30>Jan  8 05:51:38 valetudo[712]: [1970-01-07T21:51:38.500Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":5007}
<30>Jan  8 05:51:39 valetudo[712]: [1970-01-07T21:51:39.002Z] [DEBUG] local request 5007 get_consumable timed out
<30>Jan  8 05:51:39 valetudo[712]: [1970-01-07T21:51:39.004Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":6008}
<30>Jan  8 05:51:39 valetudo[712]: [1970-01-07T21:51:39.507Z] [DEBUG] local request 6008 get_consumable timed out
<30>Jan  8 05:51:39 valetudo[712]: [1970-01-07T21:51:39.514Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":7009}
<30>Jan  8 05:51:40 valetudo[712]: [1970-01-07T21:51:40.020Z] [DEBUG] local request 7009 get_consumable timed out
<30>Jan  8 05:51:40 valetudo[712]: [1970-01-07T21:51:40.023Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":8010}
<30>Jan  8 05:51:40 valetudo[712]: [1970-01-07T21:51:40.525Z] [DEBUG] local request 8010 get_consumable timed out
<30>Jan  8 05:51:40 valetudo[712]: [1970-01-07T21:51:40.533Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":9011}
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.038Z] [DEBUG] local request 9011 get_consumable timed out
<27>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.041Z] [WARN] Token is okay, however we're unable to reach the vacuum { retries: 10, method: 'get_consumable', args: [] }
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.053Z] [DEBUG] >>> local: HandshakePacket()
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.057Z] [DEBUG] <<< local* {"stamp":23}
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.057Z] [DEBUG] >>> local* {"stamp":23}
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.058Z] [DEBUG] <<= local: handshake complete
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.060Z] [DEBUG] <<< local* {"stamp":23}
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.061Z] [DEBUG] local: Discarding pong
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.356Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":10012}
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.858Z] [DEBUG] local request 10012 get_consumable timed out
<30>Jan  8 05:51:41 valetudo[712]: [1970-01-07T21:51:41.861Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":11013}
<30>Jan  8 05:51:42 valetudo[712]: [1970-01-07T21:51:42.363Z] [DEBUG] local request 11013 get_consumable timed out
<30>Jan  8 05:51:42 valetudo[712]: [1970-01-07T21:51:42.365Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":12014}
<30>Jan  8 05:51:42 valetudo[712]: [1970-01-07T21:51:42.867Z] [DEBUG] local request 12014 get_consumable timed out
<30>Jan  8 05:51:42 valetudo[712]: [1970-01-07T21:51:42.869Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":13015}
<30>Jan  8 05:51:43 valetudo[712]: [1970-01-07T21:51:43.371Z] [DEBUG] local request 13015 get_consumable timed out
<30>Jan  8 05:51:43 valetudo[712]: [1970-01-07T21:51:43.378Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":14016}
<30>Jan  8 05:51:43 valetudo[712]: [1970-01-07T21:51:43.882Z] [DEBUG] local request 14016 get_consumable timed out
<30>Jan  8 05:51:43 valetudo[712]: [1970-01-07T21:51:43.885Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":15017}
<30>Jan  8 05:51:44 valetudo[712]: [1970-01-07T21:51:44.385Z] [DEBUG] local request 15017 get_consumable timed out
<30>Jan  8 05:51:44 valetudo[712]: [1970-01-07T21:51:44.387Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":16018}
<30>Jan  8 05:51:44 valetudo[712]: [1970-01-07T21:51:44.889Z] [DEBUG] local request 16018 get_consumable timed out
<30>Jan  8 05:51:44 valetudo[712]: [1970-01-07T21:51:44.897Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":17019}
<30>Jan  8 05:51:45 valetudo[712]: [1970-01-07T21:51:45.401Z] [DEBUG] local request 17019 get_consumable timed out
<30>Jan  8 05:51:45 valetudo[712]: [1970-01-07T21:51:45.404Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":18020}
<30>Jan  8 05:51:45 valetudo[712]: [1970-01-07T21:51:45.905Z] [DEBUG] local request 18020 get_consumable timed out
<30>Jan  8 05:51:45 valetudo[712]: [1970-01-07T21:51:45.908Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":19021}
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.410Z] [DEBUG] local request 19021 get_consumable timed out
<27>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.412Z] [WARN] Token is okay, however we're unable to reach the vacuum { retries: 20, method: 'get_consumable', args: [] }
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.414Z] [DEBUG] >>> local: HandshakePacket()
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.416Z] [DEBUG] <<< local* {"stamp":28}
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.417Z] [DEBUG] >>> local* {"stamp":28}
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.418Z] [DEBUG] <<= local: handshake complete
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.419Z] [DEBUG] <<< local* {"stamp":28}
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.420Z] [DEBUG] local: Discarding pong
<30>Jan  8 05:51:46 valetudo[712]: [1970-01-07T21:51:46.718Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":20022}
<30>Jan  8 05:51:47 valetudo[712]: [1970-01-07T21:51:47.219Z] [DEBUG] local request 20022 get_consumable timed out
<30>Jan  8 05:51:47 valetudo[712]: [1970-01-07T21:51:47.222Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":21023}
<30>Jan  8 05:51:47 valetudo[712]: [1970-01-07T21:51:47.724Z] [DEBUG] local request 21023 get_consumable timed out
<30>Jan  8 05:51:47 valetudo[712]: [1970-01-07T21:51:47.726Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":22024}
<30>Jan  8 05:51:48 valetudo[712]: [1970-01-07T21:51:48.229Z] [DEBUG] local request 22024 get_consumable timed out
<30>Jan  8 05:51:48 valetudo[712]: [1970-01-07T21:51:48.231Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":23025}
<30>Jan  8 05:51:48 valetudo[712]: [1970-01-07T21:51:48.733Z] [DEBUG] local request 23025 get_consumable timed out
<30>Jan  8 05:51:48 valetudo[712]: [1970-01-07T21:51:48.736Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":24026}
<30>Jan  8 05:51:49 valetudo[712]: [1970-01-07T21:51:49.238Z] [DEBUG] local request 24026 get_consumable timed out
<30>Jan  8 05:51:49 valetudo[712]: [1970-01-07T21:51:49.244Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":25027}
<30>Jan  8 05:51:49 valetudo[712]: [1970-01-07T21:51:49.567Z] [DEBUG] <<< cloud* {"stamp":0}
<30>Jan  8 05:51:49 valetudo[712]: [1970-01-07T21:51:49.568Z] [DEBUG] ^-- initial timesync packet
<30>Jan  8 05:51:49 valetudo[712]: [1970-01-07T21:51:49.569Z] [DEBUG] >>> Responding to timesync request
<30>Jan  8 05:51:49 valetudo[712]: [1970-01-07T21:51:49.570Z] [INFO] Cloud connected
<30>Jan  8 05:51:50 valetudo[712]: [1970-01-07T21:51:50.017Z] [DEBUG] <<< cloud: {"method":"prop.is_charge","params":[0]}
<30>Jan  8 05:51:50 valetudo[712]: [1970-01-07T21:51:50.022Z] [DEBUG] <<< cloud: {"method":"prop.is_work","params":[1]}
<30>Jan  8 05:51:50 valetudo[712]: [1970-01-07T21:51:50.024Z] [DEBUG] local request 25027 get_consumable timed out
<30>Jan  8 05:51:50 valetudo[712]: [1970-01-07T21:51:50.027Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":26028}
<30>Jan  8 05:51:50 valetudo[712]: [1970-01-07T21:51:50.528Z] [DEBUG] local request 26028 get_consumable timed out
<30>Jan  8 05:51:50 valetudo[712]: [1970-01-07T21:51:50.531Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":27029}
<30>Jan  8 05:51:51 valetudo[712]: [1970-01-07T21:51:51.033Z] [DEBUG] local request 27029 get_consumable timed out
<30>Jan  8 05:51:51 valetudo[712]: [1970-01-07T21:51:51.040Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":28030}
<30>Jan  8 05:51:51 valetudo[712]: [1970-01-07T21:51:51.545Z] [DEBUG] local request 28030 get_consumable timed out
<30>Jan  8 05:51:51 valetudo[712]: [1970-01-07T21:51:51.551Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":29031}
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.056Z] [DEBUG] local request 29031 get_consumable timed out
<27>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.058Z] [WARN] Token is okay, however we're unable to reach the vacuum { retries: 30, method: 'get_consumable', args: [] }
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.059Z] [DEBUG] >>> local: HandshakePacket()
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.062Z] [DEBUG] <<< local* {"stamp":597112}
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.063Z] [DEBUG] >>> local* {"stamp":597112}
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.063Z] [DEBUG] <<= local: handshake complete
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.065Z] [DEBUG] <<< local* {"stamp":597112}
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.066Z] [DEBUG] local: Discarding pong
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.363Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":30032}
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.866Z] [DEBUG] local request 30032 get_consumable timed out
<30>Jan  8 05:51:52 valetudo[712]: [1970-01-07T21:51:52.874Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":31033}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.279Z] [DEBUG] <<< cloud: {"id":2118567401,"method":"props","params":{"ota_state":"idle"}}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.280Z] [INFO] Unknown cloud message received: {"id":2118567401,"method":"props","params":{"ota_state":"idle"}}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.332Z] [DEBUG] <<< cloud: {"method":"prop.is_charge","params":[0]}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.336Z] [DEBUG] <<< cloud: {"method":"prop.is_work","params":[1]}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.339Z] [DEBUG] <<< cloud: {"id":106,"method":"_sync.gen_tmp_presigned_url","params":{"index":[0]}}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.343Z] [DEBUG] >>> cloud: {"id":106,"result":{"urls":[{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?35379675269&suffix=urls","method":"PUT"},{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?35380234686&suffix=urls","method":"PUT"},{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?35380382478&suffix=urls","method":"PUT"},{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?35380419853&suffix=urls","method":"PUT"}]}}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.371Z] [DEBUG] local request 31033 get_consumable timed out
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.374Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":32034}
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.875Z] [DEBUG] local request 32034 get_consumable timed out
<30>Jan  8 05:51:53 valetudo[712]: [1970-01-07T21:51:53.878Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":33035}
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.153Z] [DEBUG] map_upload_handler { '35379675269': '', suffix: 'urls' }
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.206Z] [DEBUG] <<< cloud: {"result":["ok"],"id":1}
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.206Z] [INFO] << cloud: ignoring response for non-pending request {"result":["ok"],"id":1}
<27>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.322Z] [WARN] Unable to parse Pose RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds
<27>Jan  8 05:51:54 valetudo[712]:     at boundsError (internal/buffer.js:75:11)
<27>Jan  8 05:51:54 valetudo[712]:     at Buffer.readUInt32LE (internal/buffer.js:211:5)
<27>Jan  8 05:51:54 valetudo[712]:     at ViomiMapParser.parsePose (/snapshot/Valetudo/lib/ViomiMapParser.js:366:50)
<27>Jan  8 05:51:54 valetudo[712]:     at ViomiMapParser.parse (/snapshot/Valetudo/lib/ViomiMapParser.js:191:22)
<27>Jan  8 05:51:54 valetudo[712]:     at ViomiV8ValetudoRobot.parseMap (/snapshot/Valetudo/lib/robots/viomi/ViomiValetudoRobot.js:374:50)
<27>Jan  8 05:51:54 valetudo[712]:     at /snapshot/Valetudo/lib/robots/MiioValetudoRobot.js:82:48
<27>Jan  8 05:51:54 valetudo[712]:     at processTicksAndRejections (internal/process/task_queues.js:97:5) {
<27>Jan  8 05:51:54 valetudo[712]:   code: 'ERR_BUFFER_OUT_OF_BOUNDS'
<27>Jan  8 05:51:54 valetudo[712]: }
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.377Z] [DEBUG] local request 33035 get_consumable timed out
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.379Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":34036}
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.881Z] [DEBUG] local request 34036 get_consumable timed out
<30>Jan  8 05:51:54 valetudo[712]: [1970-01-07T21:51:54.884Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":35037}
<30>Jan  8 05:51:55 valetudo[712]: [1970-01-07T21:51:55.385Z] [DEBUG] local request 35037 get_consumable timed out
<30>Jan  8 05:51:55 valetudo[712]: [1970-01-07T21:51:55.387Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":36038}
<30>Jan  8 05:51:55 valetudo[712]: [1970-01-07T21:51:55.889Z] [DEBUG] local request 36038 get_consumable timed out
<30>Jan  8 05:51:55 valetudo[712]: [1970-01-07T21:51:55.896Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":37039}
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.400Z] [DEBUG] local request 37039 get_consumable timed out
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.403Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":38040}
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.517Z] [DEBUG] <<< cloud: {"id":2118567401,"method":"props","params":{"ota_state":"idle"}}
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.518Z] [INFO] Unknown cloud message received: {"id":2118567401,"method":"props","params":{"ota_state":"idle"}}
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.520Z] [DEBUG] <<< cloud: {"id":107,"method":"_sync.gen_presigned_url","params":{"suffix":"bin"}}
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.522Z] [DEBUG] >>> cloud: {"id":107,"result":{"bin":[{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?38559370813&suffix=bin","method":"PUT"},{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?38559488271&suffix=bin","method":"PUT"},{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?38559528354&suffix=bin","method":"PUT"},{"url":"http://127.0.0.1:8079/api/miio/map_upload_handler?38559562563&suffix=bin","method":"PUT"}]}}
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.902Z] [DEBUG] local request 38040 get_consumable timed out
<30>Jan  8 05:51:56 valetudo[712]: [1970-01-07T21:51:56.905Z] [DEBUG] >>> local: {"method":"get_consumable","params":[],"id":39041}
<30>Jan  8 05:51:57 valetudo[712]: [1970-01-07T21:51:57.407Z] [DEBUG] local request 39041 get_consumable timed out
<27>Jan  8 05:51:57 valetudo[712]: [1970-01-07T21:51:57.409Z] [WARN] Token is okay, however we're unable to reach the vacuum { retries: 40, method: 'get_consumable', args: [] }
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            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
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
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
cat /etc/hosts
127.0.0.1 localhost

::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
110.43.0.83 ot.io.mi.com ott.io.mi.com
110.43.0.83 de.ot.io.mi.com de.ott.io.mi.com
110.43.0.83 ea.ot.io.mi.com ea.ott.io.mi.com
110.43.0.83 in.ot.io.mi.com in.ott.io.mi.com
110.43.0.83 pv.ot.io.mi.com pv.ott.io.mi.com
110.43.0.83 ru.ot.io.mi.com ru.ott.io.mi.com
110.43.0.83 sg.ot.io.mi.com sg.ott.io.mi.com
110.43.0.83 st.ot.io.mi.com st.ott.io.mi.com
110.43.0.83 tw.ot.io.mi.com tw.ott.io.mi.com
110.43.0.83 us.ot.io.mi.com us.ott.io.mi.com

Vacuum Model

Viomi.v8 - STYTJ02YM

Valetudo Version

2021.01.0b0

Firmware Version

3.5.3_0017

User-Agent

@panoslouk panoslouk added the bug Something isn't working label Jan 7, 2021
@rumpeltux
Copy link
Contributor

Please also post your valetudo.conf.

@panoslouk
Copy link
Author

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
  }
}

@rumpeltux
Copy link
Contributor

Looks like a port mismatch:
config says 80, but iptables says 8080
see also https://valetudo.cloud/pages/installation/viomi.html

@panoslouk
Copy link
Author

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.

@panoslouk
Copy link
Author

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

@Hypfer
Copy link
Owner

Hypfer commented Jan 12, 2021

What changes exactly?

@w1an
Copy link

w1an commented Jan 12, 2021

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

@panoslouk
Copy link
Author

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.

@v0d0r
Copy link

v0d0r commented Jan 16, 2021

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

@panoslouk
Copy link
Author

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.

@v0d0r
Copy link

v0d0r commented Jan 17, 2021

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?

@panoslouk
Copy link
Author

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

@v0d0r
Copy link

v0d0r commented Jan 18, 2021

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.

image

@Hypfer
Copy link
Owner

Hypfer commented Jan 18, 2021

Please share a trace level log with this modification

@v0d0r
Copy link

v0d0r commented Jan 18, 2021

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 >

@Hypfer
Copy link
Owner

Hypfer commented Jan 18, 2021

@v0d0r It was missing the part with a successful get_prop command. The full raw request & reply is what I'm looking for

@v0d0r
Copy link

v0d0r commented Jan 18, 2021

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

<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
Copy link

v0d0r commented Jan 18, 2021

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

@panoslouk
Copy link
Author

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

@Hypfer
Copy link
Owner

Hypfer commented Jan 18, 2021

In the old code, the response array was mapped to the requested properties before then parsing it:

async getCurrentStatus() {
let res = await this.sendCommand("get_prop", STATE_PROPERTIES);
let statusDict = {};
STATE_PROPERTIES.forEach((key, index) => statusDict[key] = res[index]);
this.updateStatus(statusDict);
return this.robotState;
}

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

async pollState() {
const response = await this.sendCommand("get_prop", STATE_PROPERTIES);
if (response) {
this.parseAndUpdateState(response[0]);
}
return this.state;
}

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?

@Hypfer Hypfer reopened this Jan 18, 2021
@panoslouk
Copy link
Author

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}

image

@v0d0r
Copy link

v0d0r commented Jan 20, 2021

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.

@panoslouk
Copy link
Author

panoslouk commented Jan 20, 2021

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.

@v0d0r
Copy link

v0d0r commented Jan 20, 2021

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.

@atd
Copy link

atd commented Jan 24, 2021

I can also confirm that using the old code fixes the issue for me

Running fw 3.5.3_0047

@depau
Copy link
Contributor

depau commented Jan 25, 2021

In the old code, the response array was mapped to the requested properties before then parsing it:

async getCurrentStatus() {
let res = await this.sendCommand("get_prop", STATE_PROPERTIES);
let statusDict = {};
STATE_PROPERTIES.forEach((key, index) => statusDict[key] = res[index]);
this.updateStatus(statusDict);
return this.robotState;
}

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

async pollState() {
const response = await this.sendCommand("get_prop", STATE_PROPERTIES);
if (response) {
this.parseAndUpdateState(response[0]);
}
return this.state;
}

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 ;)

@rromrrom
Copy link
Contributor

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.

rumpeltux added a commit to rumpeltux/Valetudo that referenced this issue Jan 29, 2021
rumpeltux added a commit to rumpeltux/Valetudo that referenced this issue Jan 29, 2021
rumpeltux added a commit to rumpeltux/Valetudo that referenced this issue Jan 30, 2021
Hypfer pushed a commit that referenced this issue Jan 30, 2021
* Fix output of checksum errors (was binary, now is '<Buffer xx …>')

* Make the map upload server listen on 0.0.0.0 for the local development setup.

* Support hex cloudSecrets as mentioned in the documentation.

* Viomi: fix status parsing (#641)

* Merge local dev instructions for viomi and roborock. Add a few missing details.

* Simplify dummycloud setup.

We now require a patch to miio_client to change the http_dns address to
127.0.0.1. Similarly /etc/hosts should be updated to map the ot.mio
names to 127.0.0.1.
@rumpeltux
Copy link
Contributor

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.

@rumpeltux rumpeltux added the vendor: viomi Viomi-specific issue label Jan 31, 2021
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 1, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working vendor: viomi Viomi-specific issue
Projects
None yet
Development

No branches or pull requests

8 participants