#openIoTChallenge — Final submission
Today is submission day for the Open IoT challenge, so we want to give you a summary of what we achieved.
First of all, we want to give an understanding of the general conditions we were working under:
Who are we?
We are a team of five people from Bosch Connected Industry — four of us are the technical team (three business informatics students and one graduate), the other one is a design specialist that supported us in creating all those pretty videos, pictures and logos. None of us is a professional software developer and before the challenge we had very little contact with the technologies involved in our solution, but we are passionate for new technologies and the use of open standards.
What was our goal?
We wanted to investigate how open-source software from the Eclipse IoT community can be used to build a full (I)IoT solution-stack from sensor to visualization based on the classical three tier architecture for IoT.
Therefore it was our goal to implement the following solution stack (for additional information, check out our kick-off blog post)
What was our timeline?
We signed up for the challenge in November with a rough idea of what we wanted to do. By the beginning of 2018 our plans got more and more concrete and we started investigating and getting hands-on experience with most of the technologies involved. Our “crunch-phase” started in the beginning of March, so we spent roughly two weeks working with full focus to implement our target architecture.
So — having this in mind — we would like to go through what we did and did not achieve and what we learned:
What did we achieve?
First things first: We managed to get the data flow from our sensing device (XDK) up to the Web UI through all the components in our target architecture, which was our primary goal — Hurray!!
Moreover, we were able to implement additional features like data analytics and making our XDK tweet on Twitter — Double Hurray!!
But let’s get a little bit more into detail with the different components: We achieved to
- Send data from the XDK to the Kura Broker via MQTT over WiFi
- Set up Kura to be able to receive and process data
- Develop and deploy a bundle for Kura, that processes a simple JSON string to our twin protocol using Apache Camel
- Stretch goal: enrich twin data by a simple analytics service, that calculates additional twin features like minimal, maximal and average values using Python and a MySQL database
- Stretch goal: implement a twin-based Twitter bot using Python and the tweepy-library (Check out @cissos_bot)
Our source code and detailed instructions for setting everything up can be found on our Github.
What we did not achieve (yet)?
While we were able to implement additional features in some parts of our architecture, there were also two components that we were not able to implement in the way we would have wanted to.
The first one is obviously the connectivity of the CISS-Sensors via USB to our gateway. As we focused on implementing the full stack using the XDK as a data source first, we started looking into the CISS-Sensors pretty late and figured out that we were missing some drivers and firmware to be able to receive the data from our sensors. Getting access to these components took a few days, which is why we were not able to get the connectivity by today. :(
The second one is the connectivity between Kura and Ditto. Our original idea was developing a bundle that subscribes to data flowing over the Kura MQTT broker, transforms it and pushes it directly to Ditto. Because the gateway is running in our corporate network and does not have access to the internet, we had to split this component into two parts. We implemented a bundle that subscribes to a channel on the broker and publishes the data back to the broker. For the connection to Ditto, we found a pretty weird workaround by hosting a web service that runs within our corporate network. This service has access to the broker, subscribes to the channel that contains the processed data and publishes it in IoT-Things. We are aware that this is far away from an ideal solution, but unfortunately it is the only solution way for us to successfully establish the Kura-Ditto-connectivity.
What did we learn?
Our main goal in this challenge was learning. And we really learned a lot — Our key takeaways are:
- Open source & open communities rule:
Having open solutions and an open community makes life as a developer so much easier — especially if you are new to a certain technology. Basically for everything we did — from the Kura bundle to the Twitter bot — we started by going through some sort of tutorial and were able to find support and hints whenever we were stuck at some point. If we had used closed solutions, it would have been impossible to get our prototype up and running in such a short timeframe.
- Kura & Camel are the perfect couple:
Honestly speaking, it took us quite some time to start understanding the capabilities of Kura and the concept of the OSGi based architecture, but once you get used to it and successfully implement your first bundle, you start to realize how many opportunities this offers you. Having this paired with Apache Camel, which gives you an almost infinite amount of components for ETL, is really powerful and we believe that this amazing software couple will help us out many more times in the future!
- Digital Twins are amazing:
The term “Digital Twin” is a very fuzzy buzzword and sometimes it is hard to understand and explain the benefit to others — until you get your hands on Ditto for the first time! Once we got our data into the digital twin, it was incredibly easy to develop our solutions like the Twitterbot or the Web UI. But not only solution developers can use the data within the twin — our small analytics service shows that data scientists might also be using the data to generate insights and then mirror them back to the twin, which allows all the solutions to become more powerful.
When we start thinking about bringing more and more data sources and solutions, this concept becomes crucial to keep the effort for data acquisition and solution development as little as possible.
The Open IoT Challenge is over, but we are definitely not done working on our architecture.
After demonstrating that our solution stack works, it is now our first priority to implement the features that we did not manage to finish in time, which are the connectivity between CISS and Kura and the direct connection between Kura and Ditto from within an OSGi-bundle in Kura.
After that, we will start looking for ways to bring this stack into a real production environment within our company, as we believe that this open-source based architecture can bring real value to our plants! For that, we will surely have to integrate additional data sources like PLCs or local systems. So after proving that open-source software is great for developers, it is now our mission to show that open-source software is also great for the end-user! We are looking forward to that upcoming challenge and would like to thank the entire community for the opportunity to participate in this stimulating challenge as well as to increase the awareness of open-source based IoT solutions in the industrial environment.
The CISSOS team