Ecovacs Vacuum Cleaners Binding [3.2.0;4.0.0)

Silly mistake by me in the device definition file, that’s an easy fix.

For that, I’d appreciate a trace log that covers initializing the thing. It looks like there’s something different in the ‘get clean state’ request.

Did it ever work? And is this your only Ecovacs’ device or do you have more of them? Asking because this used to be a problem in the past.

Hi there,

thanks for the reply.

Nope, polling updates like battery didn’t work for me ever since I installed the binding, which was back in november last year.

I just removed the .tings file and inserted it back in. Here’s the log from the initialization process with log:set TRACE org.openhab.binding.ecovacs enabled. Hope it helps.

2023-01-13 20:30:25.899 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ecovacs.things'
2023-01-13 20:30:25.924 [TRACE] [covery.EcovacsDeviceDiscoveryService] - BackgroundScan: Scheduling to run in 60 second intervals
2023-01-13 20:30:25.932 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Initializing Ecovacs account 'ecovacsapi'
2023-01-13 20:30:26.591 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Ecovacs API initialized
2023-01-13 20:30:26.592 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Starting Ecovacs discovery scan
2023-01-13 20:30:26.594 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Scheduling to run in 0 seconds
2023-01-13 20:30:26.597 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Running one-shot
2023-01-13 20:30:26.616 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Initializing handler
2023-01-13 20:30:26.617 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Init: Scheduling to run in 0 seconds
2023-01-13 20:30:26.618 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Init: Running one-shot
2023-01-13 20:30:26.644 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 1 devices
2023-01-13 20:30:26.670 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'ecovacs:vacuum:ecovacsapi:E07515513D1FP6CH0019' to inbox.
 
==> /var/log/openhab/events.log <==
2023-01-13 20:30:25.926 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:ecovacsapi:ecovacsapi' changed from UNINITIALIZED to INITIALIZING
2023-01-13 20:30:25.941 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from UNINITIALIZED to UNINITIALIZED (BRIDGE_UNINITIALIZED)
2023-01-13 20:30:26.591 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:ecovacsapi:ecovacsapi' changed from INITIALIZING to ONLINE
2023-01-13 20:30:26.607 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from UNINITIALIZED (BRIDGE_UNINITIALIZED) to INITIALIZING
2023-01-13 20:30:26.670 [INFO ] [openhab.event.InboxAddedEvent       ] - Discovery Result with UID 'ecovacs:vacuum:ecovacsapi:E07515513D1FP6CH0019' has been added.
 
