[Deprecated] Thinking Cleaner 2.x (Roomba Control)

If you have a Roomba and want it to clean your home with the magic and control of Smartthings, this is for you! Using this device type and smart app you can integrate your Roomba with the Thinking Cleaner wifi module and control when and how it cleans your house.

This original Device Type and Smart App was created by @sidjohn1 but due to lack of support, I have been requested by the community members to continue my improvements and customization in a new thread. I will continue attempting to support this Device Type and Smart App and only ask that if you appreciate my efforts please donate to my preferred local charity as a thank you:

You will need to have the Thinking Cleaner wifi module installed on your Roomba per the below link.
Thinking Cleaner:
http://www.thinkingcleaner.com

The module was built for the 500/600 model but if you remove from the housing it will also work on the 700/800 model per Thinking Cleaner. If you have an 700/800 model the below links are for the 3d printed cover:
3D Print Cover:
_http://www.thingiverse.com/thing:1219169_
Purchase 3D Printed Cover:
_Thinking Cleaner 800, iRobot Roomba 8xx DIY cover (ZZA8W9MS7) by ThinkingBits

Once you have installed the Thinking Cleaner wifi module and configure per instructions, below are the Device Type and Smart App for Smartthings integration.

GITHUB INTEGRATION HELP

PLEASE DO NOT CHANGE THE NAME OF THE DEVICE TYPE OR THE SMART APP AS IT WILL CAUSE PROBLEMS THAT MAY BE DIFFICULT TO TROUBLESHOOT. IF YOU DO MAKE CHANGES TO THE CODE FROM GITHUB, I MAY NOT BE ABLE TO HELP SUPPORT IT FOR YOU.

GITHUB REPOSITORY
Owner: pmjoen
Name: SmartThingsPublic
Branch: master

MANUAL INSTALLATION HELP:

MANUAL INSTALLATION
DEVICE TYPE:

SMART APP:

DEVICE IMAGES:

Once you have the Device Type and Smart App working, you can use any Smart App to use the Roomba as a switch On is clean and Off is Dock. For the full flexibility of your needs you may want to use CoRE (Community’s own Rules Engine).

CoRE LINK:

Additional improvements and bug fixes have been supported by:
@pmusselman, @Benji, @kolosy and others
Thank you for your support.

7 Likes

Thanks for you hard work on this. My donation has been made and glad to donate to the Ronald McDonald House Charities!

2 Likes

Donated! Thank you very very much to @pmjoen for all his hard work on maintaining and updating one of the most important (to me) SA/DTHs on my list!

1 Like

I have the device type installed and can control the roomba. I did have to manually edit the ip address into the settings via the instructions on the old thread. My problem is the smartapp doesn’t recognize the device, it says “there are no devices of this type.”

Also, I did have an issue with the old device type from sidjohn1 where I wanted it to clean when everyone left the house, so I set it up as a switch to turn on when everyone left the house. It would turn on to clean but once the battery was low it would go to dock but as soon as it docked it would turn back on. It would continue to do this until the battery died. Will this new device fix this issue? Does anyone have an example of how I could accomplish this?

Seeing this error line in IDE Live Logging when trying to turn the roombas when the mode switches to Away. Thoughts?

groovy.json.JsonException: Lexing failed on line: 1,
column: 1, while reading ‘<’, no possible valid JSON value or
punctuation could be recognized. @ line 111

I think I figure this out. I noticed on the IDE that the cleanmode value was not set (i think it was a required field) even tough in the app it was set to clean. I rest the value to MaxClean in the app and that seem to resolve the issue.

Having a lot of trouble getting this connected.

I’ve got @pmjoen 's new smart app and device type installed.

I’ve confirmed my IP address is correct. My Device network ID was not auto-populating (an issue I had experienced with the old smartapp/device handler) so I manually converted my IP to hex and plugged that in.

I can not get the device in ST to connect. I even factory reset the thinking cleaner and reinstalled everything. I’m fully connected to the iOS app with full functionality.

The IDE logs are not showing any errors.

Mystery!

Are you able to control it with the standard Thinking Cleaner app?

Yup. Full control.

