5 things to get started on the Internet of... Things
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 targetting 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. 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!
Also, please get in touch with us on Twitter and make sure to use the project's mailing lists to engage with the committers and developers making Eclipse IoT such an exciting community!
About the Authors
