This is really cool, looks like it will make integrating your microcontroller with other systems really easy.<p>But - and I hate to be the REST Nazi - this is RPC, not REST.<p>"REpresentational State Transfer" is about making things happen by Transferring REpresentations of resources' State.<p>The GET requests are good, but for setting outputs it should do something like:<p><pre><code> PUT http://192.168.1.177/9
</code></pre>
with body<p><pre><code> HIGH
</code></pre>
POST could work too, the important thing is that the resource's state, the resource's address, and the action being performed are all separate.<p>This RPC system is beautifully simple, it does what it needs to and I can't think of any way that making it RESTful would improve it, but it's not RESTful right now, and calling it that only deepens the confusion about what REST is.
This is going to cause so much consternation. The microcontroller hacking community already looks down on the arduino because it is vastly overpowered for what most people use it for.<p>They think people should be using the arduino as a rapid prototyping system, and then making their own circuit board with the individual components arranged as needed.<p>They is a constant stream of blog posts looking for ways to get noob arduino hackers to "graduate" to designing their own circuits.<p>While it all seems terribly unreasonable from the point of view of a software developer used to the idea of a tradeoff between hardware costs vs development time, it is very similar to the programming language wars.<p>See: <a href="http://hackaday.com/2011/02/11/how-the-arduino-won-this-is-how-we-can-kill-it/" rel="nofollow">http://hackaday.com/2011/02/11/how-the-arduino-won-this-is-h...</a>
Yeah, a REST interface a pretty interesting way to interact with the Arduino.<p>I made something similar a couple of years ago (the details of which used to be at <a href="http://code.rancidbacon.com/Flashduino" rel="nofollow">http://code.rancidbacon.com/Flashduino</a> and may return when I get a server back up).<p>The demo I had actually served up an Adobe Flash file that was stored in the Arduino's flash memory (it was small and generated with Python & Ming) that then interacted with the Arduino via the "REST" interface. I got it reading/writing pins and the EEPROM from both Adobe Flash and Javascript before I got distracted. :)<p>I've long thought that interacting with Firmata via REST could be a nice approach--I think Massimo from the Arduino team wrote an Ethernetised Firmata at one stage but don't think it used HTTP.
This is pretty cool, but to be honest, as a complete software noob who also hacks with Arduino, I don't get why this is easier than just using the examples that comes with the IDE.<p>Also interesting is BugLabs' "web services" where you can log into each module using a RESTful API:<p><a href="http://wiki.buglabs.net/index.php/Software:BUG_Web_Services" rel="nofollow">http://wiki.buglabs.net/index.php/Software:BUG_Web_Services</a>
More than a replacement for learning Arduino, I could see this being more useful as a rapid prototype tool for interfacing between the web and a piece of hardware or circuitry. If all you need to do is check some states and flip some switches, why bother doing the same thing over and over in C when you can do it more reliably in jQuery?
Just as fun : send high rate updates via websockets from your embedded system to your browser.<p><a href="http://code.google.com/p/cwebsocket/" rel="nofollow">http://code.google.com/p/cwebsocket/</a>
Oh I like the sound of this. Though personally I found this to be the easy part; getting Arduino to send web requests to a webserver on button pushes is far harder (especially if you want it to do DHCP and DNS lookups).