Implementing IoT Architectures with Open Source [White Paper]

Eclipse IoT has just published a white paper that, although I’m obviously biased, is a nice read for anyone looking at understanding today’s IoT architectures, and the role that open source plays by providing some of the key software building blocks needed for implementing IoT solutions.

More specifically, the white paper looks at the core features that need to be provided by each of the three key components (stacks) of an IoT solution:

  • the constrained devices – those are typically the billions of devices you hear about in the news: they are cheap, very specialized, and often not capable in terms of communication and networking capabilities,
  • the gateways and smarter devices – here we’re talking about more powerful equipment that is sitting at the edge of the network, that’s to say that bridges the physical world to the Internet,
  • the IoT cloud platforms – this is where the devices in the field are managed, and where data is stored and analyzed. IoT cloud platforms must also allow the integration of external applications thanks to open APIs.


You can download the white paper from the Eclipse IoT website, or read it below.

I will also  be giving a presentation at the Virtual IoT meetup  on November 2. You should plan on attending to get a chance to learn more about some of the open source projects mentioned in the white paper, and get a more complete overview of what is going on at Eclipse IoT:

Implementing IoT Architectures using Open Source Software

Wednesday, Nov 2, 2016, 8:00 AM

No location yet.

81 IoT enthusiasts Attending

This is a virtual Meetup occurring at 8AM Pacific time (11AM Eastern, 4PM Central European Time). For help with your timezone calculation, refer to this.The meetup will be held on Google Hangouts and you will be able to watch the live stream directly on YouTube.Link will be added soon.In this session Benjamin will provide some insight into the k…

Check out this Meetup →

IoT Programming Workshops

Over the past two years, I’ve delivered several training sessions and workshops about IoT Programming. Depending on the audience and their background, those sessions have been either one-day or two-day long.

As you probably know, IoT is really broad, and one needs to be familiar with all the pieces involved in an IoT solution to be able to design and build an efficient IoT solution. For example, I strongly believe that every software developer building an IoT solution today needs to care about the hardware, which is why the workshop starts with a pretty extensive overview of the hardware landscape, and goes through things like the different classes of IoT devices that may exist (from micro-controllers to powerful system-on-chips, when should you use one or the other?), to the different kinds of sensors, before moving on to the communication protocols suited for IoT (like MQTT or CoAP).

The training includes many hands-on sessions, and the participants get a chance to learn first-hand how to master the MQTT protocol (using Eclipse Paho), how to program IoT gateways, or how to build IoT visualizations.

The overall outline is the following, and can be adapted on a case-by-case basis, depending on the trainees’ expectations:

  1. Introduction to the Internet of Things
  2. Sensing and acting on the physical world: micro-controllers or powerful gateways?
    1. What can be sensed and acted upon?
    2. Overview of sensors and actuators technologies
    3. Making an intelligent object
      1. Different classes of devices for different needs
      2. Interacting with sensors and actuators
      3. Overview of IoT operating systems and frameworks.
  3. Connecting things, or how to build efficient and scalable sensor networks
    1. Constraints of IoT Communications
    2. Overview of different topologies for IoT networks
    3. IoT Communication protocols
      1. MQTT – Eclipse Paho, Eclipse Mosquitto
      2. CoAP – Eclipse Californium
  4. Managing IoT solutions
    1. IoT Gateways – Eclipse Kura
    2. Device Management & Software Provisioning – Eclipse Leshan, Eclipse hawkBit

If you are interested in participating to similar workshops in the future, either for yourself or for your company, please get in touch!

On making standards organizations and open source communities work hand in hand

eclipse-and-standardsDid you know that the Eclipse Foundation is home to many open source implementations of industry standards?

From IETF to ISO to oneM2M or OASIS, we have many open source projects that provide industrial-grade implementations that anyone can use to evaluate a given standard, or to effectively use it in their commercial solution.