@pmjoen Am I following the correct steps to set this up?

  1. Install the Thinking Cleaner DH and Smart app
  2. Create a new device in the IDE using the DH
  3. Assign the local IP in the preferences of the device in the IDE. This can also be done in the device in the ST app
  4. If it’s not already populated, calcute the Device Network ID by converting your local IP:port to a base 16 Hex value
  5. In the ST app find the Thinking Cleaner smart app and select your device for proper polling

Do I have these steps right?

You assign the IP address and port in the settings of the device in smart things, I have never done it in the IDE nor have I had to convert to HEX.

I will look in the other thread to find the info on converting IP to hex, as for the dock and restart, there is a thinking cleaner setting that after dock and charge the roomba starts to clean again. Can you confirm the model you have?

Called “Max Clean”.

Everyone, please also make sure you go to the webpage for the IP on your Thinking Cleaner module directly and make sure it’s configure properly with the right model etc. So if your Thinking Cleaner module gets an IP address of 192.168.100.23 for example, while you are on the same network (for the most of you) go to http://192.168.100.23 in your browser.

Unfortunately I can’t get screen shots right now.

TROUBLESHOOTING UPDATE

Just wanted to add the info on updating the Device ID if it is not automatically converted by the application.

The device network id is required for smartthings to communicate to any LAN device. The device is coded to set this automaticly when the device is installed or updated. Ultimately there are 2 ways to get this set if it is not.

  1. Change the IP address of your roomba device in smartthings to something else, then change it back to what is is. If this is successful https://graph.api.smartthings.com/ide/logs will display the device network id as the codes runs (yes that page is live only if you open this page after making the change, there will be nothing to see). Confirm in the IDE device type settings that a value exists.

  2. Manually calculate the device network id from the IP address. (I know this is dumb, but this is just how smartthings works with LAN devices) To calculate the device network id from the IP address you have to convert each octet in the ip address from base 10 (Decimal) to base 16 (Hex). As an example 192 converts to C0 and 168 converts to A8, so an IP address of 192.168.0.10 converts to C0A8000A. The default port on is 80 this converts to 0050. Assuming your thinkingcleaner IP address is 192.168.0.10 and has the default port of 80 your device network id would be C0A8000A:0050.

Below is a link for converting tool:
http://www.binaryhexconverter.com/decimal-to-hex-converter

_As a side note, if your thinkingcleaner IP changes so does your device network id and your device will stop working. This can occur if you do not make your Thinking Cleaner ip address static and instead using DHCP to dynamically assign IP address. I would ensure your thinking cleaner gets the same IP every time by making it static. _

For people who are having trouble getting the smartapp to show the list of roomba devices - I had this issue and did this work around:

Change in line 56 of the smartapp code: “device.ThinkingCleaner” to “capability.Switch”

Then the smartapp will show a list of every switch in your house - obviously don’t select something that is not a Roomba / Thingking Cleaner device!

Once you select your thinking cleaner roomba device it works as normal.

1 Like

@pmjoen -

Looking at the original code for the input device.ThinkingCleaner - I have no idea how this ever picked up the thinking cleaner device type, even with the old app and handler. The Smartthings docs do not cover picking up devices other than using capabilities.

Any ideas here?

Adam,

The line in the code allows selection of a device type with the

	section("Select Roomba(s) to monitor..."){
    	input "switch1", "device.ThinkingCleaner", title: "Monitored Roomba", required: true, default: false, multiple: true, submitOnChange: true

This “device.ThinkingCleaner” checks your hub for a device using the Thinking Cleaner device type. Changing that to capability.switch looks at all devices with the (capability “switch”) in them. Changing the name of the device type will cause this to not find any devices.

Here is the documentation:

http://docs.smartthings.com/en/latest/smartapp-developers-guide/preferences-and-settings.html#using-device-specific-inputs

Thanks for this - I had no idea!

Anyway I’ve found the problem!!

The doc says: “If there are multiple Device Handlers with the same name, the first Device Handler found will be returned. Only the name of the Device Handler is searched for; namespace is not considered.”

I still had sidjohn1’s version installed but no longer linked to the roomba. Deleting it fixed the issue.

Hope this helps others

Can someone confirm if these are the settings in the thinking cleaner settings that are needed to let smartthings to completely control the start, stop and dock of the Roomba? I’ve also disabled all schedules on the the thinking cleaner as well as the Roomba itself.

You may need to have the “Keep Awake” setting on, also, when did you buy your 800 series?