==> /var/log/openhab/openhab.log <==
2023-01-13 20:30:26.942 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ecovacs.things'
2023-01-13 20:30:26.956 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Removing unsupported channel settings#true-detect-3d
2023-01-13 20:30:26.968 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Stopping Ecovacs discovery scan
2023-01-13 20:30:26.969 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Initializing Ecovacs account 'ecovacsapi'
2023-01-13 20:30:27.258 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-13 20:30:27.261 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673638227259,"tzm":480,"ver":"0.0.50"}}
2023-01-13 20:30:27.266 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Ecovacs API initialized
2023-01-13 20:30:27.267 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Starting Ecovacs discovery scan
2023-01-13 20:30:27.269 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Scheduling to run in 0 seconds
2023-01-13 20:30:27.270 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Running one-shot
2023-01-13 20:30:27.329 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673638228635","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":70,"isLow":0}}}
2023-01-13 20:30:27.333 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673638227333,"tzm":480,"ver":"0.0.50"}}
2023-01-13 20:30:27.389 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673638228702","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-13 20:30:27.391 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673638227391,"tzm":480,"ver":"0.0.50"}}
2023-01-13 20:30:27.436 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 1 devices
2023-01-13 20:30:27.480 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673638228790","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"drying","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":null}}},"code":0,"msg":"ok"}}
2023-01-13 20:30:27.484 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 
java.lang.NullPointerException: null
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:386) ~[?:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[?:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[?:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[?:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.initDevice(EcovacsVacuumHandler.java:531) ~[?:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
 
==> /var/log/openhab/events.log <==
2023-01-13 20:30:27.334 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'vacuumBattery' changed from 50 to 70
 
==> /var/log/openhab/openhab.log <==
2023-01-13 20:31:24.349 [TRACE] [internal.api.impl.EcovacsIotMqDevice] - E07515513D1FP6CH0019: Got MQTT message on topic iot/atr/onBattery/93192f79-3cfe-47e1-91ef-14ef1f4fc7d2/1vxt52/MlT3/j: {"header":{"pri":1,"tzm":120,"ts":"1673638285646","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"value":71,"isLow":0}}}
 
==> /var/log/openhab/events.log <==
2023-01-13 20:31:24.372 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'vacuumBattery' changed from 70 to 71
 
==> /var/log/openhab/openhab.log <==
2023-01-13 20:31:25.960 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 1 devices

That battery mqtt message coming in there stays the only one until I either reboot or re-insert the things file again.

Yes, it does. It’s exactly what I needed. Thanks. I’ll look into it.

I wonder whether the half complete initialization is related. We’ll see once that one is fixed.

@Timtam Please try the new binding release and let me know if anything is still broken (in which case I need a new TRACE log). Thanks :slight_smile:
For getting the True Detect 3D channel, you’ll have to recreate the vacuum Thing though.

That looks much better now, thank you very much!
I still had an error while initializing, but it restarted? the initialization and now everything looks normal. I attached the log anyway, just in case. I however now get my battery updates as expected, thanks.

2023-01-14 15:23:15.365 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ecovacs.things'
2023-01-14 15:23:15.401 [TRACE] [covery.EcovacsDeviceDiscoveryService] - BackgroundScan: Scheduling to run in 60 second intervals
2023-01-14 15:23:15.410 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Initializing Ecovacs account 'ecovacsapi'
2023-01-14 15:23:15.978 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Ecovacs API initialized
2023-01-14 15:23:15.980 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Starting Ecovacs discovery scan
2023-01-14 15:23:15.981 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Scheduling to run in 0 seconds
2023-01-14 15:23:15.986 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Running one-shot
2023-01-14 15:23:16.007 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Initializing handler
2023-01-14 15:23:16.008 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Init: Scheduling to run in 0 seconds
2023-01-14 15:23:16.010 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Init: Running one-shot
2023-01-14 15:23:16.023 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 1 devices
2023-01-14 15:23:16.050 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'ecovacs:vacuum:ecovacsapi:E07515513D1FP6CH0019' to inbox.
 
==> /var/log/openhab/events.log <==
2023-01-14 15:23:15.405 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:ecovacsapi:ecovacsapi' changed from UNINITIALIZED to INITIALIZING
2023-01-14 15:23:15.424 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from UNINITIALIZED to UNINITIALIZED (BRIDGE_UNINITIALIZED)
2023-01-14 15:23:15.978 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:ecovacsapi:ecovacsapi' changed from INITIALIZING to ONLINE
2023-01-14 15:23:16.001 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from UNINITIALIZED (BRIDGE_UNINITIALIZED) to INITIALIZING
2023-01-14 15:23:16.050 [INFO ] [openhab.event.InboxAddedEvent       ] - Discovery Result with UID 'ecovacs:vacuum:ecovacsapi:E07515513D1FP6CH0019' has been added.
 
==> /var/log/openhab/openhab.log <==
2023-01-14 15:23:16.425 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ecovacs.things'
2023-01-14 15:23:16.464 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Stopping Ecovacs discovery scan
2023-01-14 15:23:16.464 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Initializing Ecovacs account 'ecovacsapi'
2023-01-14 15:23:16.567 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-14 15:23:16.568 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673706196568,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:16.749 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198328","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-14 15:23:16.752 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673706196752,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:16.787 [DEBUG] [s.internal.handler.EcovacsApiHandler] - Ecovacs API initialized
2023-01-14 15:23:16.789 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Starting Ecovacs discovery scan
2023-01-14 15:23:16.790 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Scheduling to run in 0 seconds
2023-01-14 15:23:16.791 [TRACE] [covery.EcovacsDeviceDiscoveryService] - OnDemandScan: Running one-shot
2023-01-14 15:23:16.848 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198471","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-14 15:23:16.850 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673706196850,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:16.903 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198532","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"idle"},"code":0,"msg":"ok"}}
2023-01-14 15:23:16.908 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getWaterInfo with payload {"header":{"pri":1,"ts":1673706196908,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:16.923 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 1 devices
2023-01-14 15:23:16.984 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198600","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"enable":1,"amount":4,"type":1,"sweepType":1}}}
2023-01-14 15:23:16.987 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getError with payload {"header":{"pri":1,"ts":1673706196987,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:17.049 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198675","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"","data":{"code":[0]}}}
2023-01-14 15:23:17.052 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Scheduling next poll in 0s, refresh interval 5min
2023-01-14 15:23:17.054 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Poll: Scheduling to run in 0 seconds
2023-01-14 15:23:17.059 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Device connected
2023-01-14 15:23:17.059 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Poll: Running one-shot
2023-01-14 15:23:17.060 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Polling data
2023-01-14 15:23:17.062 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getTotalStats with payload {"header":{"pri":1,"ts":1673706197061,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:17.126 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198746","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"area":1129,"time":93240,"count":69}}}
2023-01-14 15:23:17.129 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBreakPoint with payload {"header":{"pri":1,"ts":1673706197129,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:17.187 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706198809","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"enable":1},"code":0,"msg":"ok"}}
 
==> /var/log/openhab/events.log <==
2023-01-14 15:23:17.062 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from INITIALIZING to ONLINE
 
==> /var/log/openhab/openhab.log <==
2023-01-14 15:23:27.193 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: java.util.concurrent.TimeoutException: Total timeout 10000 ms elapsed
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.executeRequest(EcovacsApiImpl.java:354) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.fetchCleanLogs(EcovacsApiImpl.java:281) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.getCleanLogs(EcovacsIotMqDevice.java:106) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$15(EcovacsVacuumHandler.java:588) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.pollData(EcovacsVacuumHandler.java:579) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.util.concurrent.TimeoutException: Total timeout 10000 ms elapsed
	at org.eclipse.jetty.client.HttpConnection$RequestTimeouts.onExpired(HttpConnection.java:334) ~[?:?]
	at org.eclipse.jetty.client.HttpConnection$RequestTimeouts.onExpired(HttpConnection.java:314) ~[?:?]
	at org.eclipse.jetty.io.CyclicTimeouts.onTimeoutExpired(CyclicTimeouts.java:110) ~[?:?]
	at org.eclipse.jetty.io.CyclicTimeouts.access$100(CyclicTimeouts.java:50) ~[?:?]
	at org.eclipse.jetty.io.CyclicTimeouts$Timeouts.onTimeoutExpired(CyclicTimeouts.java:196) ~[?:?]
	at org.eclipse.jetty.io.CyclicTimeout$Wakeup.run(CyclicTimeout.java:298) ~[?:?]
	... 6 more
2023-01-14 15:23:27.209 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-14 15:23:27.210 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Data polling completed
 
==> /var/log/openhab/events.log <==
2023-01-14 15:23:27.208 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR)
 
