iRobot 9xx on openHAB

Adding mqtt to the binding list in the configuration file will install it straight away. OpenHAB is smart enough to see changes in the config files and apply them in runtime (sames as for things, items, rules, sitemaps …).
That you do not have anything in the configuration files is because you probably did add the previous bindings through PaperUI. Configurations via UI are partially saved in jsondb. If you add something else in the configuration files, it will be summed up.
Personally I use the textual configuration as I have impression having a better way to quickly change my configuration and the feeling of knowing what I did configure, instead of having a UI doing some magic behind the scenes. Here’s a page which explains the differences: https://www.openhab.org/docs/configuration/

That is the weird thing, nothing I add in the addons.cfg file, is added as a binding.
I did check the installed bundles in karaf console and it is also not there.
I’ve added the sonos and mqtt binding. But both not installed. Something seems to be wrong with my Openhab installation? for 3 days ago, I was able to instal them via PaperUI as well, and now, that option is gone… Don’t know why.

Wow, I finally get the binding working now. Is it active now.

The only thing is that it is the following: Status COMMUNICATION_ERROR

openhab> log:display | grep roomba
10:56:52.530 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'irobot:roomba:192_168_1_160' 
changed from UNINITIALIZED to INITIALIZING
10:56:52.592 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'irobot:roomba:192_168_1_160' 
changed from INITIALIZING to UNKNOWN
11:50:31.728 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'irobot:roomba:192_168_1_160' 
changed from UNKNOWN to OFFLINE (CONFIGURATION_PENDING): Authentication on the robot 
is required
11:50:42.519 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'irobot:roomba:192_168_1_160' 
changed from OFFLINE (CONFIGURATION_PENDING): Authentication on the robot is required to    
OFFLINE (COMMUNICATION_ERROR): java.net.ConnectException: Verbinding is geweigerd 
(Connection refused)

No he is telling me the following:

Status: OFFLINE - CONFIGURATION_PENDING Authentication on the robot is required 

But pressing the home butting for 2 seconds on the robot does not help

I have installed it yesterday and had the same problem.
It has worked ones I put the robot on the charging station.
Now I have pressed again the home 2 seconds and it has worked.

@Sonic Thanks for this awesome binding. I hope this will be available soon in the official Bindings so every user can install it via the PaperUI.

I did press the button while he was in the charging station. Did flash blue and play the sound. Now after doing notthing for a day an a few cleaning jobs further, the status is now : UNKNOWN. Don’t understand why… I do have de Roomba I7+. Is this maybe not supported?

Delete it and readd it.
I think after a few hours he is stopping to check for the password.

Still status Unknown. I did remove and uninstall the binding, restart openhab and checked if it was completely gone, then install it again and restart openhab, add it as a thing, but still status unknown.

What does the log say?
Is there any error messages?

Yes, now i see the following error:

14:29:26.703 [ERROR] [.binding.irobot.handler.RoombaHandler] - java.net.ConnectException: Verbinding is geweigerd (Connection refused)

And after pressing Home button for 2 seconds (blue lights will flash with some tones playing" i get the following log:

15:06:57.017 [INFO ] [ome.event.ThingStatusInfoChangedEvent] - 'irobot:roomba:192_168_1_160' 
changed from OFFLINE (COMMUNICATION_ERROR): java.net.ConnectException: Verbinding is 
geweigerd (Connection refused) to OFFLINE (CONFIGURATION_PENDING): Authentication on the 
robot is required

OK now I am out. I think we need help from @Sonic

Same for me :slight_smile:

Is it for the i7 another button to press or something?

Also tried the get-roomba password python script in dorita980, but also without succes.

events.js:183
  throw er; // Unhandled 'error' event
  ^

Error: connect ECONNREFUSED 192.168.1.160:8883
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)

Hello!

  1. Make sure there’s no mobile phone on the same network running an iRobot app, this will occupy the only robot’s local connection available. iRobot doesn’t support more than one local connection simultaneously, thank iRobot Inc for that.
  2. Sometimes the robot just gets stuck and stops accepting connections. Reboot it in this case.
1 Like

The binding has been officially submitted to OpenHAB 3. Hurrah!

5 Likes

@nodnarb Hello! I remembered about your requst to add some support for room IDs for i7. To tell the truth i don’t see how this could be done in entirely user-friendly manner for directly exposing in BasicUI /HABPanel, so we can only go technical.
Will it be acceptable if i introduce some String write-only channel, where you could write comma-separated list of regions to clean? The binding would then form appropriate command.
You would then be able to define scenario buttons in the UI.
And what to do with user_pmapv_id ? Should it be a part of the same request, like:
“201006T004121:24,1,19” ?

@falkena I am also working on your wishlist you expressed earlier in the PR discussion. Still interested? IIRC you also have i7. By the way, does discovery work correctly for this model ?

Hi! I agree that a string channel sounds like the best way to do it. And yes, user_pmapv_id needs to be in every request that is sent as well as pmap_id. They should be user-defined because both can change when floor maps get updated.
Thank you and let me know if there’s anything else I can provide.

Hi @Sonic, yeah, i’m still interested on raw json. There is a lot of to be discovered :slight_smile: Sadly, i can’t say no much about discovery for I7: I haven’t enough time to update my test system.

Kind regards,

Alexander

EDIT: @Sonic Autodiscovery for I7 works, Thing is online too. Just an idea: May be it make sense to group channels. BTW: I7 has an noise number additionally to RSSI and SNR

Hello @Sonic and others,

I wanted to report my experience with a IRobot e5:

  • auto-dicovery did not work;
  • however the password autoconfiguration worked perfectly (so nice !);
  • commands and other items seem to work perfectly as well.

Now there is a minor issue that bothers me: when the iRobot thing is activated, the e5 leds remains ON all the time. I believe that this is because the robot is under constant monitoring (i.e. constant connection to the MQTT server ?).

Would there be a way to avoid this behavior ? For instance I am not interested about having a continuous update about the state of my machine when it is docked (in that case an update every hour or so would be enough). However, I would like it to be reactive when I send a command and have continuous monitoring when it is active (i.e. on mission). Do you think this is achievable without this kind of “continous monitoring” ?

Any way and big thanks for this wonderful add-on !

I am on the latest OH3 nightly build and my roomba (980) is autodicovered, but then the story ends. after adding it as a thing i only get

image

It seams that the passwort discovery is not started. I press the appropriate Button on the roomba.

Any ideas on that?

980 running nice, i7 discovery working, communication/password not working

i could maybe help, but have -50 java experience, but basic programming/scripting thanks to working in IT over a decade now

text if there is anything i could help with

i used https://github.com/NickWaterton/Roomba980-Python to get the password for my i7. (directions here https://github.com/NickWaterton/Roomba980-Python#how-to-get-your-usernameblid-and-password)

To break it down for anyone

  1. download & install Python (https://www.python.org/downloads/windows/) Note: make sure you check to install in “PATH” to make things easier
  2. download Roomba980-Python and extract it to a easy to get to directory (https://github.com/NickWaterton/Roomba980-Python/archive/master.zip)
  3. open a command prompt and got to the directory you extracted Roomba980-Python to (example “cd C:\Roomba980-Python”)
  4. change to subdirectory “roomba” (example “cd roomba”)
  5. enter this command “python -m pip install appdirs numpy olefile opencv-python packaging paho-mqtt Pillow pyparsing six”
  6. now enter getpassword.py (if you dont no ip of roomba) or getpassword.py -R roombaIP (if no your roomba ip)
  7. ones you get your password add this (irobot:roomba:roomba960 [ ipaddress=“roomba ip”, password=“roomba password” ] ) to your “home.things”