This repository contains a demonstrative dashboard for highlighting the system's key operation using the created En- & Decoder IoT software. The project's objective was to create an improved maintainable and scaleable IoT device-application structure, with the LoRaWAN and TheThingsNetwork technology.
The scope of this project was within educational course of the Internet-of-Things LAB during semester 2324 class, for the Hogeschool Arnhem Nijmegen Embedded Systems Engineering (Applied Science, Bachelor) program.
Here is an example of a dashboard: On the left a simple dashboard using the Panda package plots figures. On the right a terminal (integrate in VScode) shows the log of the raw api fetched data and the parsed in the system's structure.
Due to educational context were imposed on the project:
- Arduino compatibility (interpreted as PlatformIO acceptable).
- Reduction of Library Footprint.
- Doxygen documentation.
- Use of the provided hardware: KISS-NODE and IOT-NODE.
- Use of TheThingsNetwork for LoRaWAN backend solution.
- Refactoring of CayenneLPP payload.
- Copyright 'licensed'.
The decive objective was however to learn and implement a reliable, maintainable and scaleable Low Power Wide-Area (LPWA) IoT deployment structure concept.
Here is a broad overview of how the this IoT setup works:
- Encoder: Defines the payload protocol structure based on CayenneLPP, more details are found in the respective repo ENCODER.
- Sending over LoRa to TheThingsNetwork (TTN) LoRaWAN server.
- Decoding: On the TTN the payload is decoded using Javascript, more details are found in TTN_Decoder.
- Applicational Distribution: In this repo an example of a figurative dashboard is demonstrated, using the keepAndFetch TTN mechanism through the REST API.
The repo acts as a Python based example for getting the data from TheThingsNetwork for applicational distrubution useage. This was outside of the initial assignement scope, however a crucial step in IoT to succeed at.
The recommendation is to take this as a starting point for understanding how to fetch and parse data from TTN server. The code is absolutely a not well designed, it is just created using 'quick and dirty' approach for because it was not a high priority.
This Python TheThingsNetwork IoT App and its associated libraries are distributed under the terms of the Creative Commons Attribution-NonCommercial 4.0 International License (http://creativecommons.org/licenses/by-nc/4.0/), acknowledging the contributions of Tristan Bosveld, Klaasjan Wagenaar, and Richard Kroesen.
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.