Starting a new thread for continued development/support of the iRobot Scheduler App. The original thread has discussion of prior development and issues.
iRobot Scheduler is an application and device that enables local execution and scheduling of Roomba and Brava cleaning tasks in assistance with a Raspberry Pi running Dorita980 and Rest980. This application and device works with ALL WiFi enabled Roomba and Braava devices.
Highlights:
Complete step-by-step instructions for RPi and Hubitat configuration
Control multiple Roomba/Brava devices from a single RPi using multiple iRobot Scheduler installations
Roomba/Brava Device auto-creation; Device named based on user config in iRobot app
Pushover Notifications Start/Stop/Full Bin/Dock-Charging/Error/Battery Died
Advanced Cleaning Schedule for up to 10 cleaning times per selected days
Presence Schedule - auto start, delay and auto-dock
Advanced Options for non-900+ series Roomba/Brava devices
Roomba 900+ Series cleaning settings and Map
CleanRooms support for i7/s9 devices - clean specific rooms on the map
Dynamic Dashboard Tile
AppWatchDog2 Support
Dynamic Dashboard Tile:
Device Information page:
Special thanks to @aaron for permission to use his code to continue development/support of this application.
I think I found a small bug (?) when using Braava Jet (M6). I get the sense that the vast majority of people use this for vacuuming, not mopping--perhaps the code just hasn't been put through its paces with a Braava. Or maybe I'm doing something stupid.
Anyway, I noticed that, even though I've toggled "Notify when Braava's tank is empty?" to ON, I'm not getting any notification when the tank is empty (even when the iRobot app says the tank is empty). The mop device in HE changes the tank attribute to "missing" from "good". "Missing" seems like a misnomer because the tank isn't missing; it's just empty or very low on water.
FWIW, I have all the Notification toggles set to ON, except "notify when bin is full", since I presume that doesn't apply to a mop. I am getting the other normal notifications--e.g., "started cleaning", "stopped cleaning", "unknown state: stuck", etc.
As an aside, I noticed the UI says "pushover device" for notification. Does that mean I can't use other notification devices, like SMS/text? TIA....
To answer your last question, any device with capability notification can be used - I use the device created by the Hubitat mobile app to get push notifications.
When your Braava m6 mop reports tank missing (instead of empty), can you check the pi:3000/api/local/info/state JSON to see what the tankLvl and mopReady.tankPresent attributes show? It seems that the latter comes up false, so we declare the tank "missing" and don't check the level. I have an m6, but haven't used it much with Hubitat yet. Will see if I can reproduce the behavior on my end.
Thanks -- current code sends the "empty" notification (if enabled) when tankLvl is 0, but assumes the tankPresent is still true. It seems that the logic may need to be tweaked...
General reminder: if you have set a non-default port for the rest980 service on your rPi controlling your Braava, replace 3000 with the port you selected
I interpreted this to mean that I should go to a folder api/local/info/ on my rpi and look for a state JSON file. My pi noobness must be getting in the way because there is no api folder that I can find, unless it’s buried somewhere?
Sorry - this is an API exposed by rest980 - so you can put it in your browser address bar, replacing pi with the IP of your pi, and 3000 with your custom port (if not using the default). This would match the doritaIP and doritaPort you supplied in the App page
Sorry, not ignoring you on purpose. I took a look at that section of code (and played with my own Braava tank) - it seems like the original expectation/behavior was that it would report tankPresent: true with tankLevel:0.
However, yours clearly reports differently - and when the tank is removed, it reports false and 0 as well. My thought is to just combine the two as a state/notification of empty/missing
Yeah, your logic makes sense to me. I can setup a notification with RM using that logic or, if you prefer to integrate it into the app, I'm also happy to beta test for you/us. Either way is fine by me!
Yes, the 2nd one should contain my latest code. I think HPM uses the author from the repository.json, but I'll update my packageManifest to avoid confusion
Thanks, yeah in your app manifest I see "Aaron Ward" as the package author and David isn't mentioned anywhere, so was super confused which HPM package has the latest.
Additionally, when you click Done on the App page, it will try to run this query - if it hits an error (which seems likely from what you pasted, it should generate an error log: Rest980 Server not available: $e - where $e is filled in with the actual exception hit
Did some reading on the dorita980 project that supports this App - seems the process to get the robot password for the mqtt connection changed in the latest firmware (which of course applies to the J series)...