==> /var/log/openhab/openhab.log <==
2023-01-14 15:23:32.213 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-14 15:23:32.383 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-14 15:23:32.384 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673706212384,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.448 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214069","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-14 15:23:32.450 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673706212450,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.508 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214134","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-14 15:23:32.510 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673706212509,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.570 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214197","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"idle"},"code":0,"msg":"ok"}}
2023-01-14 15:23:32.573 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getWaterInfo with payload {"header":{"pri":1,"ts":1673706212573,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.641 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214253","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"enable":1,"amount":4,"type":1,"sweepType":1}}}
2023-01-14 15:23:32.643 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getError with payload {"header":{"pri":1,"ts":1673706212643,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.702 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214328","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"","data":{"code":[0]}}}
2023-01-14 15:23:32.705 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Scheduling next poll in 0s, refresh interval 5min
2023-01-14 15:23:32.707 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Poll: Scheduling to run in 0 seconds
2023-01-14 15:23:32.708 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Poll: Running one-shot
2023-01-14 15:23:32.709 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Polling data
2023-01-14 15:23:32.709 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Device connected
2023-01-14 15:23:32.711 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getTotalStats with payload {"header":{"pri":1,"ts":1673706212710,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.782 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214402","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"area":1129,"time":93240,"count":69}}}
2023-01-14 15:23:32.785 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBreakPoint with payload {"header":{"pri":1,"ts":1673706212784,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.847 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214467","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"enable":1},"code":0,"msg":"ok"}}
2023-01-14 15:23:32.904 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Fetching cleaning logs yields 0 records
2023-01-14 15:23:32.906 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getSpeed with payload {"header":{"pri":1,"ts":1673706212906,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:32.974 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214595","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"speed":2}}}
2023-01-14 15:23:32.976 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getWaterInfo with payload {"header":{"pri":1,"ts":1673706212976,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:33.044 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214660","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"enable":1,"amount":4,"type":1,"sweepType":1}}}
2023-01-14 15:23:33.046 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getNetInfo with payload {"header":{"pri":1,"ts":1673706213046,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:33.103 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214729","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"ip":"192.168.170.104","ssid":"HeimWLAN","rssi":"-40","wkVer":"0.1.2","mac":"68:4E:05:16:AA:02"}}}
2023-01-14 15:23:33.105 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getAutoEmpty with payload {"header":{"pri":1,"ts":1673706213105,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:33.174 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214785","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"OK","data":{"status":0,"enable":1,"frequency":"auto"}}}
2023-01-14 15:23:33.176 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getTrueDetect with payload {"header":{"pri":1,"ts":1673706213175,"tzm":480,"ver":"0.0.50"}}
 
==> /var/log/openhab/events.log <==
2023-01-14 15:23:32.712 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from OFFLINE (COMMUNICATION_ERROR) to ONLINE
 
