[Under New Management] iRobot Scheduler

@lewis.heidrick @TechMedX Good to know, I've gotten it installed and working. All seems fine at the moment. Thank you!

2 Likes

I've picked up some development on this app/driver on my fork, with Aaron's blessing -- see this post (#189): [Under New Management] iRobot Scheduler

So far, my focus has been on integrating the "rooms" capabilities of roomba i7/s9 models -- but LMK if you run into other issues, I'll do my best to address them.

2 Likes

hey dkilgore90, thanks for your work thus far.

I don't think I've done anything differently from a previous version, but it seems adding and configuring the app does not add the Roomba device automatically. It doesn't seem like I am able to add this as a virtual device either after the fact.

Hmm - it should auto-create the roomba device when you click the Done button on the App page. Agree that manually creating a virtual device and assigning the driver won't work, since it requires the parent/child relationship between the App and Device.

If this is not the case (you have stated as much), I would suggest clicking the Done button once more on the App page, then check the Past Logs for your hub for any errors.

1 Like

Thanks for your prompt reply on Christmas Eve! I didn't expect anything. I'll take a look!

Strange, so I can see that it can't create a child device when setting it up. However all my info is correct, it works under the previous fork of this app. To clarify it's an i8+ (basically an i7+ just has a bigger battery)

app:3282020-12-24 01:21:30.190 pm erroriRobot cloud error.  java.lang.NullPointerException: Cannot invoke method sendEvent() on null object 
app:3282020-12-24 01:21:18.509 pm warnDebug messages set to automatically disable in 15 minute(s).
app:3282020-12-24 01:21:18.492 pm warnRetrying updating devices in 30 seconds.
app:3282020-12-24 01:21:18.491 pm erroriRobot cloud error.  java.lang.NullPointerException: Cannot invoke method sendEvent() on null object 
app:3282020-12-24 01:21:18.311 pm infoNext scheduled cleaning: Friday at 10:30 AM, rooms: default
app:3282020-12-24 01:21:18.309 pm debugrooms: null
app:3282020-12-24 01:21:18.308 pm debugtime: 10:30
app:3282020-12-24 01:21:18.280 pm errorCouldn't create child device due to connection issue.
app:3282020-12-24 01:21:17.819 pm infoInitializing iRobot Scheduler...scheduling jobs.

Interesting. I would suggest adding ${e.message} within the quotes on line 618 of the app code, so that we can include the exact exception being caught in the log message.

1 Like

Ok, so this is the error message:

Device type 'Roomba' in namespace 'roomba' not found

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:05.520 am [warn](http://192.168.1.220/installedapp/configure/330)Retrying updating devices in 30 seconds.

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:05.518 am [error](http://192.168.1.220/installedapp/configure/330)iRobot cloud error. java.lang.NullPointerException: Cannot invoke method sendEvent() on null object

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:05.336 am [info](http://192.168.1.220/installedapp/configure/330)Next scheduled cleaning: Monday at 10:30 AM, rooms: default

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:05.333 am [debug](http://192.168.1.220/installedapp/configure/330)rooms: null

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:05.332 am [debug](http://192.168.1.220/installedapp/configure/330)time: 10:30

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:05.292 am [error](http://192.168.1.220/installedapp/configure/330)Couldn't create child device due to connection issue. Device type 'Roomba' in namespace 'roomba' not found

[app:330](http://192.168.1.220/logs/past#app330)2020-12-26 09:53:04.839 am [info](http://192.168.1.220/installedapp/configure/330)Initializing iRobot Scheduler...scheduling jobs.

Edit edit: Yes I see now. Line 615 of the app should have dkilgore90 in it.

Or the device driver should have roomba as the namespace.

ah, yes -- I missed that when I made changes to not conflict with the prior versions -- thanks for reporting, I'll fix this!

Fixed in PR #6

I was running the pre-forked version and noticed that I got no tiles during an internet outage, so checked the code and saw that it pulls the images hardcoded from the original github account.

Then I noticed you addressed this in:
1.1.7 - add cleanRoom command and option to use local files for dashboard tiles

I'm trying to configure this, but it seems to be incomplete:

2020-12-31 10:00:30.600 am errorgroovy.lang.MissingMethodException: No signature of method: user_app_aaronward_iRobot_Scheduler_109.getImagePath() is applicable for argument types: () values: [] Possible solutions: getImage(java.lang.Object) on line 202 (getImagePath)

I only installed the app and device, so where do the local images go, does this function auto-resolve, or do I need to set up a static webserver on the Dorita980 device (my raspberry pi which runs that and PiHole)?

Images would be uploaded to the hub's "Local Files" storage.

For the MissingMethodException, double check that you have app version 1.3.7 or higher - this has the required method (and preferences toggle) to select "local" images. Note that this then only displays images on local dashboards -- if you put the tile on a cloud dashboard, it won't display

I uploaded the png files via the File Manager, it doesn't seem to have helped though.
The app and driver are definitely up to date, I removed and re-installed both from your repo.
I am no longer getting the MissingMethodException, just no icon.
I verified that the icon shows if I set local images to off.

So I was super exited to get this set up. Then I ran into this. I'm not sure what it means.
rest980errors

Was running the old version and went to upgrade to the new version you're supporting but can't get past this and nothing meaningful is showing up in the logs. It creates the roomba in devices each time I try but I just get a spinning circle in the top that never lets me exit the app after I click done. I can control the Roomba from the url to the Dorita980 server.

image

image

Looks like it's getting hung somewhere in the RoombaSchedule() function... I'm guessing in the while loop at line 501 or 514. I'll take a closer look at this -- I think there's a mismatch in the day of week indexes, with the original assignments using 0-6, and the loop using 1-7. You could try setting the schedule to a day other than Sunday in the meantime.

As an aside, looks like you have an array of Strings for your rooms - I haven't found a way to get the "names" of rooms from the Roomba Maps -- so this should be the raw "regions" JSON as described in the dorita980 documentation

Changing only the day resolved the issue. I'll look through the documentation for the room mappings though. I should mention though that I didn't type in the rooms. I just clicked in the space and they popped up where I could click them.

@markbellkosel84 -- googled the error message and came up with this npm issue, or maybe a permissions problem needing a privilege escalation (sudo)?

I had actually come across this when I was trying to figure it out. Only thing is, I have updated npm already to the version they said doesn't do it. I also tried sudo as well.