It’s now been a bit over two months since the participants to the Open IoT Challenge have started to work on their projects, and like every year, I am pretty impressed by the creativity and the technical skills of all the teams.
There are about 12 teams actively participating and blogging about their journey (and probably more that are working in “stealth mode”), and I thought I would take some time to highlight some of the really cool things they are working on.
Trusted indoor positioning system for nursing homes
The Trusted IoT Approach team is not only working on building an indoor geolocation solution (using Bluetooth beacons), but they are also combining it with IOTA (i.e a distributed ledger) to turn it into a trusted indoor positioning system.
Their main use case is nursing homes, and I think it is quite brilliant. What if there could be an immutable ledger of all the current and past positions of patients and nurses within a nursing home? Clearly, this can help with scenarios where for example there are doubts as to whether a patient has properly been checked up on.
Year after year, I always hope that more participants to the IoT Challenge get into industrial scenarios, vs. simply focusing on building cool IoT gadgets. This year I am really happy to see that a team from Bosch Connected Industry is working on an Industrial IoT scenario and bridging the gap between the physical world of industrial equipment, and the Internet of Things. They are using Eclipse Ditto for building Digital Twins which I find really cool too 🙂
Activ-IoTy: automatic sports timing system
Activ-IoTy aims at enhancing sports timekeeping systems accurately, through IoT low-cost devices.
The project is progressing really fast and the team’s latest blog post contains lots of promising screenshots of the solution in action.
Many of the participants are getting their hands really dirty with some hardware hacking, and the Alya team is no exception!
They are building a smart mirror using the UP Squared Grove IoT Development Kit that Intel was kind enough to give to the participants with the most promising ideas. They also use a Microsoft Kinect and a MATRIX creator to do advanced voice and gesture recognition.
Of course, there are many other teams participating to the challenge, so I really encourage you to have a look at all the articles that the contestants have put together, and you can also follow the #OpenIoTChallenge hashtag on Twitter.
For the past three years, we have been partnering with a number of organizations – IEEE, Open Mobile Alliance and Agile-IoT – to get a sense of the general trends in the IoT industry through an online survey.
The fourth edition of this survey ends on March 5th, and I am hoping that many of you who haven’t already will be participating – it litteraly takes just 5 minutes to answer. Whether you are actually a developer, or simply involved in building IoT solutions one way or the other, your input will be key to understanding what kind of IoT solutions people are building today, and more importantly how they are doing it.
Like in previous years, we will be making publicly available both the consolidated and raw results of the survey, which should be one more reason to help us get as many respondents as possible so that the results can be even more valuable to your own organization, and to the community at large! 🙂
The results from last year, for example, provided interesting feedback on the rising interest in Industrial IoT, who people see as IoT corporate leaders, or what are the programming languages and frameworks typically used by developers.
We have opened a Call for Papers that will end on Feb 15th – so you have about 3 weeks to submit your talk!
If you are considering submitting a talk but are not sure whether it would be a good fit, here are some of the reasons why it would totally be 🙂
You are building an IoT solution that is based on open source software and Eclipse IoT components, and want to share some of the lessons learned along the way, the things you wished would be available as part of the open source IoT community
You are contributing to an Eclipse IoT project and want to provide an update on the overall roadmap,
You care about open standards, interoperability, security, edge computing, … and want to share your expertise and network with the attendees of the IoT Day.
Please don’t wait and submit your talk today! For what it’s worth I will be more than happy to chat with you if you need feedback regarding your session idea.
There is a lot of buzz around cryptocurrencies – will BTC be over $20,000 by the time this blog post goes live? 🙂 – these days, but beyond the hype, one thing is pretty clear: it enables a decentralized economy that is particularly interesting to look at from an IoT perspective.
For the Internet of Things, I believe the role of cryptocurrencies and distributed ledgers is threefold:
monetization of IoT data – cryptocurrencies make it really easy to implement scenarios where data producers can get a financial compensation in exchange for the value provided by the data they expose. Think of a weather station you would put on your balcony: people or corporations could have access to the feed of sensor data in exchange for some tokens.
smart contracts – taking monetization a step further, smart contracts can enable higher-order, secured, transactions to automatically take place on the network. If you take the example of the weather station, you could sign a smart contract with a 3rd party whereby you get paid for giving access to your sensor data if and only if you can provide an uptime of at least 99%. Note that this would probably require a trusted third party responsible for checking your uptime and storing it in the ledger.
security – manufacturers can use a distributed ledger to store information that can be used to help securely bootstrap IoT devices, by e.g allowing customers to check the authenticity of a chip.
In this blog post, we will focus on the first topic: monetizing IoT data.
For that, we will look at leveraging IOTA’s distributed ledger. We will be showing how anyone can be given access to “simple” IoT sensor data on an MQTT broker, while only people who are paying for it will be able to access the live, raw, data stream.
We will be basing this article on the use case of someone, let’s call her Jane, willing to give access to a live sensor data stream coming from a smart plug, granted that she gets some money (iotas) in return 🙂 .
The instant power consumption metrics will be published to an MQTT broker twice per second, making for a pretty accurate sampling that people might be interested in buying. On the same MQTT broker, Jane will also be making available the 1-min moving average of the power consumption for anyone to access, even if they don’t necessarily want to pay extra money.
When John, who is maybe a data scientist interested in getting his hands on “real” data wants to get the power consumption from Jane’s smart plug, he has two options:
access the MQTT broker and subscribe to data published on the ‘public’ sensor/1m topic, for free,
send some IOTAs to Jane (she’s decided that 500 iotas is what people should pay to access the data for one hour), for his MQTT client to be granted access to sensor/live topic where the live, and more valuable to him, data stream is being published.
Two IOTA wallets, one where the payments to Jane shall be sent to, and one for John to pay for accessing sensor data
mosquitto-auth-plug, a flexible authentication plug-in for Mosquitto. We will use it for implementing a flexible access-control model, based on the information available on the IOTA tangle (i.e payments)
The ACLs (access-control lists) will be stored in a MongoDB database, used as the authentication backend for mosquitto-auth-plug
A Belkin WeMo Insight smart plug.
Enough with the words! I’ve put together a video (click here if the video doesn’t show up below) that shows the whole scenario in action. While you will quickly realize that I do a bad job impersonating Jane and John, what I hope you notice is that this is a real demo, and anyone can implement something similar today.
The technology is here, and while it has some limitations, I do think it’s worth exploring what new scenarios it enables.
This is obviously a simple proof-of-concept, and I am almost certain it is not free of security issues. I would certainly be happy to hear from you if you have feedback :smile:.
I see at least two things that would be worth improving:
IOTA transactions, just like with many other distributed ledgers, can take a significant amount of time before they get confirmed. Having to wait for a couple hours after you’ve made a payment to effectively get access to the data can seriously impact the user experience. A nice improvement would be to rely on IOTA Flash Channels, as they allow to perform instantaneous, off-tangle transactions.
In the current PoC, the Mosquitto server only accepts connections from a list of users already agreed upon. This wouldn’t be difficult, and much smarter, to allow anonymous access to anyone, and let clients interested in having full access to the data indicate in their payment message the username/password they plan on using when reconnecting as authenticated clients. This information should, of course, be encrypted with a key only known to the client and the server – this key, unique for each client, could be broadcasted to anonymous clients on the $SYS topic, for example…
Do you see other areas for improvement? Have you seen similar solutions implemented with other cryptocurrencies?
Note that the IOTA folks have recently announced an IoT data market that seems to implement a similar idea, but I haven’t had time to look into it closely.
With Kubecon happening this week in Austin, it is probably a good time to write an article on the role of containers and having a cloud native strategy for IoT, don’t you think?
Over the past years, Docker and its ecosystem have been instrumental in modernizing our approach to writing and shipping software. Today, more and more applications are becoming cloud native, meaning that not only core functionalities are being isolated as (micro)services, but also that applications are evolving to be first-class citizens in cloud environments (e.g exposing health metrics, acting as stateless processes, etc.).
In this blog post, we will be looking at how to approach cloud native IoT development. We will be deploying an end-to-end IoT solution for power consumption monitoring on OpenShift. The deployed services include:
IoT connectivity layer – getting telemetry data into a backend system is a challenge in itself, and we’ll see how Eclipse Hono can help with IoT connectivity ;
Device data simulator – as a way to illustrate how thinking cloud native for IoT can help make your application scale, we will actually have device simulators running on our cluster ;
Monitoring dashboards – we’ll see how we can leverage Grafana to visualize the data coming into our cluster, and its overall health ;
End-user application – getting IoT data into our backend is one thing, but we’ll also see how to develop a simple web application to visualize our instant power consumption ;
Cloud IDE – we will be using Eclipse Che to develop the web application mentioned just before.
So, let’s break this down!
Firing up a single-node OpenShift cluster with Minishift
The best way to get an OpenShift cluster setup is to use Minishift, which helps you deploy a single-node cluster on your local machine.
You can download the latest Minishift releases, and find install instructions on the project’s Github repository.
Once you have the Minishift command installed, firing up the cluster is actually pretty easy. Here’s the command I use on my quad-core Intel i7 MacBook Pro:
Obviously, your mileage will vary depending on the number of CPUs, memory, or disk space you want to allocate to your cluster, but no matter what your operating system is, soon enough you should be able to log into the OpenShift web console.
Scalable IoT Messaging with Eclipse Hono
Eclipse Hono enables scalable and secure ingestion of large volumes of sensor data into backend systems.
The different building blocks of Hono (protocol adapters, device registry, …) can be deployed as microservices.
Now that our IoT connectivity layer is deployed, with Hono running within our cluster, we want to ingest data into our system, and consume this data to e.g store it in a database.
Jens Reimann put together a nice setup that uses a public dataset of the energy consumption of a residential house to simulate “real” IoT devices. The application essentially deploys two services on our cluster:
A data simulator that sends energy consumption information to Hono using MQTT. The producer can be configured to simulate 1, 10… 10,000 of devices. And of course, you can also scale up the number of pods for the simulator to simulate even more devices.
A data consumer that taps into Hono’s telemetry API to retrieve data coming from all our virtual houses, and dump it into an InfluxDB time-series database.
If you follow the install instructions provided in Jens’ repo, you should have your simulator and consumer running in your OpenShift cluster, and data will start showing up in your InfluxDB database.
Here’s an example of how my Grafana dashboard looks like:
Running Eclipse Che on OpenShift
So we now have an IoT messaging infrastructure deployed in our OpenShift cluster, as well as an IoT app effectively pumping business data into our backend. Wouldn’t it be cool if we could also have the developer tools needed to write our user-facing application running in the same cluster?
In my case, here’s how I would get the nightly build of Che 5.x deployed into my OpenShift project:
And that’s it! Depending on your Internet speed it may take a few minutes for everything to get deployed, but Eclipse Che now just is a click away, accessible through a URL such as http://che-hono.192.168.64.2.nip.io/.
Writing our user-facing ExpressJS app from Eclipse Che
However quick this all was to set up, we’ve essentially worked on the infrastructure of IoT application: messaging, development environment, …
Arguably, the most interesting part is to actually make use of the data we’ve been collecting! For this, we will be developing a Node.js application that will be getting the overall electricity consumption metrics from InfluxDB and displaying them on a fancy gauge.
There are at least two interesting things to note here:
Since Eclipse Che runs on the very same OpenShift cluster that holds our IoT backend, we can easily test our code against it. From within our Che workspace, all our environment variables are set up, and we can e.g access Hono, InfluxDB, etc.
Closing the loop
One last thing… We now have a Node.js application built from Che, that lives in its own Github repo. Wouldn’t it be great to have it run in our cluster, alongside the rest of our microservices?
From the OpenShift console, you are just a couple clicks away from deploying the Node.js app into the cluster. You can use the template for Node.JS applications to automatically build a Docker image from the Github repository that contains our app. It will automatically detect that the repository contains a Node application, install all its dependencies, build an image, and then deploy it to a pod with a route properly configured to expose our app outside of the cluster.
You could also set up a hook so that whenever there is a new commit in the upstream repository, the image gets rebuilt and redeployed.
Hopefully, this blog post helped you understand the importance of thinking cloud native when it comes to IoT development.
If you use Eclipse Hono for your IoT connectivity layer, for example, you automagically get a piece of infrastructure that is already instrumented to autoscale, should the number of devices connected to your backend require it.
Thanks to Eclipse Che, you can develop your IoT services in a controlled environment, that is already part of the same cluster where the rest of your IoT infrastructure and applications is already running.
Final words: don’t push it!
Now, I cannot conclude this blog post without a personal observation, and something I hope others have in mind as well.
Many moons ago, I used to teach people how to develop plugins for the Eclipse RCP platform – a truly great, highly extensible, framework. However, the platform being so modular, soon enough, you could end up turning everything into a plugin, just for the sake of having an “elegant” design. And when you think about it, microservices are very similar to Eclipse plugins…
Does it really make sense to isolate really tiny microservices in their own containers? For each microservice, what’s the overhead gonna be like to be maintaining its build system, access rights to the corresponding Git repository, configuration files, …?
You should absolutely have a cloud native strategy when it comes to building your IoT solution, but don’t overthink it! Your microservice architecture will likely emerge over time, and starting with a too small service granularity will just make things unnecessarily complex.
Please use the comments section below to share your thoughts on cloud native and IoT. I think this will be a hot topic for the near future, and I’m interested in hearing your views!
There are only a couple weeks left (deadline is Nov. 13) for entering the fourth edition of our Open IoT Challenge!
The Open IoT Challenge encourages IoT enthusiasts and developers to build innovative solutions for the Internet of Things using open standards and open source technology.
You probably remember last year’s edition and its winner, Sébastien Lambour, who built an amazing solution: InTheMoodForLife. The project aims at analyzing sleep patterns to anticipate mood disorder episodes for people suffering from bipolar disorder.
Sébastien won $3,000, and we also provided him with an additional $1,000 to fund his participation in Eclipse IoT events where he presented his project. For example, Sébastien attended the Eclipse IoT Day in London, a couple months ago, and gave a brilliant talk where he shared his experience.
As a reminder, there is already a nice incentive for you to enter the challenge, even if you feel like you can’t compete for the first place (and you shouldn’t feel like that, by the way!). In fact, if you are among the 10 best submissions, our jury will award you a $150 gift certificate that will help you buy the hardware you need to build your project!
I thought it would be useful to share some of the ideas I would like to see come to life, and some of the technologies that I think would be interesting to use.
With Deeplearning4j moving to Eclipse, now is the perfect time to think of having deep learning play a role in your project. Whether you plan on doing image recognition, predictive maintenance, or natural language processing, I am curious to see if Deeplearning4j, or other open source projects in the machine learning / deep learning area, can help you implement your solution. There are some IoT gateways out there that are fairly capable, and even some that include a GPU, so please be crazy and push the boundaries of edge computing! 🙂
Many – too many, probably – IoT solutions are very consumer oriented (connected toothbrush anyone?), so I certainly hope to see lots of projects that are more industry-focused. Our production performance management testbed can probably give you some pointers regarding open source projects that are applicable, and even provide you some code to get started.
Blockchain and distributed ledgers
Beyond the buzzword and the hype, blockchain is still an interesting topic, which you may want to put to use in your Open IoT Challenge project.
Security is one key aspect of IoT. Blockchain might be a way for you to secure communications or data exchanges, but it is also interesting to think about using distributed ledgers as a way to enable a sharing economy.
What if you could “share” some of your IoT devices’ processing or networking power and get compensated, in a secure way, using a blockchain? And how about true “pay-per-use” scenarios, where e.g construction companies share a pool of high-value power tools for which actual usage is tracked, logged, and billed accordingly, through a blockchain?
Of particular interest, in my opinion, is IOTA, an open source distributed ledger which, by design, has no transaction fees (it has no miners, as the 2,779,530,283,277,761 (!) tokens that form the ‘tangle’ were all generated in the so-called genesis transaction).
This means that you can leverage the IOTA tangle to implement secured micro-transactions in your IoT solution, e.g to expose (and monetize) sensor data to the world. I would be particularly curious to see how IOTA performs on constrained devices, and how well it scales.
One of our sponsors this year, Sierra Wireless, will be providing the 10 best proposals with a MangOH Red IoT board. This board is perfectly suited for low-power IoT applications and would be the ideal partner in crime if running for years out of a small battery is important to you.
It is often an afterthought in IoT to think about the maintenance of the equipment. I am interested in seeing how your proposal will highlight how you plan on making your solution easy to operate, including things like over-the-air updates, energy consumption optimization, etc.
If you are not sure if your idea would make for a cool project, feel free to ping me, I will be happy to give you some feedback 🙂
I am looking forward to reviewing your proposals, and seeing all the cool projects you will be building over the next few months!
Last week, the Eclipse IoT community was pretty busy at EclipseCon Europe. We were having our largest Eclipse event of the year, and it featured lots of IoT.
After a much needed weekend break to recover from an incredibly fruitful week, I am taking some time to write down some of my personal takeaways.
Oh, and before you ask: we are working on uploading all the IoT sessions from the IoT Working Group meeting and IoT Day to YouTube. They will be available shortly, and as you can see in the blog post below, some of them already are! 🙂
IoT Day featured lots of real-world talks
I was really pleased with the turnout of the IoT Day. What was particularly interesting was hearing not only community insiders tell us about what they are doing for, and with, Eclipse IoT projects, but also getting the point of view of people who are pure consumers of the technology.
This year, for example, we had people like Müge Kural (Eteration) or Nicola La Gloria (Kynetics) telling us how projects like Eclipse Kura or Eclipse hawkBit have helped them implement use cases such as advanced dashboards for Electric Vehicles, or scalable software updates for Android-based IoT devices.
Look out for the video recordings of their talks, in the meantime, you can read more about Kynetics’ story in our recently published case study.
Eclipse IoT Testbeds Hackday
As you probably know by now, we are ramping up our Open IoT Testbeds initiative, and it was great to use EclipseCon Europe as an opportunity to spend some quality time with the different companies involved in the testbeds and discuss next steps. To encourage collaboration, we held a “hackday” on Wednesday.
One of my action items from the hackday was to get a mailing list set up. So, if you want to get more involved in the testbeds, you can now subscribe to email@example.com to participate!
It’s all about the integration
EclipseCon Europe coincides with the anniversary of the Eclipse IoT Working Group, and 6 years into the adventure it is great to see that this year, even more than others, the project teams spent a lot of time discussing how to better integrate the different projects with one another. For example, it has become pretty clear that Eclipse hono will probably become the de-facto standard for device connectivity, and there were lots of discussions on how to provide hono protocol adapters for PPMP (Eclipse Unide), OPC-UA (Eclipse Milo), or Eclipse Kura gateways.
Also, at the IoT WG meeting, we discussed how to structure the community work better and collaborate towards a more integrated Eclipse IoT stack. It has been proposed that we establish a sub-committee of the IoT WG dedicated to integration work. Expect to see more on that topic soon!
New projects got unveiled
You may have seen the news: just a week before EclipseCon, two new Eclipse IoT project proposals have been announced.
First is Eclipse Thingweb, a project that will be hosting an open-source toolkit for the W3C Web of Things ecosystem. Matthias Kovatsch from Siemens presented the project, and you can get his slides here.
The other project, Eclipse Cyclone, will put an open source implementation of the DDS (Data Distribution Service) middleware standard of IoT developers. Hans van’t Hag from ADLINK gave the presentation below, and his slides are here.
I am looking forward to seeing these projects move to Eclipse IoT over the next few months!