Toward our path to the Wimp Project, I had the opportunity to work on some exciting new stuff I never heard of. Some of these where very interesting, and some others were either too hard to understand from a total beginner's perspective, or too far from my interests when coding.


Part 1: Starting point

I've started by working on Eclipse Kura without really understanding what the tool was made for, and how to set it up properly. I kind of learned what this kind of tools do and how they are supposed to help you, but the bundle system and the way you should write bundles and deploy them was not my "cup of tea". I also took a look and deployed Eclipse Kapua on a server, which was very easy to do (basically a docker container to run), but I did not really took the time to understand deeply that tool. That is on my to-do list, because as far as I know, Eclipse Kapua is on another layer and should be addressed after some lower level problems are solved.

Part 2: Experimenting with the tools

I also had the opportunity to hear or read some keywords I was absolutely unaware of before starting this project, for instance, four weeks ago, MQTT was something that had no sense to me, but today, I know that is a M2M IOT communication protocol, and that it is ultra light-weight and very simple to use by publishing and subscribing to topics.

I also had the chance to hear of other IOT technologies such as OpenHAB, HONO, PAHO and much more, thanks to the team.

Part 3: Start building

Well, after a lot of readings and turnovers, I finally put my efforts on a stack based on Docker, Node-red and Mosquitto for the first step of the project, which is getting sensors communicate with some kind of "dispatcher".

Why ? First because why not, and then, because Node-red is an equivalent to Eclipse Kura, except that it's based on NodeJS, a platform that suits me a lot better than Java, it is extensible, easy to use, to implement and to start interacting with, and it has a lot of pre-built components. You can also write your components as simple javascript modules and see them appear right away in your Node-red dashboard, and you immediately can start interacting with them.

I also suggested a new architecture based on micro-services, not because micro-services is a buzzword, but because we truly need our solution to be scalable, and we need every single component to be partially or completely independent and separately deployable.

That architecture is in a building process, but what I came up with for now looks like the figure below :

Wimp suggested architecture Rafik

Of course this is probably full of bad designs, and this is the reason why it will be discussed with the team, to provide insights, improvements and all kind of feedback, but this is what I came up with regarding my very limited (or null) experience on IOT and how the whole ecosystem works.

I am currently working on the communication between the node-red flows and the MQTT brokers which should be done quickly thanks to node-red fantastic UI, so that I can catch messages, work on them, and send them back to the aggregation part, but I want to make sure that everything will be scalable and could be duplicated and deployed as we grow.