Ecovacs Binding

Looking through the sources (and PRs) in the sucks project, it seems that one must implement both XMPP and MQTT communication to their servers, depending on the device model?
What model do you have? I have an Deebot 950, which seems to talk MQTT.

1 Like

Yes I also noticed that there is some variation in the libs, but I did not look further into it.
I got a Deebot 901 (Non-OZMO) and a N8 Pro with station :slight_smile:
Where did you find out if your robot uses mqtt?

EDIT: Found it “static isDeviceClass950type(deviceClass, isMQTTProtocolUsed = true)”

Finished the login process for now. Also did some small cleanup, but still far from finished. Hopefully I will be able to make the first request for an action for one of my devices tomorrow.
Otherwise I will only have time next weekend.

Next step will be some cleanup + requesting devices. After that we should be able to start implementing basic commands already.
Once thats done in my POC we can think about porting everything + cleanup/code structure changes for the binding. :slight_smile:

Requesting devices works as well now :slight_smile:

1 Like

Just a small update for everyone interested:
@maniac103 already added basic mqtt connection for devices 950 and newer. Also a basic binding was started.


Would be a great achievement if this will get a binding in one of the next milestones. Thanks for your work and for pushing this forward.

What device do you own, Stefan? I think i have the binding in decent shape for Deebot 950 (and similar) already. Newer devices should mostly work as well, but everything older than that is not supported for the moment. Supporting the D901 is still on the to do list (since @jptaszyk owns that one meaningful testing is possible), but older devices use completely different communication (XMPP instead of MQTT), so I hope somebody else will be able to contribute that part.

I have an OZMO Slim 10. Does the binding work with it, or can I test it?

If I believe the list found here, your device is similar to the 901 - that is, unsupported as of now, but on the list to be supported next. From that list

  • REST/MQTT/JSON should work as of now
  • REST/MQTT/XML comes next
  • XMPP/XML is what I’d hope somebody else to do

If you’re willing to help with implementation, you can give it a try with this binding jar. I’ve added your device to the internal list of known devices there. After installing it, you need to do the following steps:

  • do feature:install in Karaf console
  • do log:set TRACE org.openhab.binding.ecovacs in Karaf console
  • create API thing, let it discover the device
  • create device thing, link items to the channels (ideally via UI)
  • start it via app, let it run a clean cycle (so the log collects the events sent by the device)
  • try to send it a start cleaning command, see whether that works (most easily done via UI, same as the below)
  • try to send a set cleaning power level command, see whether that works
  • try to send a set mopping water amount command, see whether that works

… and after all of that, please provide the produced log, which would then tell me about

  • the XML event message format
  • commands that maybe are not correct
    After reviewing the log and adapting the code for anything found there, we may need to do a few iterations of the same procedure.

In case anyone wants to have a look at the code, the binding above is built off this branch


Thank you for the interest :slight_smile:
And also sorry for the delay of feedback from my side @maniac103 .

We got a new dog puppy and it takes so much time :sweat_smile:
I arranged with my girlfriend so I get some hours this evening to look into 901 support an deine testing with my n8 pro

Did you forgett to push your last version?
AbstractNoResponseCommand is missing after I pulled your changes into my repository :frowning:

Fixed, I forgot to git add.

1 Like

I own a pro 930 and one 920 device

The 930 Pro is an XMPP device, so that one is unsupported for now. The 920, on the other hand, should fully work with the binding I posted above.

i will do the testing during the week, and can send the logs :slight_smile:

Requesting is currently crashing for me. Is firmware that important?
I would suggest we put a default value of “UNKOWN” or null if we cannot get the version.
But I am still investigating, whats happening.

Requesting what exactly? The firmware version? I guess it isn’t. For the JSON models we can easily add it on receiving the first event; I’ll need to double check @Hamlet’s logs to see whether/how this would work with the XML models.

Oh sorry, it should have been “requesting Firmware”.
Will look more into it today.

The Binding for the 920 works like a charme. actually i have some issues with the logs. When i get the logs working again, i can provide the information. thx for the work.

Maybe someone can add the xmpp as well :slight_smile:

1 Like

With the patient help of @Hamlet and @Elrusso I managed to add support for XML-over-JSON and XML-over-XMPP devices as well :slight_smile:
I created a marketplace release for the binding: click