Ecovacs Deebot N79

This is on sale for $160 with code indicated here…

That is a great deal to bad I have robots now.

Just an update on the quest for an API.

I have been able to decode the app to server connection and found that;

  1. it connects to web services to get the userid from the email address
  2. it logs on via the web service to get a login token that it later uses in the xmpp stream (the controlling part)
  3. the xmpp stream has an interesting SASL key, but I found out how it’s build up
  4. there’s a stream of data/commands in XMPP in request/response type and some that come out-of-band.

in short; It WORKS!. I’ve been able to make a small java app that connects to the server and can send the ‘auto clean’ command and ‘return to charger’.
more commands exist, but I haven’t had the time to decode those and at the moment having some trouble with the out-of-band messages.

anyone willing to help out… you’re welcome to, I can share the findings/code so far…

KR, Albert


@Albert_Louw - I can likely help. PM me if you want.

1 Like


thanks for the offer. I’ll draft up what I have solar (5 json calls over https) and the findings.
right now there’s a few things I’m still puzzled by, the realm (resource) it connects to seems fixed but I have no idea where it comes from and the bots are an xmpp recipient with an idea that I can’t seem to find where it comes from (it’s fixed, but no idea on how it’s build up).

anyway, I think mail would work best;

couldn’t post the debugger output of xmpp… site complains about links :frowning:

Email sent.

Please keep me informed of the progress. Thanks.

Another update, quite some commands are now found and the code is working now with the async xmpp responses.
Even better, i have received information on the usb port from our local support. It is used for the firmware upgrades, which means it can be done by customers themselves, provided they have the firmware files.
(For dr9x, the latest firmware is 0.6.19 which i also received).

Now to see if there’s more to be found on firmware revisions and how to obtain them the correct way.

Is this something us non programers will be able to do?

If you know how tonhandle a usb stick, you’ll be ok.
It’s pretty much a trick with keycombo to get the device act as usb share on a pc, copy the firmware file and wait for it to process.
I’ll try the process later on when i have some time.

Can it be processed on a Mac?

I should think so, actually hope so as I work on Mac as well. I don’t figure it will be a problem, the vacuum will present itself as drive over usb (as with an usbstick).
but I’ll try anyway when I have a bit of time to play with it.

That sounds great. Keep me posted.

well, results of the firmware upgrade. not quite as expected;

did not work via;
Windows 10

did work via Windows XP (only old one I had lying around).

I did manage to pull the configuration system from the device, which shows custom voice files should be possible :slight_smile: it’s just a bunch of Flac files.
some basic config files are on the box, but not much else.
the time settings (time block), basic config for connecting to the right node and silent mode on/off…

it seems to have in total 16gb storage and the boot loader part (where the update goes has) 1 gb space, while the firmware is just over 1 mb.

will see if there’s more I can pull out of the usb interface.

1 Like

Some progress, I hope we actually can get it to at least start and stop a Auto mode. Voice command would be fantastic.


I have that part already. Start/Stop auto mode, get battery info, get device info. the voice part you are referring to will most likely come from the home automation system (like Siri with Apple).
At the moment I’m still digging into more commands and traces to see what else I can find, but I could build a working setup in java code to hook into i.e. homebridge. At that point it would be able to connect to Apple’s homekit.
Right now all tests have been done on an alive connection to the servers, what I haven’t tried is connect, send command, disconnect (i.e. to send the start command) and in say ten minutes send a return to charger command in a new session. all is in their architecture designed around one live session in which all happens.
most likely it will work, but it will also bring delays in the commands.

another part that’s not completed yet, is the initial authentication over web calls… I have half of them now in the code, but not all. And there’s still one variable (a number in the addressing of the devices that I can’t trace back to anything outside of the machine yet).
the devices are targeted with @<node/variable>, if the <node/variable> is wrong, it will not do a thing.

that’s the major question right now, how to let someone like yourself figure out what that number is, or how to obtain it from the server. It’s available in the device info command, but I can’t get that without addressing the robot properly first.

maybe for the fun of things, could you send me a S/N on the Botton of the device to see if the number actually matters ? (Don’t worry, I can’t control it, it’s protected on user level, one cannot control any device outside of it’s user…)

Sent in message.

ok, found it… your N79 is actually model DN622 which has a fixed value of 126… so the last unknown is simply the device type as stated in the manual and then a fixed conversion table :wink:

I was not able to pull much from your bot, but at least I know the firmware is 0.1.9 :slight_smile:

(iq to="" type="set" id="5111" from="")(query xmlns="com:ctl")(ctl td="DeviceInfo")(MID) v="xb"/)(/ctl)(/query)(/iq)

(iq to="" type="set" id="5112" from="")(query xmlns="com:ctl")(ctl td="version")(ver name="FW")0.1.9(/ver)(/ctl)(/query)(/iq)

(replace sn, and brackets for web view)

So there is still a chance of getting this to work. Thanks for the hopeful news.

Just picked up M88 and N79 models whole they were on sale recently. Can’t wait for a DH for these. Thanks for all the work so far guys!