==> /var/log/openhab/openhab.log <==
2023-01-14 15:23:33.237 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214858","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"enable":0},"code":0,"msg":"ok"}}
2023-01-14 15:23:33.239 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanCount with payload {"header":{"pri":1,"ts":1673706213238,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:33.331 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706214923","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"count":1},"code":0,"msg":"ok"}}
2023-01-14 15:23:33.333 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getLifeSpan with payload {"header":{"pri":1,"ts":1673706213333,"tzm":480,"ver":"0.0.50"},"body":{"data":["sideBrush"]}}
2023-01-14 15:23:33.470 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706215015","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":[{"type":"sideBrush","left":7115,"total":9000}]}}
2023-01-14 15:23:33.473 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getLifeSpan with payload {"header":{"pri":1,"ts":1673706213472,"tzm":480,"ver":"0.0.50"},"body":{"data":["heap"]}}
2023-01-14 15:23:33.537 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706215156","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":[{"type":"heap","left":5466,"total":7200}]}}
2023-01-14 15:23:33.539 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getLifeSpan with payload {"header":{"pri":1,"ts":1673706213539,"tzm":480,"ver":"0.0.50"},"body":{"data":["brush"]}}
2023-01-14 15:23:33.602 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706215220","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":[{"type":"brush","left":16276,"total":18000}]}}
2023-01-14 15:23:33.604 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getVolume with payload {"header":{"pri":1,"ts":1673706213604,"tzm":480,"ver":"0.0.50"}}
2023-01-14 15:23:33.662 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673706215289","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"total":10,"volume":10}}}
2023-01-14 15:23:33.665 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Scheduling next poll in 300s, refresh interval 5min
2023-01-14 15:23:33.666 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Poll: Scheduling to run in 300 seconds
2023-01-14 15:23:33.668 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Data polling completed

Its me again ;). I now noticed that, although the vacuum data gets polled regularly (currently every 1m with refresh=1), alot of data gets polled except the battery data. I don’t know why, but it never calls any endpoint that returns it. It calls water data, cleaning info, speed and alot more, but no battery. Which log would be useful to have here?

Battery info (as well as other things, such as cleaning mode) are updated via events (in your case: MQTT messages), not via polling.

I guess a TRACE log of

  • disable thing
  • enable thing
  • start a cleaning cycle from the app
  • let it clean for some minutes (to provoke battery status changes)
  • send device back to charger via app

would be helpful. This should trigger a number of MQTT messages. With that, we can see whether no messages at all arrive or whether they just have some unexpected format.

Here we go. Removed thing, re-inserted and starting cleaning process, and the errors start coming in. Those might be the reason why MQTT’s can be received properly. Long log incoming.

