Making IoT Gateways

It is becoming more clear that ‘smart things’ at ‘smart homes’ will need IoT Gateways for communicating with the Internet and various web services. Why? Well, WiFi is good, but in most cases:

  1.  Is still expensive: You can buy a pair of RF transceivers at less than 10$ retail price. There is no way you can find WiFi modules that can beat that price (retail) yet.
  2. Power consuming: There has been a great effort into minimising WiFi power consumption, but still, you probably need your WiFi devices to be plugged to work or remember to recharge then every now and then.

 

These points are not to be taken as the rule, you can definitely IoT-enable a device using an electric Imp, but in the near future, there will be need for connecting devices that can’t afford a 20+$ WiFi interface.

And you might also have low signal, range issues as well.

What else you can use? You can go with RF solutions like this one that works out of the box and provides data encryption as well, maybe ZigBee and BLE (Bluetooth Low Energy). But then you need  a gateway that will provide the essential connectivity with the Internet to your devices.

Let’s briefly define what an IoT Gateway should feature:

  • It should have an interface that can connect to a Local Area Network (Lan) or a WiFi network. So, at minimum, either an Ethernet port ar a WiFi interface.
  • Interfaces to networks like Bluetooth, ZigBee, XRF, etc.
  • A way to forward communication from the device to the Internet and vice versa.

The latter requires appropriate software that will forward the device request to the Internet and transfer information back to this ‘IP-less’ device.

Preferably, the Gateway should also:

  • Provide security, like proper authentication of the devices and the services, as well as data encryption! IoT devices have limited resources and best-case they can do some symmetric data encryption. Introducing a Gateway device (like a linux board), you can even add PKI on top of that.

 

Interfacing
To enable interoperability with interfacing between devices and IoT Gateways (translation = turn on your IoT device from vendor A and it communicates with the Internet through an IoT Gateway from vendor B, simply, out-of-the box style), there has to be a new protocol/standard, at application layer or lower (network, packet).

 

Let’s see an example: I have a Bluetooth device that senses something from my environment and I would like that information to go to Cosm.com. At the same time, I would like to set up some triggers for that device using Cosm trigger service.
If I use an existing IoT Gateway like this I would have to program the gateway myself to receive data from the BT Serial interface, and make a HTTP POST request to the Cosm API using that data. Then, I should also program the gateway to listen for trigger events from Cosm and forward them (again though sending something like a flag over the serial interface) back to the Bluetooth device.
It doesn’t look that hard to implement, but imagine being the BT device vendor and having no access to the IoT gateway for programming it!
How would the standard help? I could use, e.g., JSON to provide authentication credentials and describe the service endpoint from the BT device and then just forward that JSON message including the sensed data to the Gateway. In a similar way, I would describe potential requests the device might accept from the service.

 

Current status

Eventually, router vendors have realised the need for IoT gateways and have started to include some in their product lines. Check this Cisco M2M gateway for example. No idea how data forwarding works and how open that is in Cisco case! Also, the FI-WARE project is worth mentioning, since it looks like they are trying to build a device interfacing/communicating standard for IoT Gateways. More info here.

 

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>