Roomba 980 Wifi Connectivity Reverse engineering

Is this working for you yet? Did you copy your password including “:1:xxxxxx:yyyyyyyy”? I was missing the :1: and had a similar result. I think your directories are correct, otherwise you would see file not found errors.

Also, you don’t want to edit ExecStart=/usr/bin/npm start

First post, just bought a 890 today for a good deal. I have followed the instructions and have gotten to this point. It would seem Im on version 3…anything available or anyone else try?

root@Server:/home/pi/rest980# npm start

rest980@2.0.4 start /home/pi/rest980
node ./bin/www

Looking for robots…
Robot found! with blid/username: #######
{ ver: ‘3’,
hostname: ‘Roomba-#######’,
robotname: ‘Roomba’,
ip: ‘10.0.0.105’,
mac: ‘#######’,
sw: ‘3.1.0’,
sku: ‘R890020’,
nc: 0,
proto: ‘mqtt’,
cap: { ota: 1, eco: 1, svcConf: 1 } }
/home/pi/rest980/node_modules/dorita980/lib/v2/local.js:30
throw e;
^

Error: Connection refused: Not authorized
at MqttClient._handleConnack (/home/pi/rest980/node_modules/mqtt/lib/client.js:827:15)
at MqttClient._handlePacket (/home/pi/rest980/node_modules/mqtt/lib/client.js:315:12)
at process (/home/pi/rest980/node_modules/mqtt/lib/client.js:257:12)
at Writable.writable._write (/home/pi/rest980/node_modules/mqtt/lib/client.js:267:5)
at doWrite (/home/pi/rest980/node_modules/readable-stream/lib/_stream_writable.js:406:64)
at writeOrBuffer (/home/pi/rest980/node_modules/readable-stream/lib/_stream_writable.js:395:5)
at Writable.write (/home/pi/rest980/node_modules/readable-stream/lib/_stream_writable.js:322:11)
at TLSSocket.ondata (_stream_readable.js:642:20)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at TLSSocket.Readable.push (_stream_readable.js:211:10)
at TLSWrap.onread (net.js:585:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! rest980@2.0.4 start: node ./bin/www
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the rest980@2.0.4 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2017-09-10T03_17_34_271Z-debug.log

Just curious, am I suppose to be able to still see any map generated in the iRobot Home app if I have this implemented (keep alive set to yes) for SmartThings integration. I used to be able to see the map generated when I first implemented this, but now all I get is “map unavailable”. Any idea?

Ok so I am new to all of this and just got a roomba980. My knowledge of how to do all of this is VERY basic and I can do simple tasks like add a device handler with instructions. Is there a device handler for the 980 yet? If there is a way to intergrate into smartthings can someone help? Even willing to offer money for time.

Hi,
I see this is the device handler, right?
Are you also using a smartapp or did you just create a new device from this code?

iRobot has added a IFTTT channel.

You can now start, dock, pause and cancel a cleaning!

1 Like

I have this successfully setup, but the information doesn’t poll automatically. I have to open the device and hit the refresh button. Is anyone else having this issue?

Everything is setup and working beautifully. Thanks for the great work. I saw you posted back in July @ady624 that you haven’t done much work on the button logic so this may be a known issue but my roomba980 is showing as “Not On Dock” when it is in fact docked. I get reports in the recent history showing docked at random times. Not a big issue but I’m wondering if it’s something that’s possibly my fault??

I have been unable to get this to work and I’m not sure what’s going wrong. I have rest980 running on a raspberry pi. I can get to the map from my browser and that is definitely working.

I have the DTH installed. All I get in the DTH is error, though. I’m pretty sure my blid and password are correct. (including the :1:).

Should I give up on this and just create a simple virtual switch > IFTTT? I really wanted to have a DTH that polled status and stuff, though.

Is anyone still using this DTH? I tried this as I wanted more flexability in scheduling the roomba i7+ I have. I noticed the tiles were not being refreshed on the scheduled polling interval and it drove me nuts. Over the past few days I deciphered the majority of the DTH and managed to find out what was wrong with the local api polling. At least I think I have. If others are having this issue, I’ll post the DTH to github after some more testing.

EDIT: Also, forgot to mention, thank you @ady624 for the DTH mods and the code mod to dorita980 that allows the Roomba i7+ to be discovered.

I forked @ady624’s repo on GitHub and add the changes to fix the local api polling. In my testing, the manual refresh button was correctly changing the status, but the polling at the interval specified in the DTH preferences was not calling the polling callback routine correctly. I plan on trying to tackle the resume and pause button logic I and others have noticed. Just an FYI, the setup I have is pretty much the same as @ady624 with some minor differences as I didn’t follow his write-up (didn’t know it existed until I reread the entire topic). Also, I don’t even know if we’re keeping the Roomba as the wife hasn’t been sold on it yet (hoping I can turn her around).

I had a tiny bit of free time and decided to look at the resume, pause, and dock tile actions. I think I’ve fixed this as well. Let me know if you notice any issues. The latest code (v2.2) should be in the repository I posted prior.

EDIT: Added notReady=2 to the not ready codes.

i saw you pick this back up so i decided to give this a shot again, but this is the error i get

something went wrong: java.lang.SecurityException: Endpoint https://irobot.axeda.com/services/v1/rest/Scripto/execute/AspenApiRequest?blid=XXXXX644228509XXXXX&robotpwd=:1:XXXXX:XXXXX&method=getStatus is blacklisted

i know my blid and password are correct because it works in homebridge/kit

I received the same thing when I tried the cloud based functionality. I gave up and used the pi based setup I already built. I haven’t figured out why it’s blacklisted but I think it is a smartthings side setting and can’t be changed.

Edit: I think I was wrong in my assumption above. It appears that the axeda url is no longer active. I’m pretty sure this was an old implementation and they’ve updated the api to point somewhere else. I found a couple of new api urls and tried a simple swap in the DTH code. It didn’t work. I’m thinking this will require looking through the dorita980 code, finding the correct url, and if needed, updating it and the paths for the various actions.

For anyone out there still using this or trying to use. Local processing still works but the URL /api/local/info/state is no long a valid endpoint (at least for Firmware Version 3.2.47-77). /api/local/config/preferences contains the same data points, though I still want to clean it up a bit when I have time…

Hi, does anyone found a way to do the initial wifi pairing configuration without using the iroomba home app? Bests

just got a 980 and got this running. Can’t tell how much value there is in this compared to just using webcore and IFTTT. Cool nonetheless!

Hi,
Does anybody know how to add two Roomba’s? I have one roomba working but don’t know how to add second.

I have two running. Required two instances of the rest980 node server, two devices, and two copies of the device handler