2023-01-16 19:21:55.449 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command clean_V2 with payload {"header":{"pri":1,"ts":1673893315449,"tzm":480,"ver":"0.0.50"},"body":{"data":{"act":"start","content":{"value":"5,7,3,2,1,6","donotClean":0,"total":0,"count":1,"type":"spotArea"}}}}
2023-01-16 19:21:55.569 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893315373","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok"}}
2023-01-16 19:21:55.582 [TRACE] [internal.api.impl.EcovacsIotMqDevice] - E07515513D1FP6CH0019: Got MQTT message on topic iot/atr/onFwBuryPoint-bd_basicinfo/93192f79-3cfe-47e1-91ef-14ef1f4fc7d2/1vxt52/MlT3/j: {"header":{"pri":1,"tzm":120,"ts":"1673893315411","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"gid":"G1673797370613","index":"0000000195","ts":"1673893315384","id":"1121673893315384","battery":100,"chargeState":1,"onCharger":1,"robotState":0,"robotPos":"-100.00,1300.00,1.02","chargerPos":"-10.71,573.86,-1.59","dirtboxState":1,"mopState":2}}
2023-01-16 19:21:55.599 [TRACE] [internal.api.impl.EcovacsIotMqDevice] - E07515513D1FP6CH0019: Got MQTT message on topic iot/atr/onFwBuryPoint-bd_setting/93192f79-3cfe-47e1-91ef-14ef1f4fc7d2/1vxt52/MlT3/j: {"header":{"pri":1,"tzm":120,"ts":"1673893315411","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"gid":"G1673797370613","index":"0000000196","ts":"1673893315386","id":"9881673893315386","AISL":0,"isPressurized":1,"continue":1,"DND":1,"childLock":1,"autocollect":0,"personalClean":0,"fanspeed":3,"waterAmount":3,"cleanCount":1,"personalCleanSetting":[]}}
2023-01-16 19:21:55.600 [TRACE] [internal.api.impl.EcovacsIotMqDevice] - E07515513D1FP6CH0019: Got MQTT message on topic iot/atr/onFwBuryPoint-bd_task-omni-washMop-start/93192f79-3cfe-47e1-91ef-14ef1f4fc7d2/1vxt52/MlT3/j: {"header":{"pri":1,"tzm":120,"ts":"1673893315411","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"gid":"G1673893315386","index":"0000000197","ts":"1673893315386","mid":"2054994424","bid":"1121673893315384","sid":"9881673893315386","triggerType":"app","washMopId":"�Xt\""}}
2023-01-16 19:21:56.026 [TRACE] [internal.api.impl.EcovacsIotMqDevice] - E07515513D1FP6CH0019: Got MQTT message on topic iot/atr/onCleanInfo_V2/93192f79-3cfe-47e1-91ef-14ef1f4fc7d2/1vxt52/MlT3/j: {"header":{"pri":1,"tzm":120,"ts":"1673893315860","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"cid":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}}}}
2023-01-16 19:21:56.028 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Device connection failed, reconnecting
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893315860","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"cid":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}}}}
	at org.openhab.binding.ecovacs.internal.api.impl.JsonReportParser.handleMessage(JsonReportParser.java:93) ~[?:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.lambda$3(EcovacsIotMqDevice.java:168) ~[?:?]
	at com.hivemq.client.internal.mqtt.mqtt3.Mqtt3AsyncClientView.lambda$callbackView$1(Mqtt3AsyncClientView.java:76) ~[bundleFile:?]
	at com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:303) [bundleFile:?]
	at com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:288) [bundleFile:?]
	at com.hivemq.client.rx.FlowableWithSingle$SingleFutureSubscriber.onNext(FlowableWithSingle.java:406) [bundleFile:?]
	at com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber$Default.tryOnNextActual(FlowableWithSingleCombine.java:235) [bundleFile:?]
	at com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber.tryOnNext(FlowableWithSingleCombine.java:200) [bundleFile:?]
	at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:649) [bundleFile:?]
	at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176) [bundleFile:?]
	at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) [bundleFile:?]
	at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) [bundleFile:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:21:56.039 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Poll: Cancelled
2023-01-16 19:21:56.040 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
 
==> /var/log/openhab/events.log <==
2023-01-16 19:21:55.407 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumStartCleaning' received command ON
2023-01-16 19:21:55.411 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumStartCleaning' changed from OFF to ON
2023-01-16 19:21:55.418 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumCleanBathroom' received command OFF
2023-01-16 19:21:55.422 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumCleanKitchen' received command OFF
2023-01-16 19:21:55.423 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumCleanBathroom' changed from ON to OFF
2023-01-16 19:21:55.427 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumCleanWorkroom' received command OFF
2023-01-16 19:21:55.429 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumCleanLivingroom' received command OFF
2023-01-16 19:21:55.430 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumCleanCorridor' received command OFF
2023-01-16 19:21:55.431 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumCleanKitchen' changed from ON to OFF
2023-01-16 19:21:55.434 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumCleanBedroom' received command OFF
2023-01-16 19:21:55.442 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'vacuumAction' received command spotArea:F;H;D;C;B;G
2023-01-16 19:21:55.444 [INFO ] [openhab.event.ItemCommandEvent      ] - Item '_vacuumStartCleaning' received command OFF
2023-01-16 19:21:55.445 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumCleanWorkroom' changed from ON to OFF
2023-01-16 19:21:55.446 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumCleanLivingroom' changed from ON to OFF
2023-01-16 19:21:55.447 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumCleanCorridor' changed from ON to OFF
2023-01-16 19:21:55.448 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'vacuumAction' predicted to become spotArea:F;H;D;C;B;G
2023-01-16 19:21:55.454 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumCleanBedroom' changed from ON to OFF
2023-01-16 19:21:55.455 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'vacuumAction' changed from charge to spotArea:F;H;D;C;B;G
2023-01-16 19:21:55.456 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item '_vacuumStartCleaning' changed from ON to OFF
 
==> /var/log/openhab/openhab.log <==
2023-01-16 19:22:01.045 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:01.251 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:01.254 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893321254,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:01.310 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893321167","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:01.312 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893321312,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:01.382 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893321235","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:01.383 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893321383,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:01.447 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893321300","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:01.449 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@1aeec failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893321300","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:01.452 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893321300","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893321300","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:01.459 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
 
==> /var/log/openhab/events.log <==
2023-01-16 19:22:01.458 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'ecovacs:vacuum:ecovacsapi:Staubi' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR)
 
