5 tips for getting started on the Internet of Things with Eclipse
Eclipse evangelist Benjamin Cabé shows us five things every developer needs to know about how the Internet of Things works.
This article first appeared in the October 2014 Eclipse Newsletter.
So you’ve been hearing about the Internet of Things (IoT) so much that you’ve now decided it’s time to get a closer look at what it actually changes to the way applications are being built. But IoT is very vast, and you could quickly get lost in a jungle of protocols, frameworks, … so here are five things that will get you up to speed with the exciting world of IoT!
1. Open Hardware platforms will help you build your thing
It’s amazing to see that only a few years back, it was virtually impossible for someone to have access to actual hardware to run IoT solutions. That is, cheap and reasonably-sized equipment that you could easily deploy in a house, a car, … Nowadays, platforms like Arduino, mbed, BeagleBone and Raspberry Pi are providing IoT developers with a wide ecosystem of hardware that can be used to easily prototype and even go to production for small batches.
The Eclipse IoT projects have always been very active in the Open Hardware communities and you should definitely check out some of the nice resources out there to e.g. run MQTT on your mbed device, or install the Kura framework on a BeagleBone Black.
2. Learn about IoT standards
What is really interesting in the Internet of Things space is that we’re talking about millions of devices that are pretty limited in terms of processing power and communication capabilities — think a tiny battery-powered microcontroller monitoring a solar panel in the middle of the Death Valley! — and yet, one needs reliable ways to access sensor data or manage the software running in the device, all of this usually happening over the air and with limited human intervention.
While the term IoT is new, the use cases we see today have been around for several years, and there are interesting open standards that help build interoperable, efficient IoT solutions.
In order to allow IoT data to flow from producers (sensors on the field) to consumers (IT backends, web apps, etc.), MQTT is an OASIS standard that implements a publish-subscribe communication model. It has several QoS levels making it easy to find the perfect tradeoff between reliability and resources/bandwidth usage.
You should definitely read the MQTT 3.1.1 specification document to get more familiar with the protocol, and see by yourself that it is indeed a simple and interesting protocol for IoT. As a reminder, Eclipse Paho provides open-source implementations of MQTT clients in many programming languages (latest addition is a client for .Net and WinRT platforms), and Eclipse Mosquitto Mosquitto and Moquette are broker implementations that can be deployed in IoT servers.
OMA Lightweight M2M is another interesting standard from the Open Mobile Alliance that is getting lot of traction in the domain of Device Management. LwM2M is proposing a standard way to do things like: reboot a device, install a new software image (yes, similarly to what happens on your smartphone and that is based on an ancestor of LwM2M called OMA-DM), etc.
Eclipse Wakaama and the proposed project Leshan are implementing LwM2M stacks in C and Java that you can use to manage your IoT devices.
At the transport level Lightweight M2M is using CoAP (Constrained Application Protocol), which is an IETF standard targeting very constrained environments in which it’s still desirable to have the kind of features you would expect from HTTP, in particular the manipulation of resources that you can “GET”, “PUT”, store in a local cache, etc. Eclipse Californium is an implementation of CoAP in Java that provides all the APIs you need to build your own CoAP resources.
3. Get out of your comfort zone!
IoT is an incredible opportunity for all developers to learn about new technologies. If you are used to developing backend applications, you will learn a lot about embedded development if you start playing with embedded runtimes like Contiki. Being closer to the silicon means having to think about how to optimize radio communications, power consumption, etc. and it is truly fascinating.
SEE ALSO: UX design for the Internet of Things
If you are more into embedded development, then start experimenting with the various cloud services (time series databases, IoT brokers, …) you can connect your embedded system to, and learn how to turn your IoT data into something useful. You should also look at how Eclipse BIRT can help you create nice visual dashboards.
4. Follow our end-to-end tutorial
We were very excited to announce the Open IoT Stack for Java at the end of September, and we’ve been working on making it super simple for any developer interested in IoT to essentially go from a bare Raspberry Pi to a complete end-to-end IoT solution in less than 30 minutes.
So whether you already have a Raspberry Pi and always wondered what to do with it, or you don’t and just would like to get familiar with IoT at large, just head over to our tutorial, buy the hardware, and start connecting all the things!
5. Get involved with the Eclipse IoT community
We just gave you a few ideas of what you should look at to get started with IoT, but there are certainly many other ways for you to do so. It is very likely that you will find under the Eclipse IoT umbrella a project that will prick your curiosity, so go download the code, try it, and let us know what you’re building!