I had plans on writing a post about NFC & (home) automation a long while ago but the post â€œNFC stands for Nobody F*** Caresâ€ definitely gave me the spark I needed to sit down and start writing.
Let me first start with a little trip back at the core of the Web of Things‘ idea: the Internet of Things stands for the network layer, where all smart things out there should be connected using IP protocols to facilitate interoperability. Similarly, the Web of Things advocates using Web blueprints such as REST and it’s implementation in HTTP, at the very least as a protocol for controlling devices (a typical stateless task).
So, let’s assume all devices in my home were offering a REST interface (which, isn’t far off reality in my case), either directly, or through a smart gateway. Then, to reach home automation I could probably setup a very smart middleware that â€œthinks for its usersâ€ and accommodate their environment to the current context. One of these systems that ends up turning off the light when you need it the most, ensuring that the heating suddenly turns on when you reach the â€œNaNâ€ temperature of 35 degrees Celsius (it is Switzerland after all!) and that the window blinds go down at Sunset (because of course developers do work 9-5 all year long). The same type of system that plays the Beatles’ â€œSomethingâ€ when coming home right after your girlfriend dumped you
Or you could go â€œthe human in the centerâ€ way, where everything can be configured by using a central interface issuing REST requests all over the place. An interface that upgrades you as the commander of the Enterprise while, all you wanted was to come home, grab an iced-tea and read the latest Internet buzz!
Well, I think there is a world in-between and NFC, which apparently, no-one cares about might be the most straightforward answer, no programming involved!
Let’s go back to my home where the radio system (a Squeezebox), the alarm clock (a Chumby or an app on my phone), some of the lamps (plugged to a Plogg smart meter) and the TV (plugged to a Raspberry PI running Raspberrymc) feature a RESTful Web interface. My phone, a Galaxy Nexus, offers an NFC reader. Then, all I needed to do to setup my own home â€œautomationâ€ system was to download an Android â€œtaskerâ€ app, purchase some tags and off we go. The NFC Task Launcher app, like a number of others, let’s you program reactions when a tag is read, mainly phone-related reactions: turn off the the ring-tone, disconnect from WiFi, call a URL, launch a specific app, Wait, call a URL? But didn’t we say most of my home appliances have a REST interface? REST, URL? Got it?
Here is a typical day in the life of Dom: Dom wakes up takes his phone and throws it in the bucket below, Dom’s phone then connects to the WiFi, syncs the daily calendar of a busy CTO, turns on the Squeezebox to Frequence3 (a rather pop oriented Web radio, perfect for morning push-ups!).
Why does it do that? Well because in the bucket there is a NFC tag and he programmed the tag to run all these tasks with the Task Launcher app. Dom then leaves home and briefly touches the tag on the front door which: disconnects from the WiFi network, stops the sync, turns the music off, turns the light off, etc. all by running internal phone apps or calling URLs. In the car the NFC tag on the docking station tells the phone to turn the GPS on and start Sygic, my favourite GPS app.
Dom then arrives at work, where there is a tag on his desk, close to where he drops his phone. The phone connects to the EVRYTHNG network, start syncing the meeting again, turns the ringtone to the max (I have noisy but lovely colleagues ;-)), etc.
And so on and so forth, the tag in the bucket is a switch so when I put it back when coming home again it does other things such as syncing my daily pictures with my REST-enabled NAS (Network Attached Storage), finally a tag next to my bed, turns everything off and prompts me for a time to which it should set the alarms clock.
I like this use case very much for three reasons:
- It makes a point of how the Web of Things concepts applied to home appliances can lead to a simple but yet truly spontaneous world of consumer electronics, where devices start being put together in ways that weren’t though of in the first place (probably also fostering a more sustainable consumption of CE, with longer life-cycles!)
- It put the users in the center, empowering them to reconfigure their world with simple tools but does not decide for them.
- It is a creative use of NFC, beyond mobile payment and mobile marketing.
So, is NFC really that useless? And that’s just one creative use of this technology. A technology, that, just as a reminder, was NFC has been identified by several studies (e.g., here!) as THE most acceptable/understandable/straightforward way for people to identify objects. Combine it with the WoT principles and you get a usable, affordable way of semi-automating your home.
Note to the RESTifarians out these: I see the purist coming with things like “well calling a URL (GET) doesn’t mean you can actuate the world, an actuation should rather take the form of a POST or better a PUT”. Well wise-purist: check Tasker, another Android app that integrates with NFC Task Launcher and allows you to use other HTTP methods with payloads and authentication.