==> /var/log/openhab/openhab.log <==
2023-01-16 19:22:06.460 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:06.662 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:06.663 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893326663,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:06.718 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893326574","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:06.720 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893326720,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:06.783 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893326634","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:06.785 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893326784,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:06.861 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893326717","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:06.864 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@10945b6 failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893326717","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:06.866 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893326717","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893326717","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:06.870 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:11.871 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:12.081 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:12.082 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893332082,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:12.143 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893331998","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:12.145 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893332145,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:12.223 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893332079","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:12.225 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893332225,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:12.289 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893332143","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:12.291 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@15e6737 failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893332143","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:12.294 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893332143","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893332143","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:12.298 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:17.300 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:17.550 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:17.556 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893337556,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:17.619 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893337474","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:17.622 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893337622,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:17.684 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893337538","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:17.686 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893337686,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:17.751 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893337606","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:17.754 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@f5c8c2 failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893337606","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:17.756 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893337606","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893337606","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:17.760 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:22.762 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:22.981 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:22.982 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893342982,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:23.042 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893342898","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:23.044 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893343044,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:23.200 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893343054","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:23.202 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893343202,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:23.268 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893343122","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:23.270 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@1fefbc9 failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893343122","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:23.273 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893343122","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893343122","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:23.283 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:28.285 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:28.460 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:28.461 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893348461,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:28.520 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893348378","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:28.523 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893348522,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:28.594 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893348450","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:28.595 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893348595,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:28.661 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893348517","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:28.663 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@18961f failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893348517","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:28.666 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893348517","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893348517","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:28.670 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:33.671 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:33.871 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:33.873 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893353872,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:33.938 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893353793","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:33.940 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893353940,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:34.009 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893353864","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:34.011 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893354011,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:34.076 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893353932","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:34.078 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@57bdd failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893353932","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:34.081 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893353932","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893353932","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:34.084 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:37.074 [DEBUG] [covery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 1 devices
2023-01-16 19:22:39.085 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:39.287 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:39.289 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893359289,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:39.350 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893359208","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:39.352 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893359352,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:39.419 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893359274","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:39.421 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893359421,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:39.991 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893359849","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:39.993 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@b7a0fb failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893359849","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:39.996 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893359849","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893359849","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:39.999 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:45.001 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:45.172 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:45.174 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893365173,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:45.246 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893365097","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:45.248 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893365248,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:45.315 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893365168","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:45.317 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893365317,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:45.390 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893365240","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:45.392 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@115905b failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893365240","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2023-01-16 19:22:45.395 [DEBUG] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Failed communicating to device, reconnecting
org.openhab.binding.ecovacs.internal.api.EcovacsApiException: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893365240","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:272) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893365240","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	... 12 more
2023-01-16 19:22:45.399 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Scheduling to run in 5 seconds
2023-01-16 19:22:50.401 [TRACE] [nternal.handler.EcovacsVacuumHandler] - E07515513D1FP6CH0019: Connection: Running one-shot
2023-01-16 19:22:50.573 [DEBUG] [internal.api.impl.EcovacsIotMqDevice] - Established MQTT connection to device E07515513D1FP6CH0019
2023-01-16 19:22:50.574 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getBattery with payload {"header":{"pri":1,"ts":1673893370574,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:50.863 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893370716","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2023-01-16 19:22:50.866 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getChargeState with payload {"header":{"pri":1,"ts":1673893370866,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:50.939 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893370791","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"code":0,"msg":"ok","data":{"isCharging":1,"mode":"slot"}}}
2023-01-16 19:22:50.941 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Sending IOT command getCleanInfo_V2 with payload {"header":{"pri":1,"ts":1673893370941,"tzm":480,"ver":"0.0.50"}}
2023-01-16 19:22:51.018 [TRACE] [acs.internal.api.impl.EcovacsApiImpl] - E07515513D1FP6CH0019: Got response payload {"header":{"pri":1,"tzm":120,"ts":"1673893370861","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
2023-01-16 19:22:51.020 [DEBUG] [acs.internal.api.impl.EcovacsApiImpl] - Converting response for command org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand@fdd614 failed
org.openhab.binding.ecovacs.internal.api.util.DataParsingException: Could not get clean mode from response {"header":{"pri":1,"tzm":120,"ts":"1673893370861","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":{"data":{"trigger":"none","state":"washing","cleanState":{"id":"122","router":"plan","motionState":"working","content":{"subContent":{"type":"spotArea"}}}},"code":0,"msg":"ok"}}
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:64) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.commands.GetCleanStateCommand.convertResponse(GetCleanStateCommand.java:1) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:269) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.fetchInitialStateAndCommandValues(EcovacsVacuumHandler.java:385) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.lambda$14(EcovacsVacuumHandler.java:568) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.doWithDevice(EcovacsVacuumHandler.java:794) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.connectToDevice(EcovacsVacuumHandler.java:565) ~[bundleFile:?]
	at org.openhab.binding.ecovacs.internal.api.util.SchedulerTask.run(SchedulerTask.java:82) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]

Yep, that’s the problem. The cleaning pad washing/drying introduces some new states, which the binding needs to be updated for. Last update added ‘drying’, today’s update added ‘washing’ :wink:
Please try again with the new update.

Thanks, I think we’re almost there. Now the binding stops receiving MQTT messages after some time and I haven’t found an exception or something that might cause this. This MQTT message seems to be the last one that I always get, after which I receive no further MQTT messages. Polling continues to work fine though:

2023-01-16 21:11:56.309 [TRACE] [internal.api.impl.EcovacsIotMqDevice] - E07515513D1FP6CH0019: Got MQTT message on topic iot/atr/onFwBuryPoint-bd_sysinfo/93192f79-3cfe-47e1-91ef-14ef1f4fc7d2/1vxt52/MlT3/j: {"header":{"pri":1,"tzm":120,"ts":"1673899914051","ver":"0.0.1","fwVer":"2.3.9","hwVer":"0.1.1","wkVer":"0.1.54"},"body":[{"signal":-41,"uptime":" 19:57:53 up 1 day,  4:15,  0 users,  load average: 0.98, 1.27, 1.60, POWER_RESET","meminfo":"593072,417328","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-41,"uptime":" 19:58:53 up 1 day,  4:16,  0 users,  load average: 1.06, 1.24, 1.56, POWER_RESET","meminfo":"593424,416976","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-40,"uptime":" 19:59:53 up 1 day,  4:17,  0 users,  load average: 1.31, 1.27, 1.55, POWER_RESET","meminfo":"593044,417356","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-41,"uptime":" 20:00:53 up 1 day,  4:18,  0 users,  load average: 1.38, 1.31, 1.55, POWER_RESET","meminfo":"593144,417256","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-43,"uptime":" 20:01:53 up 1 day,  4:19,  0 users,  load average: 1.94, 1.45, 1.58, POWER_RESET","meminfo":"593260,417140","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-43,"uptime":" 20:02:53 up 1 day,  4:20,  0 users,  load average: 1.28, 1.35, 1.53, POWER_RESET","meminfo":"593748,416652","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-42,"uptime":" 20:03:53 up 1 day,  4:21,  0 users,  load average: 1.87, 1.49, 1.57, POWER_RESET","meminfo":"592888,417512","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-42,"uptime":" 20:04:53 up 1 day,  4:22,  0 users,  load average: 1.56, 1.47, 1.56, POWER_RESET","meminfo":"592864,417536","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-42,"uptime":" 20:05:53 up 1 day,  4:23,  0 users,  load average: 1.50, 1.46, 1.55, POWER_RESET","meminfo":"593000,417400","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-42,"uptime":" 20:06:53 up 1 day,  4:24,  0 users,  load average: 1.54, 1.46, 1.54, POWER_RESET","meminfo":"593256,417144","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914038"},{"signal":-42,"uptime":" 20:07:53 up 1 day,  4:25,  0 users,  load average: 1.24, 1.39, 1.52, POWER_RESET","meminfo":"592908,417492","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914039"},{"signal":-42,"uptime":" 20:08:53 up 1 day,  4:26,  0 users,  load average: 1.64, 1.50, 1.55, POWER_RESET","meminfo":"592760,417640","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914039"},{"signal":-42,"uptime":" 20:09:53 up 1 day,  4:27,  0 users,  load average: 1.71, 1.56, 1.56, POWER_RESET","meminfo":"592968,417432","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914039"},{"signal":-42,"uptime":" 20:10:53 up 1 day,  4:28,  0 users,  load average: 1.55, 1.57, 1.57, POWER_RESET","meminfo":"592432,417968","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914039"},{"signal":-42,"uptime":" 20:11:53 up 1 day,  4:29,  0 users,  load average: 1.53, 1.56, 1.56, POWER_RESET","meminfo":"592952,417448","pos":"-2,548","isvalid":1,"mapid":"2054994424","ts":"1673899914039"}]}

Also, I get a message like this when rebooting and/or loading the add-on. Might it have something to do with the stuff above?

2023-01-16 21:05:58.526 [WARN ] [internal.service.FeaturesServiceImpl] - Can't load features repository mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/3.4.0-SNAPSHOT/xml/features
java.lang.RuntimeException: Error resolving artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:3.4.0-SNAPSHOT: [Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:3.4.0-SNAPSHOT] : mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/3.4.0-SNAPSHOT/xml/features
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:121) ~[?:?]
	at org.apache.karaf.features.internal.service.RepositoryImpl.<init>(RepositoryImpl.java:51) ~[?:?]
	at org.apache.karaf.features.internal.service.RepositoryCacheImpl.create(RepositoryCacheImpl.java:51) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeatureCache(FeaturesServiceImpl.java:611) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeaturesById(FeaturesServiceImpl.java:645) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.refreshFeatures(FeaturesServiceImpl.java:1236) ~[?:?]
	at org.openhab.core.karaf.internal.FeatureInstaller.processConfigQueue(FeatureInstaller.java:222) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.io.IOException: Error resolving artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:3.4.0-SNAPSHOT: [Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:3.4.0-SNAPSHOT]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.configureIOException(AetherBasedResolver.java:803) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:774) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
	at java.net.URL.openStream(URL.java:1165) ~[?:?]
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:114) ~[?:?]
	... 12 more
	Suppressed: shaded.org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:3.4.0-SNAPSHOT
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:403) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192) ~[?:?]
		at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
		at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
		at java.net.URL.openStream(URL.java:1165) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:114) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryImpl.<init>(RepositoryImpl.java:51) ~[?:?]
		at org.apache.karaf.features.internal.service.RepositoryCacheImpl.create(RepositoryCacheImpl.java:51) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeatureCache(FeaturesServiceImpl.java:611) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.getFeaturesById(FeaturesServiceImpl.java:645) ~[?:?]
		at org.apache.karaf.features.internal.service.FeaturesServiceImpl.refreshFeatures(FeaturesServiceImpl.java:1236) ~[?:?]
		at org.openhab.core.karaf.internal.FeatureInstaller.processConfigQueue(FeatureInstaller.java:222) ~[?:?]
		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
		at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
		at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
		at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Error resolving artifact org.openhab.core.features.karaf:org.openhab.core.features.karaf.openhab-core:xml:features:3.4.0-SNAPSHOT
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:413) ~[?:?]
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215) ~[?:?]
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192) ~[?:?]
	at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555) ~[?:?]
	at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123) ~[?:?]
	at java.net.URL.openStream(URL.java:1165) ~[?:?]
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:114) ~[?:?]
	... 12 more

