Exploring the Internet of Things

I’ve been intrigued by IoT, jealous of friends’ experiences, but personally haven’t yet taken the plunge.

Maybe I was worried I would get too frustrated, or perhaps I lacked the focus, and would you believe that I just can’t stand the sight of my own hackish soldering?

However, I fondly remember a science fair project with my father: we made a device that detected the number of people walking through a doorway, breaking a light beam, with an optical sensor that incremented a two-digit LED display counter. That was cool.

So when Arah mentioned that our friend Al was having some issue getting the temperature sensor on his Grove system to communicate with Amazon’s IoT cloud service, I was nervous, but offered to help, if only to be another pair of (inexperienced) eyes.

Al’s vision is to create a semi-autonomous garden: one that detects its own temperature, humidity, and eventually waters itself. As I entered his back yard, at least four rabbits scattered away. I wondered if he would automate anti-rabbit defenses as well? This is the sort of thinking that eventually leads to Skynet.

Initially everything looked reasonable, if a bit crude, messy and bewildering: the configuration in Amazon’s cloud, the software assembly tools and configuration on the laptop, the source files and libraries downloaded, and the files deployed to the device. But still the temperature data was not flowing through the Internet from the little device in Saint Paul, Minnesota to the massive data center in Bend, Oregon. This was the Internet of Difficult Things (IoDT).

My first mistake was assuming that we were trying to pipe the temperature sensor data through Al’s laptop. No, the laptop was there to build and deploy the software, but this is Arduino we’re talking about: it may be tiny, but it is the server itself, with its own operating system and wireless connection, and not some peripheral of the laptop!

I stopped being concerned about the state of the folders and files on Al’s laptop, and spent more time inspecting the device itself via secure shell. It became clear that the files on the device had not updated in several days, despite our attempts to build and deploy. WTF?

Increasing the debug settings, we discovered that the COM port was unavailable because of interference from the very same secure shell we were using to debug. Al suggested we drop our SSH session to the device and voilà: suddenly temperatures were updating every second.

When I grabbed the thermistor on Al’s kitchen table and watched the heat of my hand immediately update the cloud, I was elated. I think I might have to get my own IoT kit soon and start sharing notes with the rest of y’all.