We do believe that open source is key to the adoption of standards, and in a presentation I gave last week at an Open Source Think Tank organized by IEEE, I shared some thoughts on what makes a standard successful, as well as how Eclipse has proved with recent success stories that open source and open communities are a key factor.

The two examples I used in my presentation (see the slides at the end of this post) originate from the Eclipse IoT community.

OMA (Open Mobile Alliance) LWM2M is a standard for doing device management of IoT devices (i.e remotely monitor the device’s health, upgrade its firmware over-the-air, etc.). The first drafts of the standard have been published less than 4 years ago and today, LWM2M is already used in commercial products, and has a thriving community of developers and contributors gathered around two Eclipse open source projects: Eclipse Wakaama, and Eclipse Leshan. I think you will agree that this is the kind of timeline you would like to see for all standards!

The other example is MQTT, a very popular IoT protocol that I’m sure you’ve heard about! :) In just a few years, it went from a de-facto standard to an actual OASIS and ISO/IEC standard. Having a rich ecosystem of open source MQTT implementations (including Eclipse Paho clients, and the Eclipse Mosquitto server) certainly helped the standards organizations to pin down the issues that need to be fixed in the spec much faster. What’s more, open source projects will also fuel the future of the MQTT specification, as they allow for new ideas to be explored (see e.g this recent work on MQTT-SN).

My hope is that Standards Developing Organizations will start embracing open source initiatives more and more. Open source communities are a great place for innovation, and can host standard implementations that sometimes actually become reference implementation. They also complement very well the role of the SDOs, which are here to enforce some needed processes when it comes to evolving a standard, anticipating incompatibilities or corner cases, etc.

As mentioned above, here are the slides I used during my presentation. I am looking forward to hearing your comments and feedback.

5 Things I Learnt at IoT World 2016

Last week I attended IoT World in Santa Clara. It was a great event, and what was particularly exciting was to meet with adopters of Eclipse IoT technology who stopped by our booth. It just felt incredibly energizing (and even more so given I had to spend 2.5 hours at US immigration the day before the show, which was quite annoying, to say the least), and moments like this are why I love my job, really.

Here are 5 things I learnt at IoT World that I thought I would share with you:

→ Eclipse Wakaama and Eclipse Leshan are saving lives

thingwaveThat tweet I reshared above was done right after a discussion I had with Jens Eliasson from Thingwave. Thingwave is a company that is building a connected device that aims at monitoring vibration in rock bolts used in the mining industry, in order to detect anomalies such as excessive strain.

Their solution, called the Smart Rock Bolt, is attached directly to a bolt (see picture) and uses LWM2M (thanks to open source implementations Eclipse Wakaama and Eclipse Leshan) and IPSO Smart Objects to expose sensor data that a gateway collects and analyzes.

You can read more on the Smart rock bolt on Ericsson Research blog.

→ MQTT remains an IoT protocol of choice

mqttorgIt was only one hour or so before the end of IoT World that my colleague Ian and I found out that just next to our booth was a company, infiswift, building an IoT platform around a highly-scalable MQTT broker. But in fact, it is no surprise, since pretty much every person we met, and many of the companies exhibiting, were either building solutions using MQTT or already very much aware of its capabilities. So we should have just guessed about infiswift :-)

→ Eclipse IoT technology to be shipped with a Kickstarter project that raised $1.7M


Pine 64 is a Raspberry Pi-like single board computer which aims to be a very affordable 64-bit computing solution, with a price tag starting at just $15.