And what does the device do at that point? If it’s sitting idle, receiving no MQTT messages might be OK/normal. In that case - what happens when triggering some action via app?
Also, can you give a log with a bit more context? What happens before that line?

Edit: Another question: If the MQTT events stop while the device is active, how long does it take until that happens? When disabling + enabling the vacuum Thing, is the time until messages stop again similar or different?

That’s ‘normal’. Reason is the binding being built against version 3.4.0-SNAPSHOT of openhab-core, but that version not being available anymore in the respective repository. Since 3.4.0-SNAPSHOT (which the binding wants) and 3.4.0 (which is installed; likewise applies to 3.3.0/3.2.0) are compatible as far as the binding is concerned, that message is not a problem in practice and the binding still should work fine.

That is good to know, thanks.

Well, its kinda sitting idle, means it is sitting in its station not doing anything except charging. The binding stopped receiving MQTT messages when battery was at 54%, the app continued to shop proper battery percentages (56% about 5 mins later), but openHAB stayed at 54%, where its at even right now. That was about 12 hours ago, so its definitely full by now, but openHAB doesn’t get updated as it seems. Although you might be right and there are no MQTT messages to be received due to the device being idle, but there should probably be a mechanism to update on battery status and stuff anyway, since one might want to trigger another cleaning run as soon as the battery is fully charged or something.

