03 Jun 2014
Internet of Things & Device Management
We all know that everyone is talking about mobility, BYOD and MDM. They all are hot topics. Forrester published a report on 4-tier architecture focusing on mobility and edge computing devices.
Enterprise Mobility covers a bigger picture of
- Mobile Device Management
- Mobile App Management
- Mobile Enterprise App Development (MEAP)
- Mobile Backend-as-a-Service (mBaaS)
Device Management - why manage?
Every type of device needs a management layer. 100s of light bulbs installed on a floor of a building needs to have a thin management layer to switch on/off them, token protection, update software.
Owning a device (Device Registration)
Before I go on to talk about token protection let me elaborate a bit about device registration. I went to a shop and I bought a smart light bulb. How can I configure the light bulb so that it only works for my account?
I register the light bulb to my account. Registration is a method to persist a token on the hardware via a input method after validating user credentials.
The million dollar question is - how do these devices communicate? MQTT, CoAP, HTTP? And how does the device know what server to communicate? I am not talking about a closed platform. What we need is an open protocol for registration over different communication protocols and vendors. There is a good comparison about MQTT, CoAP, HTTP by Cisco.
Next software updating. You might think that software update is an overkill. But let’s look at it from a different perspective. These light bulbs are going to be installed in buildings and homes of thousands. If the software in the bulbs ends up having a bug - like the Heartbleed vulnerability, we can’t say- “Gee… please remove all those bulbs and put new ones”. This is why it’s important to have software updating. Hardware vendors needs to update the software layer of the hardware and release. The Device Manager should have be capable of downloading these updates from vendors and updating the software connected to the system.
WSO2 has release a white paper which features a reference architecture for Internet of Things. In that WSO2 has mentioned about the Device Management layer that is necessary for Internet of Things to managed and secure.
Selling, Rogue & Recycling
Next protocol we need to define is a way to unregister and expunge a device. There are 2 use cases.
- Recycling & Expunging (destroying the device for pieces)
- Selling (throwing a garage sale and selling the device)
For recycling and complete destruction -we can have a method to destroy the device firmware completely. For example - wipe off the Unique number associated in the device. If the device is stolen or gonna rogue -we can remove the device by removing the token generated by the Device Manager from server side.
As for selling - we can follow a wiping method just like rogue devices where we remove off our data and tokens on the device.
Device Management ways
How do we implement device management? In what layers can we implement device management? For WSO2’s IoT demo at SolidCon, I wrote a Device Management layer for RaspberryPi.
One method is via an Agent that perform Device Management only. This is possible in RaspberryPis (multi-thread supported devices). The agent monitors the hardware variables and periodically sends a payload of information to the Device Manager. Sample data payload is available as a gist.
As for Arduino (single-threaded supported devices) we can’t unfortunately do the above agent method. The only method is to time slice and use a library. I am going to implement an Arduino library for device management. Let’s see how it goes.
Till next time mate,
Dulitha at 02:13