I met Daniel Kottke, one of the persons involved with the Pine 64 project (and employee #12 at Apple, where he participated to the H/W design of the Apple I), and this is from him that I learnt about the project and its incredibly successful Kickstarter campaign. What I found really exciting is that Pine 64, in its “IoT Package” version, will ship with openHAB pre-loaded on its SD card. And as you probably know, openHAB is running on top of the very popular Eclipse IoT project Eclipse SmartHome.


→ Eclipse Kura becoming a framework of choice for building IoT gateways

kuraFrom Litmus Automation, to Eurotech, to the likes of Microsoft or Cisco now looking at Eclipse Kura, it was great to see that many companies are endorsing it as a framework of choice for building modular and extensible IoT gateways.

→ Consumer IoT leaving the headlines

All in all, IoT World was a very good conference. I am looking forward to next year’s edition and to see how the IoT industry will have evolved by then.

This year it was pretty clear that the consumer IoT market is starting to consolidate, and that everyone’s attention is shifting towards Industrial IoT (as an example, this year’s hackathon was sponsored by GE).  And how could I complain to see that end-consumer gadgets like connected dog collars are leaving room to more useful, like Thingwave’s connected rock bolt, or to see that the likes of GE are working on kick-ass Industrial IoT platforms built on top of open source and open standards such as CloudFoundry or MQTT.

By the way, from one conference to the other: this week I am in Austin for OSCON’16. If you are attending, please stop by Eclipse Foundation booth to say hello!

Installing the Zulu open source Java Virtual Machine on Raspberry Pi

I’ve recently been playing with the early-access version of Zulu Embedded for ARM32. Zulu is an open-source and certified build of OpenJDK. It is a great alternative to the JRE from Oracle as it does not requires you to pay any licenses, and it is also a huge improvement over the OpenJDK build you can get off the Debian repositories, which is not really optimized for ARM (and that’s a euphemism! :smile:).

Before giving you more information on my experience running Eclipse IoT projects on Zulu in subsequent blog posts, here’s a quick tip for anyone interested in installing an alternate JVM on a Raspberry Pi (or pretty much any Linux-based environment, really), and switching between default JVMs easily.

Download the Zulu JVM

At the time of writing this blog post, Zulu for ARM32 is only available through an early access program. Once you’ve downloaded your Zulu archive, you need to unpack it somewhere on your system (in a zulu folder within our home directory, in this example). From the command-line, and while in the directory where you’ve downloaded Zulu:

mkdir ~/zulu
tar xvfpz ezre-1.8.0_60- -C ~/zulu

Add the Zulu JVM to the list of alternate VMs

The update-alternatives command-line utility allows to easily bind a given symbolic name to different commands. In our case, we want to update the symbolic link for /usr/bin/java

sudo update-alternatives --install /usr/bin/java java ~/zulu/ezre-1.8.0_60- 100

Enable Zulu

sudo update-alternatives --config java

In the list of alternative Java version that’s proposed to you, select the one corresponding to Zulu by entering its ID and pressing .

And voila! Zulu is now your default Java Virtual Machine, you can check by executing the following command:

java -version
openjdk version "1.8.0_60-Zulu-Embedded"
OpenJDK Runtime Environment (build 1.8.0_60-Zulu-Embedded-EA3, profile compact1)
OpenJDK Minimal VM (build 25.60-b23, mixed mode, Evaluation)

Running Eclipse Che on a Raspberry Pi

Eclipse Che is a very cool Eclipse technology that provides you with a browser-based IDE that can be extended with plug-ins for virtually any language, framework, or tool that you may want to use in your day-to-day development.

This means that, right from your browser, you can do Java development and have Maven automatically build your stuff, or do Javascript development and still be able to easily integrate with e.g grunt to build your website.

As you may have guessed, most of the magic of Che is in its server. While in many cases you will run the Che server on your own laptop or private server, it’s also pretty cool to run it on an embedded/IoT device such as Raspberry Pi so as not only you have an “IDE-in-a-box” setup, but you can also actually devloper code targetting the Pi itself. And yes, that means blinking LEDs… and more ! ;-)

Install Docker

Assuming you are running an up-to-date Jessie distribution, it should be fairly straightforward to install the armhf version of docker provided by the Hypriot team.

cd ~/Downloads
sudo dpkg -i docker-hypriot_1.10.3-1_armhf.deb
sudo usermod -aG docker pi