The log was rather uninteresting really, otherwise I would have posted it. It just continued to receive MQTT messages and polls all the time, with one final battery message coming in before receiving the MQTT message I posted above and going silent afterwards MQTT-wise. No exceptions, no log message out of the normal.

If it’s still charging, it’s definitely supposed to receive further MQTT messages about the charge state update.

OK, you’re right, I just re-initialized the thing and started a cleaning run. After 10 to 15 minutes, it stopped receiving MQTT messages again, although its still cleaning at this moment. I copied the entire events.log and openhab.log files to a pastebin from the moment where I reload the thing. I cannot see a problem, but maybe you can. Thanks in advance, prepare yourself for alot to read… :(. And let me know if I can help you further.
events.log: Ecovacs Log events.log - Pastebin.com
openhab.log: Ecovacs log openhab.log - Pastebin.com

It’s indeed a parsing failure of that system status MQTT message. I reproduced by copy’n’pasting it verbatim into the code and triggered an MQTT message on my device :wink: I’ll have a look into it and let you know when I found the issue.

Edit: I’ve done a new release which should have this fixed.

The release with invalid JSON messages being ignored? Yep, that did the trick. Binding is running fine so far here, thanks.

I recently got a T8 after I saw it is supported in OH with your binding, thank you for this!

Now I’m in the progress of converting my Xiaomi Vacuum rules to the T8.

Is it possible to send the vacuum to specific coordinates and just stay there, doing nothing? I had a rule for my Xiaomi where it would go to a specific spot, every saturday, to get his bin emptied.

rule "Stofzuiger legen"
    when 
        Item StofzuigerLegen received command ON
    then
        actionCommand.sendCommand("app_goto_target[25863,24807]")
        StofzuigerLegen.sendCommand(OFF)
end

And in the app I also see accessories usage, other components. Which has a lifespan of 30 hours and includes wiping off the dust, remove hairs, cleaning the sensors etc. Would it be possible to add this channel?

Unfortunately that doesn’t seem to be possible. One can tell the robot to e.g. ‘move left’, but not to given coordinates.

Yes, I can add that.

1 Like

Would that be possible to do from within this binding, or do I need to use sucks and setup some shell scripts for OH to call? Move 1m forward would be enough for my use case.

Great!

And another request; Would be nice to reset the accessories usage from within OH. That way we never have to use that (horrible) Ecovacs app again.

From my understanding you can’t do this with sucks either, can you? One can only say ‘move’ and ‘stop’, but not how far to move; this is only decided by the time between the commands.

That shouldn’t be a big problem to do.

1 Like