Setup: setup is the same as it was before. You can use either the cloud or the local API. For more information see the original thread.
Compatibility: 900/i/s series, and probably Braava (only WiFi models).
Version history:
1.5: Fixed healthcheck, additional tweaks to state logic
1.0: Initial release
New features:
Rewrote app to use standard capability robotCleanerMovment for state display and buttons.
Because this capability is proposed and doesn’t yet support automations, I’ve used the switch capability, which also displays on the dashboard view
Roadmap:
We will try to add the following features
Set cleaningPasses (one, two, auto)
Set carpetBoost (auto, performance, eco)
Set edgeClean (on, off)
Set alwaysFinish (on, off)
However, although I figured out finally how to make custom capabilities in ST, there are some unresolved problems with the Roomba API, so I may only be able to implement #3 and #4.
Nice Work, just installed and giving it a test run (running locally). robotCleanerMovment UI is a surprise, more aesthetically pleasing than I expected, IMHO.
I will be interested to see the push notifications for errors.
Any thoughts on adding custom capabilities like consumable status so that it is visible in the new app? Bin full should present an error message but the classic UI also displayed run stats too. Not sure if the time and effort to create the custom capabilities is worth it, just posing the question.
Interesting observation: I received a low battery error from the iRobot App but nothing from ST. After review, the last successful API call reported 13% battery, since that call, no response from the API. Apparently Roomba shuts off Wifi at a certain point so status is unknown, ST still thinks it is cleaning. Wondering if we can build in a timeout feature, no response in x min, roomba_value = error, not sure if that's possible.
Change bin-full response from reserve to alarm, because the reserve text for robotCleanerMovement has changed to indicate scheduling, which this doesn’t support outside of the built in automations. Unfortunately this means that all errors, including bin full will just show “error” in the UI. Please enable push notifications if you want to know the specific error code. At some point I may build a custom capability text field for bin status or for the error code, but not this minute.
Bug fix for when API is not responding i.e. Roomba is offline or wifi is disabled, this will return robotCleanerMovement(powerOff) which will show “off” in the UI display so you know its offline
Explanation of movement modes from the UI:
Idle: paused
Cleaning: cleaning
Power off: offline
Error: some kind of error including bin full
Docking: returning to dock
Charging: currently charging
After about 30mins of cleaning, I received a wheel stuck notification from the iRobot App; nothing from ST. Double checked and preference is set to send notifications. All device notifications allowed in ST settings. Any ideas?
The button says charging always. If you are actually charging the area where it says cleaning (the status area) will say charging instead. The text on the button never changes, this is the correct behavior.
Can you please try starting a cleaning and then flipping the robot upside down so it is stuck and see if that triggers a notification
The button is supposed to say ‘charge’ probably, it’s just weird english.
You can’t change the text, the button sends the command setRobotCleanerMovement(charging)
Where charging is the mode.
So don’t worry about it, that’s working as designed.
I am going to change the logic though so the status says returning to dock until it actually reaches the dock, then it will poll again and confirm it reached the dock before it displays charging in the status field.
Currently, if you press the charging button, the status will change to charging immediately, even before it reaches the dock.
@fieldsjm were you able to get push notifications to work?
If they do not work, it means that SmartThings is not allowing me to sendPush from a DTH like I can from a SmartApp.
No alerts. I do see error state in the UI. For what its worth, I have 2 different models (960 and 890), both work with the handler but neither send alerts. (Wanted to make sure it wasnt a firmware issue).
In this case I would have to design a custom capability to display the error message but it’s low on my list of priorities. First I have to figure out what to do about the device going offline.
I have a new version on the GitHub (version 1.1) where I attempted to implement a healthcheck. If there is no hub response it should show the device as offline. Try it and let me know if it works for you.
The interval for the health check is twice the set polling interval. So please wait a bit after the device has gone offline to see if it marks it offline in ST.