At this point, you want to quickly logout and login again, in order for the addition of the user pi to the docker group to be properly applied. Then, we can test that docker is indeed running:

docker ps

This should grant you with an empty list of running docker containers. How surprising!? But at least it means you have Docker setup taken care of!

FWIW, the Hypriot folks have a Debian repo for making things easier. I have had problems with it though so you may want to stay away from it until they fix it?

Downloading Che

cd eclipse-che*

Updating Che’s built-in stacks to be ARM-compatible

When Che creates your development environment, it instantiates a Docker container that has the tools you need. That is to say, if you are to do Node development, Che can provision a so-called “stack” that contains npm, grunt, etc. The stacks configured by default in Che are based on x86 Docker images, so you will need to replace them with armfh-compatible ones.

sed -i 's/codenvy\/ubuntu_jdk8/kartben\/armhf-che-jdk8/g' stacks/predefined-stacks.json
sed -i 's/codenvy\/node/kartben\/armhf-che-node/g' stacks/predefined-stacks.json

I’ve built an image for Java and Node development, which means you’ll be able to use the “Java”, “Node”, and “Blank” ready-to-go stacks. Should you want to have a look at the Dockerfiles for those, see here.

Note that you don’t have to use the built-in stacks, and you can also create your on-the-fly, using a custom recipe. There as well, the base Docker image you’re building from will need to be ARMHF. You may want to use images from hypriot or armv7 on DockerHub.

Update other default settings

The Raspberry Pi 3 is quad-core, which means you actually get some very decent performances out of it. However, it’s still an embedded sort of device, and SD cards are typically not fast either. It’s a good idea to increase the timeout Che uses to detect a workspace is properly provisioned.

sed -i 's/machine.ws_agent.max_start_time_ms=60000/machine.ws_agent.max_start_time_ms=240000/g' conf/

Launch Che!

You’re good to go! All that is left is to launch Che. As you will likely be accessing it from e.g your Desktop computer, you need to make sure to use the -r:<external-IP> command-line argument to make sure it works properly from “non-localhost”:

./bin/ run -r:

Note that depending on your setup, the JAVA_HOME environment variable may not be set, in which case Che will complain, and you will have to first set the said environment variable:

export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt

You can actually add this to your ~/.bashrc to make sure JAVA_HOME is always set.

That’s it! You can now use the Java and Node stacks, and start using your web browser to develop right on your Pi, with *all* the features you would expect from a “real” IDE. Enjoy, and stay tuned for a video tutorial soon.

Upcoming Virtual IoT meetup sessions

We have some really great speakers lined up for the upcoming Virtual IoT meetup webinars. Please make sure to join the group and RSVP for the sessions you’d like to attend.
As always, we’re happy to hear your suggestions for future presentations, so feel free to drop me a note.

Eclipse Kura: A gateway framework built for IoT

Friday, Mar 4, 2016, 8:00 AM

No location yet.

102 IoT enthusiasts Went

This is a virtual Meetup occurring at 8AM Pacific time (11am Eastern, 5pm Central European Time). For help with your timezone calculation, refer to this.The meetup will be held on Google Hangouts and you will be able to watch the live stream directly on YouTube. IoT continues to expand into new and exi…

Check out this Meetup →

Strong devices weakly connected: bringing DevOps to IoT with

Wednesday, Apr 6, 2016, 8:00 AM

No location yet.

56 IoT enthusiasts Attending

This is a virtual Meetup occurring at 8AM Pacific time (11am Eastern, 5pm Central European Time). For help with your timezone calculation, refer to this.The meetup will be held on Google Hangouts and you will be able to watch the live stream directly on YouTube. developers now enjoy a culture and set…

Check out this Meetup →

Spy on your MQTT devices for fun and profit with mqtt-spy

Wednesday, Apr 20, 2016, 8:00 AM

No location yet.

19 IoT enthusiasts Attending

Check out this Meetup →

Eclipse, open-source for the Internet of Things, and other random stuff