An Open-Source prototype for collecting, working with and displaying sensor data from MQTT enabled IoT devices. https://wiki.curious.bio/de/Projekte/IoT-Plattform
Go to file
2023-09-16 16:30:21 +02:00
.reuse first commit 2023-01-25 12:21:02 +01:00
docs fixed one more path 2023-09-16 16:16:10 +02:00
LICENSES first commit 2023-01-25 12:21:02 +01:00
nix updated nix based backend image generation 2023-06-19 14:35:24 +02:00
software In order not to commit binaries, I created an own Dockerfile with the required dependencies and used it. 2023-09-16 14:40:44 +02:00
.dockerignore first commit 2023-01-25 12:21:02 +01:00
.editorconfig updated dev env 2023-02-07 16:55:21 +01:00
.envrc added a nixos configuration to build and deploy the gateway 2023-02-20 23:03:41 +01:00
.gitignore added kicad and nix file and folder excludes 2023-06-19 14:32:41 +02:00
flake.lock added a nixos configuration to build and deploy the gateway 2023-02-20 23:03:41 +01:00
flake.nix updated nix based backend image generation 2023-06-19 14:35:24 +02:00
mkdocs.yml fixed paths in some rather unknown files 2023-09-16 16:30:21 +02:00
okh.toml fixed paths in some rather unknown files 2023-09-16 16:30:21 +02:00
README.md wording 2023-09-16 15:51:58 +02:00

IoT Prototyping Backend

Overview

This project is a backend solution for prototyping Internet of Things (IoT) services. It leverages the power of Docker containers to easily integrate Grafana, InfluxDB, and Node-RED into a seamless, scalable, and robust backend system. The solution aims to provide rapid prototyping capabilities for IoT applications that need real-time data visualization, storage, and workflow automation.

Features

  • Eclipse Mosquitto: MQTT broker
  • Grafana: Real-time data visualization and monitoring dashboard
  • InfluxDB: High-performance data storage
  • Node-RED: Flow-based development tool for visual programming and data flow automation

Prerequisites

Docker

First install Docker and docker-compose:

If you want to use an UI for Docker, you can optionally also use Docker Desktop.

Installation

Clone the Repository

git clone https://code.curious.bio/simonox/iot-backend
cd iot-backend

Build and launch Docker containers

Most Docker containers are of the shelf, but the Node-RED container has the be built, so some usefull plugins are already included. You can build and run these Docker containers in a single step:

docker-compose --file software/container/docker-compose.yml up --force-recreate --build

Usage

Mosquitto

Eclipse Mosquitto is an open source message broker which implements a server for MQTT. It runs in Docker and is exposed on the default MQTT port 1883. You can subscribe to and push into topics:

mosquitto_sub -h localhost -t '#' -p 1883
mosquitto_pub -h localhost -p 1883 -t '/' -m $(date --utc +%s)

There is also a very usefuly tool to debug MQTT: MQTT Explorer, that is also available at mqtt-explorer.com.

Node-RED

Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.

It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click

Node-RED is also running in Docker and is exposed on port 1880: http://localhost:1880/

InfluxDB

InfluxDB is a database for any time series data with a single. It runs in Docker and is exposed on port 8086: http://localhost:8086/ (you have to create an initial user in just a few simple steps)

Grafana

Grafana is a software to build operational dashboards. It runs in Docker and is exposed on port 3000:

You can login to Grafana: http://localhost:3000/login (admin:admin)

Examples and set-up

Setting up a simple flow in Node-RED

A simple introduction to Node-RED can be found - along with the nodes / the code - in this repository.

Connecting Node-RED to Influx

A more sophisticated exampe on how to connect Node-RED to influx is also available in this repository.

Setting up Grafana

Have a look at the the document in this repository.

Attaching a Shelly plug

As an example you can use a Shelly plug flashed with Tasmota and feed MQTT data with Node-RED into InfluxDB and visualize it with Grafana. Have a look, here.

Contribution

Feel free to open an issue for bugs, feature requests, or questions. Contributions are welcome.

License

This project follows the REUSE Specification and is licensed under the GPL 3.0 or later License - see the LICENSE file for details.