Table of contents
- Overview
- Ideation & Team Setup
- Team solutions
- Team AI in the sky - AI based Device Assistant
- Team super thin-edge - Container based thin-edge integration
- Team MQTT squirrel - MQTT Service Scenario
- Team becoming experts - Getting started with Cumulocity IoT
- Team da-edge - thin-edge.io advanced diagnostic extensions (Winner device Integration)
- Team SAP Integration - Integrating SAP with Cumulocity IoT + optimistic concurrency for Cumulocity API
- Team Query Crafter - Extend Cumulocity IoT API with GraphQL (Winner Application Enablement Challenge)
- Team LLMocity - LLM enabled Reporting
- Team OEEAaaABB - OEE App as an Analytics Builder Block
- What else happened?!
Author: Stefan Witschel, Ecosystem Manager, IoT Ecosystem, Software AG
Overview
On 9th of April 2024 I had the honor to host the second IoT Hackathon at the International User Group Conference 2024 in Dublin.
This year again 23 participants of companies like Enercon, Inetum, August Storm, ISAAC Engineering, SCC EDV-Beratung, UTAH Informationsservice GmbH worked in 9 mixed teams and generated 8 great solutions in the end.
Ideation & Team Setup
Initially all the participants were introduced to the agenda, challenges and experts of the Hackathon. After that we started with the ideation. Due to limited time I did not do any introduction round so the participants where somehow forced to get to know each other during the ideation which worked very well.
For the ideation I prepared some blueprints printouts as inspiration which were either provided by the participants upfront or by the experts attending.
In the end they formed 9 teams of size 1 to size 4 and worked on 9 topics in 3 different challenges:
- Device Integration Challenge (3 topics)
- Application Enablement Challenge (2 topics)
- IoT Solutions Challenge (4 topics)
In the end one of the teams has been awarded as the winner of each challenge and brought home a very unique trophy!
Let’s have a look at the solutions in more detail!
Team solutions
Team AI in the sky - AI based Device Assistant
Team AI in the sky implemented an use case where wind turbines and wind angles should be aligned by using Open AI.
As assets they have simulated a wind turbine with an angle attribute and a wind service providing the current wind direction. In a microservice they have integration OpenAI API to a specific prompt that should give the response if the wind turbine should be aligned to the wind direction or not based on some criteria.
Two modes were implemented: In the first mode the turbine gets automatically aligned to the wind direction and in the second mode it suggest to turn it and the operator can decide to align it.
Also to visualize this, they have implemented a UI Plugin which display the wind turbine angle + wind direction. The lessons learned: LLM like OpenAI can help to build an assistant but sometimes the suggestions aren’t very correct so one need to optimize the prompt or the provided data.
Team super thin-edge - Container based thin-edge integration
Team super thin-edge tried to find a solution for the problem that sometimes devices doesn’t allow to deploy anything directly on the operating system. Instead, only containers are allowed to extend functionality. thin-edge.io with its flexible component architecture might be installed in such a container but it is not possible to manage itself and other containers running in a container.
The team solved that by adapting the software management plugin to also allow management of containers. In the device management it was possible to see the current version of the installed component in each container. As a next step also the installation & removal of software could be implemented using the same approach.
Team MQTT squirrel - MQTT Service Scenario
This team used the brand new MQTT Service which is currently in private preview and offers a generic MQTT Broker as part of Cumulocity. They integrated a SCADA system with real-world data and topic structure to the MQTT Service and used an open-source tool the dynamic mapper to map the data to the Cumulocity Domain model.
Multiple lessons learned were generated by doing so: First of all, the limitation of missing wildcard support in MQTT Service increased in the priority and might be addressed soon by product development. Another one was, that you don’t have to write any single code to but just use Cumulocity + open-source tooling to fully integrate complex SCADA systems which makes it a very powerful & flexible tool.
Team becoming experts - Getting started with Cumulocity IoT
This team were totally Cumulocity beginners and joined the Hackathon to spend some time to understand how IoT and Cumulocity IoT works. Some experts like @Reuben_Miller2 and @Harald_Meyer introduced them to thin-edge.io and main Cumulocity IoT features like Dashboarding, Device Management, Smart Rules + Analytics Builder and more. After that they played around with the platform but did not generate any solution.
Team da-edge - thin-edge.io advanced diagnostic extensions (Winner device Integration)
Team da-edge chose the task to extend thin-edge.io with additional functionality in a use case of operation in difficult environments. Just imagine you have devices that are not in the same network and still should be managed by thin-edge.io and report diagnostics such as log files, when errors occur.
Therefor they extended thin-edge.io with a plugin that allows communication using software defined networks between thin-edge.io and its attach children. Also they demonstrated using that virtual network to connect to the child device and generating diagnostic data remotely for that device which finally resulted in an issue at GitHub.
With this solution the jury decided to award their performance with the Winner of Device Integration Challenge award.
Team SAP Integration - Integrating SAP with Cumulocity IoT + optimistic concurrency for Cumulocity API
This team tried actually to solve two problems. The first more obvious regarding their team name was to integrate SAP BTP with Cumulocity IoT. They tried this initially by implementing a microservice that pushes the Cumulocity data to SAP BTP. After some time they switch around and tried the other way around by integrating the C8Y API into SAP BTP which in the end was more successful. In their case they were able to integrate the inventory API to the BTP.
As a second step they tried to find a solution for the problem of concurrent API requests which could leads to data conflicts and data loss in the C8Y API. They implemented a microservice that uses the C8Y API and added an ETag header to the requests with a hash that is unique for the current state of the object. If the object changes, the hash and ETag header changes as well. If the object does not change, the ETag header stays the same.
Using that two important use cases can be implemented.
First of all, comprehensive & complex data must be only transported if the ETag header changes. Currently by doing GETs the whole object is returned every time, even the whole object has the same state.
Secondly it allows optimistic concurrency if an object is retrieved and should be changed. If the ETag header is still the same on change request, the update is successful. If the object has been changed meanwhile by any other instance the ETag header hash does not match anymore and the change is permitted.
Team Query Crafter - Extend Cumulocity IoT API with GraphQL (Winner Application Enablement Challenge)
GraphQL is a comprehensive query language that allows easy and flexible queries on semantic objects. The Cumulocity API currently does not support this so the team implemented microservices to add GraphQL on top of the C8Y API.
In the end they even provided two solutions:
- In the first solution they implemented a C# microservice that uses a GraphQL lib to add it on top of the C8Y API to allow very semantic queries like “Return all windmills with the following attributes”
- Secondly they implemented on top of Digital Twin Manager a GraphQL explorer which is running within Cumulocity IoT. Based on the provided asset data queries could be executed and used to calculate aggregated values in the asset hierarchy.
This successful research & solutions impressed the jury to that this team has been awarded as winner of the application Enablement challenge.
Team LLMocity - LLM enabled Reporting
Team LLMocity worked on the idea to provide an AI enabled reporting within Cumulocity IoT. For doing that they first of all simulated a few devices using node-red and MQTT. They generated some metrics data which they would use for reporting.
In a microservice they implemented an Open AI Integration and exposing new endpoints to request analysis of the provided data within a specific time frame. Also the microservice allows flexible prompting to be forwarded to the Open AI allowing different kind of analysis. In there example they demonstrated to look for anomalies in a series of metrics.
Because of the very mixed team setup, innovative idea & solution the jury awarded this team with Winner in the Challenge IoT Solutions.
Team OEEAaaABB - OEE App as an Analytics Builder Block
Finally @Harald_Meyer decided to work on an idea to implement a new OEE calculation block for the Analytics Builder. Coming from the existing & complete OEE App that was taken over by a partner it might be useful allow flexible OEE calculation in Streaming Analytics and to be used in any custom Dashboard or solution.
What else happened?!
After every team totally delivered this day it was time for networking & socializing. We went out to a external pizzeria where we had a slice of nice pizzas and could conclude the day by talk to each other. After that we joined the C8Y Mixer event in a cocktail bar nearby.
For me it was again one of the highlights of this year hosting this Hackathon. It is always very refreshing to meet new people and do something amazing in just one day. I really enjoyed that spirit and I think the high quality of solutions speak for themselves
I would be happy to see you in one of the next Hackathons I’m planning. Stay tuned if you are intrested to join…
This article is part of the TECHniques newsletter blog - technical tips and tricks for the Software AG community. Subscribe to receive our quarterly updates or read the latest issue.