This is really cool! But also kind of complex for a task that could be performed in a much simpler way.
Using a GSM module such as the Telit GM862 [1], you will be able to receive text messages directly on the Arduino without the need of any web services. This would be much faster and cheaper. This particular module even includes a GPS.
Indeed - I've been meaning to experiment with a GSM module actually, I just had the WiFly handy so I built it with that instead. One thing I would say is that using the WiFly allows you to connect with web services as well as the cell networks (in my example I made a very basic Sinatra app with an on/off button)
It's definitely also a good argument to just use what's in hand!
It is actually also possible to connect to the internet using that module, using good old GPRS (The module contains a full TCP/IP) stack. Of course not near as fast as an average wifi connection.
I used it to create a set-up where you can send a text message to the module: "Where are you?", it would then respond with the latitude and longitude as well as the geocoded address using Google Map's Geocoding API over GPRS.
The Telit module is fully on the internet just like your PC. The module can do GET's and POST's directly to any server - no extra host needed anywhere.
My understanding is that you get raw SMS data similarly to raw TCP data - via Serial assuming your GSM shield supports that sort of functionality. You would likely need a prepaid sim card as well, but it is possible to get SMS directly to your device without any intermediary server.
Personally, my comfort zone was with web development and I had the WiFly handy so I used Twilio and Pusher - worked out alright :)
I think that was notatoad's point. To use GPRS modules, I would think you need to buy access to the towers from somebody. I don't see how that would be cheaper than using WiFi, because you would have to pay for every communication.
I had skimmed the post earlier and came back because I thought "hmm, I wonder how he got the Arduino publicly accessible…" and didn't remember seeing anything about that.
But thanks to things like Pusher, you don't need that!
I was just picturing the request going to Twilio and then pinging the Sinatra app on the Arduino directly… But Pusher and the like really help so much to put things "online", albeit indirectly. But between a free Pusher app and a free Heroku app, it's easy to get going without worrying of your home router configuration or anything anything like that.
Early on, I actually attempted to run a webserver on the Arduino and have Twilio POST to it. However, I couldn't find a good/easy way to make it publicly accessible (tried no-ip, dyndns, etc.) - and while I could get it working on my own router I couldn't find a good way to describe how to set it up in the tutorial
You piqued my interest, Jeff, so I did check out ninjablocks.com. They have a cloud service (ninjablocks.com/cloud) that appears that the whole heroku/pusher bit might be unnecessary. The hardware is open, so you could build your own, or they are also doing limited runs were selling them for $155 AUD ($160 USD, £100 GBP) for the basic device, more with sensors and stuff.
I suppose one could also use IFTTT recipes too, again to get around the server bit. Still, this is more DIY with websockets, so that's got a big cool factor.
Yeah, building it yourself isn't the cheapest solution - but it is the most fun and interesting in my opinion. A Belkin WeMo (which integrates with IFTTT) costs $60 per outlet, so it ends up cheaper but again..less fun
I buy most of my hardware from Little Bird too - I could easily source it cheaper but they provide awesome service. I attended a great presentation of theirs showcasing http://ninjablocks.com/
I'm also from Australia and I could list at least a dozen places I would buy an Arduino from, before using your website that's less than a month old, and provides no contact details.
https://code.google.com/p/openhab/