IoT in LHC: A Deeper Look into the Frameworks

I’m Lamija Tupo, a student from Sarajevo, and I’m a summer student in CERN as part of CERN Openlab. I’m working on ‘Edge Computing: Integrating IoT Devices into the LHC Control Systems’ project using the Intel® Joule development board.

The final decision on which framework to use should be based on research about the top choices. In the case of the project I’m working on, that’s OpenSensors, IoTivity, SiteWhere, and AllJoyn.

OpenSensors seemed like a very good candidate. It is a framework started with the goal of sharing the data collected by the sensors, in order to help others and improve analysis of data. Even though the last release was about 2 years ago, there has been a lot of newer projects made with it in the meantime. Despite its main goal being open data, OpenSensors allows the users to choose if the data generated by their sensors are going to be public or private. The framework takes care of managing the devices and storage, and of analytics. That is quite useful for most projects, as the developer doesn’t have to worry about these things, just connect the sensors and devices. However, for this particular project I needed more control over these features.

IoTivity is the second framework I considered. It was developed by Linux* Foundation and sponsored by Open Connectivity Foundation, however they later merged with Allseen Alliance. It has APIs for Java*, C, and C++. The latest release was just 2 months ago. It has implemented several kinds of service discovery, multicast service discovery included. It also has a notification service implemented, which would be useful in case of an error or a broken sensor. However, I didn’t find anything about dynamic device registration, and it seems like it is more oriented toward cloud than edge computing.

SiteWhere is a framework written in Java. Its’ latest release was 2 months ago. The goal is to enable users to create applications which would scale well, so there is a lot of focus on big data. It was made on Apache Tomcat as its web container, and has SPIs for HBase and MongoDB. It has integrated alert messages which consist of a type and a message. All in all, it’s an excellent framework for all kinds of applications, however I wasn’t able to find any information about its service discovery.

AllJoyn is a framework made by Allseen Alliance. Its latest release was a year ago. It offers APIs for Java, JavaScript*, C++ and C. A lot of the focus is on communication between devices which is implemented via AllJoyn bus. All devices which run AllJoyn can communicate, regardless of brands, categories, OSs, type of transport, etc. without using cloud. Adding a new device to the network is very easy, as one device can be defined as ‘onboarder’ and it registers new devices ‘onboardees’ into the network. The devices use interfaces for bridging their differences, and these interfaces, along with services, can be private or common for all devices. AllJoyn also has mDNS implemented, which is the preferred service discovery for this project. It also has implemented a notification service, which is needed for this project.

In the end, all of these frameworks are excellent, however AllJoyn fit most of the needs of the project, and that is why it is my framework of choice. 

For more complete information about compiler optimizations, see our Optimization Notice.