I am going to be a beta tester in the USA for the Roomba Wifi Remote that is going to be available at http://www.roomba-wifi-remote.com/ . The developers are sending me the device soon.
Thus I am very eager to research and develop a plugin for Roomba, similar to the Nest Plugin. Thank goodness API should be easier to get for Roomba then the elusive API for Nest.
I am looking for any pointers and tips to help get me started, so please chime in!
Cool! If their embedded controller ran Linux and had USB, you could possibly add a webcam to it, and use pan/tilt/zoom to drive your camera around the house, initiated by motion detection or just making rounds like a mall cop.
Or make a “Roomberry Pi” project to do this instead of their module. Fun fun fun…
[quote=“watou, post:2, topic:174190”]Cool! If their embedded controller ran Linux and had USB, you could possibly add a webcam to it, and use pan/tilt/zoom to drive your camera around the house, initiated by motion detection or just making rounds like a mall cop.
Or make a “Roomberry Pi” project to do this instead of their module. Fun fun fun…[/quote]
Well… this blurb is on the website:
Developer: SCI commands?
(SCI) is the communication protocol to talk with iRobot Roomba. But don?t rush, don?t do unnecessary work, follow the web and find some easy API, class or code to start working in your project. Work with Roomba as a C object or variable from Linux, Python, Perl, C#?
I just read the spec PDF and it’s very capable. It looks like the wi-fi remote people have done all the work of making a JSON interface through their embedded web server, which is probably a lot less work than building your own interface to the serial pins. But building your own on a Raspberry Pi (using the GPIO pins but adjusting for 5v vs. 3.3v) you could add a webcam and other bells and whistles. These folks in Spain did nicely solve the hardware interface issues, though. Looks like a fun project!
That’s exciting! If you haven’t started the code yet, I would start by coming up with a file called S_Roomba.xml that represents the variables and actions that would be exposed by the wifi remote’s socket/XML/JSON interface. Match whatever information and commands their API exposes, but represent it in a UPnP kind of way. Then, make a D_Roomba.xml file that describes the device and implements the service described in S_Roomba.xml. Also, add at least one more variable: to hold the IP address that the wifi remote appears at (perhaps have it always appear at that IP address using its MAC address in your router’s DHCP setup). Last, create an I_Roomba.xml file that implements the “glue code” between the API provided by the wifi remote and the UPnP variables and actions.
That’s exciting! If you haven’t started the code yet, I would start by coming up with a file called S_Roomba.xml that represents the variables and actions that would be exposed by the wifi remote’s socket/XML/JSON interface. Match whatever information and commands their API exposes, but represent it in a UPnP kind of way. Then, make a D_Roomba.xml file that describes the device and implements the service described in S_Roomba.xml. Also, add at least one more variable: to hold the IP address that the wifi remote appears at (perhaps have it always appear at that IP address using its MAC address in your router’s DHCP setup). Last, create an I_Roomba.xml file that implements the “glue code” between the API provided by the wifi remote and the UPnP variables and actions.
Good luck and let us know how it goes!
watou[/quote]
Thanks watou!
This is going to be one heck of a journey for me. I am looking forward to it .
Had a few issues finding the device (it is Ad Hoc) but made progress. After work tonight I will play some more. I will begin documenting the process soon. Project Raspberry Pi will be a Phase II thing. For now, it’s going to be a fun project to develop the Plug-In.
I think I am going to want to add a few low rubber bumpers to protect the board from lower furniture impacts. The board is low, but still sits above the top of the Roomba 790 and also raises the handle approx. 1/2". Pictures soon…
This is (very roughly) a small shell of a way to issue these three commands. But if the Roomba wifi remote will only do ad hoc wifi mode, then you would have to figure out how to have it be part of the same network (or a reachable network) of the Vera.
Don’t give up! Keep digging and you will have a breakthrough!
I actually don’t know what functions the device has other than “go clean” and “stop cleaning”, so forgive the below general questions if they seem naive. Putting my SDLC hat on now…
What commands/functions do you think users will want to perform with such a plug-in? How and how often?
Would the users want to monitor the progress/location/status of the device, in addition to sending it commands?
What would be some typical scenes/integrations/automations that advanced users will expect to be able to create once a plug-in that performs the above functions is available? What would you need to include in your plug-in to facilitate those expectations?
The wifi remote can be reconfigured from Ad Hoc to connect to a LAN. I did that and now my router assigned 192.168.1.13 to Roomba. If I go to the IP of Roomba, then I get the control panel that Xavi designed for the device and it works well.
The weird part is when I type 192.168.1.13 /roomba.cgi?button=CLEAN on my browser nothing happens ??? so kind of stuck for the moment.
I typed 192.168.1.13/roomba.cgi?button=CLEAN on my browser and Roomba started cleaning. YES!!! ;D
I really appreciate the morale boost and I will push on. I’ll start small.
I assume you type a valid URL, like http://192.168.1.13/roomba.cgi?button=CLEAN. If so, you will want to track down why it’s not going into CLEAN mode on that command like the doc says it should. Do a “view source” in your browser on the empty-looking page to see if anything got sent back at all, even an empty block. Once you can prove that basic HTTP commands are working, you should be off to the races.
Once you’re past these headaches, you will probably want to implement some additional UPnP services, like SwitchPower, so it will be easy to switch it on from automation. Browse through http://upnp.org/resources/upnpresources.zip for other standard services you could implement.
I must have fat fingered something because I tried again and POOF it worked .
I agree first I want to get the basic commands working then maybe add some additional functionality. How do some guys customize the graphic for the plugin (like the Nest plugin that displays The Nest stat? That is very cool. Wait… I am kind of getting ahead of myself again. Must go slooooooow (but I don’t want to)!!!