First Integration

Today was a good day for integrating some of the difference pieces together. Many students and colleagues participated: around the table were Jianbin, Jean, Christopher, Hafedh, Manel, and Ghizlane. After learning how to use Node-RED and its “flows”, we got the light sensor to broadcast info. through a MQTT broker running on one Edge computer (the .205). We also go Jean’s computer to (re)broadcast the same data in a JSON format and Yann’s computer to broadcast a timestamp.

MQTT Security Notes

Maybe the naive and easy way to implement the this security layer could be pre-generate user + pass on the device inside a secure layer of SSL using Certs or Pre-shared-key. Also, the client device must be encrypted. Reading Paper about IoT protocols They consider MQTT as the better (mature) choice MQTT and security (DEFCon presentation) Securing the connection: User + Pass Use encryption Segmentation and Trust (by IP) IoT gateway to encrypt the data (if possible, may defeat the purpose) Securing EDGE nodes (whitepaper) Authentication in Mosquitto No authentication User + Pass Be sure to add network encryption Encryption with certificates require_certificate FALSE: if false, the SSL/TLS component of the client will verify the server but there is no requirement for the client to provide anything for the server: authentication is limited to the MQTT built in username/password.

Notes on MQTT and Mosquitto

TODO Check how the broker (Mosquitto) manage the data Check the security with SSL Check the authentication Check WPS for authentication Wait to DNS spread and create the cert using certbot for Assess all possibilities of security MQTT security concerns Standard port: 1883 MQTT over SSL: 8883 SSL adds overhead MQTT is the protocol Differences between MQTT v3 and v5 Front-end for Mosquitto Check how to use the version 5.

Hands on with COAP

My first assignment on our WIMP project is to experiment with COAP. I started by readings and understanding the architecture of COAP vs. MQTT. The second day I decided to get hands on experience with COAP and started coding a client and a server. This approach was much more interesting and educative. Since I had to code in Java (for the first time) I started by downloading Californium by following the tutorial on https://cs.

Connecting Kura to Kapua

The first goal of our project is to have two RaspberryPis communicating to each with MQTT protocol. MQTT an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. To have a more interesting infrastructure, we setup an IoT gateway with Kura on a RaspberryPi that will manage all the connections between IoT edges and reduce Cloud-end computing resouces.

Kura & Kapua

The installation of Kura was made locally in the raspberry pi. Kapua was installed locally using a docker container as explained in the official documentation The communication between Kura and Kapua works following this tutorial It is necessary to use the publisher example. The communication between Kura and the broker (Mosquitto) that connects with the devices also works independently. To manage multiple connections (these two connections Kura-Mosquitto, and Kura-Kapua) I have considered three possibilities the first one is to create a bundle that subscribes to a topic of the Mosquitto broker and send that information using Kura wires https://github.

Discovering OpenHAB and Node-RED

My first days working on the WIMP project were devoted to discovering OpenHAB and Node-RED. Here are some of my basic notes along with useful links. OpenHAB OpenHAB is a “a vendor and technology agnostic open source automation software for your home”. It lets the user manage things and items, writes rules with a simple syntax, create dashboards (sitemaps and HABPanels)… Docs: Examples: Cloud integration OpenHAB Cloud openHAB Cloud openHAB Cloud add-on myopenHAB : free instance to avoid hosting a personal instance Other systems Node-RED IFTTT Azure IoT Hub Connector Google Calendar Scheduler As far as I know, there does not seem to be an integration solution for Kapua or Kura.

Baby steps into IOT

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.

About the Project, Running Example I

After much coding, experimenting, and discussions, we realised that some choices regarding the core frameworks. We began exploring Eclipse Kuapua and Kura to realise that they have a steep learning curves. Meanwhile, we played with Node-RED much successfully… while a third contender is OpenHAB. Each of these frameworks has strengths and weaknesses but these are not obvious at first and choosing one over the others could ease some parts of the development while also closing some avenues in the future.

Quality Characteristics

With help from Ghizlane El Boussaidi and Zeineb Baba-Cheikh from √ČTS, we discussed the quality characteristics impacting IoT systems. After a day of brainstorming, coding, and discussions, we came up with the following characteristics for any hardware and software part of an IoT system, in alphabetical order: Costs. Cloud needs. Combination with other hardware/software. Deployability. Extensibility. Fault tolerance. Hardware availability (and provisioning) Learning curve. Mobile needs. Processing needs. Programming languages.