No, sending clean
to the command channel (state is read only) should work (and does for me on an N8). I’d need a TRACE log to see what’s wrong in your case.
I hope that helps, after triggering the rule this error occurs.
The channel still changes to “clean” but doesn’t affect the vacuum to start.
==> /var/log/openhab/openhab.log <==
2023-05-12 21:50:38.576 [INFO ] [b.core.model.script.Wallswitch rules] - Deebot starten
2023-05-12 21:50:38.641 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler@1aeabcd': java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 34 path $.error
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 34 path $.error
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226) ~[bundleFile:?]
at com.google.gson.Gson.fromJson(Gson.java:963) ~[bundleFile:?]
at com.google.gson.Gson.fromJson(Gson.java:928) ~[bundleFile:?]
at com.google.gson.Gson.fromJson(Gson.java:877) ~[bundleFile:?]
at com.google.gson.Gson.fromJson(Gson.java:848) ~[bundleFile:?]
at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.handleResponse(EcovacsApiImpl.java:312) ~[?:?]
at org.openhab.binding.ecovacs.internal.api.impl.EcovacsApiImpl.sendIotCommand(EcovacsApiImpl.java:260) ~[?:?]
at org.openhab.binding.ecovacs.internal.api.impl.EcovacsIotMqDevice.sendCommand(EcovacsIotMqDevice.java:97) ~[?:?]
at org.openhab.binding.ecovacs.internal.handler.EcovacsVacuumHandler.handleCommand(EcovacsVacuumHandler.java:170) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor370.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
at com.sun.proxy.$Proxy3002.handleCommand(Unknown Source) [?:?]
at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:85) [bundleFile:?]
at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:48) [bundleFile:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
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.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 34 path $.error
at com.google.gson.stream.JsonReader.nextString(JsonReader.java:824) ~[bundleFile:?]
at com.google.gson.internal.bind.TypeAdapters$15.read(TypeAdapters.java:380) ~[bundleFile:?]
at com.google.gson.internal.bind.TypeAdapters$15.read(TypeAdapters.java:368) ~[bundleFile:?]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) ~[bundleFile:?]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) ~[bundleFile:?]
... 26 more
==> /var/log/openhab/events.log <==
2023-05-12 21:50:38.574 [INFO ] [openhab.event.ChannelTriggeredEvent ] - homematic:HmIP-WRC6:a2426c6bb7:000B5D8995AE2B:5#BUTTON triggered SHORT_PRESSED
2023-05-12 21:50:38.579 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'DeebotCommand' received command clean
2023-05-12 21:50:38.605 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'DeebotCommand' predicted to become clean
2023-05-12 21:50:38.612 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'DeebotCommand' changed from ON to clean
DeebotCommand.sendCommand(“clean”)
is correct right? cause I tried it without " "as well, but that didn’t work either.
It helps partially The response obviously is unexpected; so to see how exactly the response looks like, I need a TRACE log as mentioned (run
log:set TRACE org.openhab.binding.ecovacs
in the CLI console).
ok, that is weird, after setting the log, I’ve tried to reproduce it and out of nowhere it works like from a magic hand :D?
that’s very weird, the configuration is the same, nothing changed…
now it’s working fine, also if I deactivate the log again.
But I’ve discovered today a log entry coming from the ecovacs binding after a reboot.
It’s reproducible for me after every restart.
2023-05-14 12:49:27.309 [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
is there something interesting in it ? or do I need to set a log level again ?
greetings
My guess is this was a temporary glitch / failure in the cloud API. It’s a bit unfortunate since we can’t debug the error handling further now, but glad that it works now. Let.me know if you see the issue again.
That one is harmless and is due to the binding being built against a snapshot instead of the release version.
It’ll go away in 4.0 when the binding is shipped with the distribution
The issue happened a few time since then, but I didn’t find time to look into it until now.
The two things account and the bot are ONLINE and the only message that is written regularly is [scovery.EcovacsDeviceDiscoveryService] - Ecovacs discovery found 0 devices
.
When sending a command I see the line:
[TRACE] [vacs.internal.api.impl.EcovacsApiImpl] - E000<some ID>: Sending IOT command Clean with payload <ctl td="Clean"><clean act="s" deep="1" p="<some area>" speed="standard" type="SpotArea"/></ctl>
Even after a few minutes no other line is logged (except the “Ecovacs discovery found 0 devices”).
How do I trigger an auto empty? Sending the command trigger with the item as a switch doesn’t seem to do anyhting.
Item
Switch BasementDeebotAutoEmpty "Basement Deebot Auto Empty [%s]" {channel="ecovacs:vacuum:283f5c6e31:E07207894B09HDQJ0300:settings#auto-empty"}
sitemap
Switch item=BasementDeebotAutoEmpty mappings=["trigger"="Empty"]
Can you share a log of trying to initiate a trigger with the log level for org.openhab.binding.ecovacs
set to TRACE?
What you could try is making the item a String
one. This should make it work, albeit it’s kind of a workaround. I’ll think about a proper solution.
I tried setting as a string and nothing showed up in trace log, same thing as a switch to, it does trace out right if i send on and off.
A string item ought to work. Have you tried removing the quotes around the value?
Switch item=BasementDeebotAutoEmpty mappings=[trigger="Empty"]
Hello.
I have a problem connecting my Ecovacs Deebot Slim2 Series.
Handler EcovacsVacuumHandler tried updating the thing status although the handler was already disposed.
The Binding it self was super easy. The device was found via discovery but after Connecting i got the Error above.
I have no clue, where the problem is.
Could someone help?
It would be interesting too see the log entries before that error message. It suggests the binding crashed for some reason, but without the log for that happening it’s hard to tell why exactly.
Hi Danny,
Great work, I installed and set up the binding and it works right away. Deebot X1e OMNI.
Cheers Alexander