{"id":27976422,"url":"https://github.com/devestenmechatronica/raspberrypi-iot-dashboard","last_synced_at":"2025-06-15T07:03:17.206Z","repository":{"id":291810630,"uuid":"926995805","full_name":"DeVestenMechatronica/raspberrypi-iot-dashboard","owner":"DeVestenMechatronica","description":"Een Raspberry Pi opstelling met InfluxDB en Grafana om IoT-data te verzamelen en te visualiseren.","archived":false,"fork":false,"pushed_at":"2025-05-19T10:52:28.000Z","size":2885,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T07:03:12.882Z","etag":null,"topics":["iot","raspberrypi"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeVestenMechatronica.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-04T08:15:58.000Z","updated_at":"2025-05-19T10:52:31.000Z","dependencies_parsed_at":"2025-05-06T17:29:41.088Z","dependency_job_id":"059c9875-8d62-49ba-a823-9757284f5c05","html_url":"https://github.com/DeVestenMechatronica/raspberrypi-iot-dashboard","commit_stats":null,"previous_names":["devestenmechatronica/raspberrypi-iot-dashboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DeVestenMechatronica/raspberrypi-iot-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeVestenMechatronica%2Fraspberrypi-iot-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeVestenMechatronica%2Fraspberrypi-iot-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeVestenMechatronica%2Fraspberrypi-iot-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeVestenMechatronica%2Fraspberrypi-iot-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeVestenMechatronica","download_url":"https://codeload.github.com/DeVestenMechatronica/raspberrypi-iot-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeVestenMechatronica%2Fraspberrypi-iot-dashboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259935588,"owners_count":22934384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iot","raspberrypi"],"created_at":"2025-05-08T01:26:33.333Z","updated_at":"2025-06-15T07:03:17.201Z","avatar_url":"https://github.com/DeVestenMechatronica.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Raspberry Pi IoT Dashboard\n\u003cimg src=\"documentation/raspberrypi-iot-dashboard.jpg\" align=\"right\" width=\"40%\"/\u003e\n\n**Deze opstelling maakt van een Raspberry Pi een lokale datahub en monitor voor Internet of Things-projecten.** De Raspberry Pi draait `InfluxDB 3` (een efficiënte tijdreeksdatabase) en `Grafana` (een krachtige tool voor datavisualisatie), met een scherm voor directe visualisatie.\n\nIoT-apparaten op het netwerk (Arduino, Raspberry Pi, ...) kunnen meetgegevens naar deze datahub sturen, waar deze worden opgeslagen en visueel worden weergegeven. Dit maakt het ideaal voor projecten rond sensoren, dataverwerking, netwerken en visualisatie. Hiermee kunnen leerlingen inzicht verwerven in hoe data wordt verzameld, verwerkt en gevisualiseerd binnen een IoT-context.\n\n\u003cbr clear=\"right\"/\u003e\n\n**Hardware:**\n- **Raspberry Pi 3B+/4B/5B** single-board computer\n- **Raspberry Pi 7\" Touch Display** om de data weer te geven\n\n**Software:**\n- **Opslag van sensor data** met `InfluxDB` database\n- **Visualisatie van de data** met `Grafana` dashboard\n- **Lokale weergave** met `Chromium` webbrowser\n\n## Getting Started\n### Opstelling\nDe kern van het systeem is een **Raspberry Pi** met het **Raspberry Pi 7\" Touch Display** (of klein HDMI-scherm). De Raspberry Pi is verbonden met het lokale netwerk via wifi of een netwerkkabel, zodat IoT-opstellingen zoals Arduino’s of andere Raspberry Pi’s via het netwerk gegevens kunnen doorsturen.\n\n\u003e[!TIP]\n\u003e**Het is aangeraden om een appart (wifi) netwerk te voorzien voor IoT projecten.** Bespreek dit met je ICT coordinator.\n\nWe gaan ervan uit dat een SD kaartje reeds geinstalleerd is met hierop `Raspberry Pi OS`, en toegang tot de opstelling via `SSH` of via een `terminal`-applicatie op de lokale grafische interface.\n\nVoor we beginnen zorgen we dat ons systeem up-to-date is:\n```sh\nsudo apt update\nsudo apt upgrade -y\n```\n### InfluxDB\n`InfluxDB` is een gespecialiseerde database voor tijdsgebonden data - denk aan temperatuurmetingen, CO₂-waarden of lichtintensiteit die om de paar seconden worden doorgestuurd door IoT-sensoren.\n\nIn tegenstelling tot een klassieke relationele database (zoals MySQL), is InfluxDB ontworpen om efficiënt grote hoeveelheden meetdata te verwerken en op te slaan. Het systeem begrijpt meteen wat je bedoelt met “laat de laatste waarde zien” of “bereken het gemiddelde van de afgelopen 10 minuten”.\n\n#### Installatie\nInstalleer `InfluxDB`, en volg de instructies van het installatiescript\n```sh\ncurl -O https://www.influxdata.com/d/install_influxdb3.sh\nsh install_influxdb3.sh\n```\nOm de `InfluxDB CLI` te kunnen gebruiken, moet je eerst het volgende commando uitvoeren. Test of je het kan gebruiken door de versie op te vragen.\n```sh\nsource ~/.bashrc\ninfluxdb3 --version\n```\n\nDatabase server starten:\n```sh\ninfluxdb3 serve --object-store file --data-dir ~/.influxdb3 --node-id node0\n```\n\nWe willen dat InfluxDB ook start bij het opstarten. Voeg hiervoor volgende lijn toe in het bestand `/etc/xdg/labwc/autostart`:\n```\n/home/mechatronica/.influxdb//influxdb3 serve --object-store file --data-dir ~/.influxdb3 --node-id node0 \u0026\n```\n\n#### Aanmaken database \u0026 gebruiker\nToegang `token` genereren voor de `admin` gebruiker:\n```sh\ninfluxdb3 create token --admin\n```\n\u003e[!IMPORTANT]\n\u003e **Hou deze `token` goed bij!** Deze hebben we nodig om toegang the hebben tot de database.\n\u003e Token: apiv3_JQ6PIMb81AYBgdMEY0FLLN_pjIF8zkA08sbVRzSAqZSeCg-1eoYm8a20XP8GWesUywz3elhDIXtDIRs489IJTw\n\nOnze `database` voor de sensor data aanmaken:\n```sh\ninfluxdb3 create database sensors --token apiv3_EGJTJEnVwntVLy-j8hBkvNaOdujM-sM5cXAZMV8fdWsMirvM71VwIrIOniQZMk3Dl0P4Gk9SCPhfKprhXqsrEg\n```\n\n\u003e[!TIP]\n\u003eOm vanuit een Python programma data weg te schrijven naar de `InfluxDB` database via HTTP, gebruik de je `influxdb3-python` library.\n\n\u003e[!TIP]\n\u003eNa een plots verlies van stroom kan de database corrupt zijn waardoor de database server niet meer kan starten. Verwijder de bestanden in de `~/.influxdb3/node0/wal/` map en probeer opnieuw.\n\n#### referenties:\nhttps://docs.influxdata.com/influxdb3/core/reference/cli/influxdb3/\n\n\n### Statisch IP adres\nWe willen dat onze database server steeds op dezelfde gekende *plaats* bereikbaar is voor andere toestellen op het netwerk. Hiervoor gebruiken we een statisch ip adres. Dit configureren we met `nmcli`:\n```sh\nsudo nmcli con add con-name \"Wired connection 1\" ifname eth0 type ethernet ip4 10.30.40.2/24\nsudo nmcli con up \"Wired connection 1\"\n```\n\n### Grafana\n`Grafana` is een krachtige visualisatietool waarmee je live dashboards bouwt op basis van de data in InfluxDB. In plaats van saaie tabellen zie je dynamische grafieken, meters en diagrammen die onmiddellijk reageren op wat er in het systeem gebeurt. Het is dé tool die in professionele omgevingen gebruikt wordt om processen, machines of omgevingsdata te monitoren.\n\n#### Installatie\nVoeg de `Grafana` repository en key to aan de `apt` package manager (als administrator):\n```sh\nsudo curl -fsSL https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana-archive-keyring.gpg \u003e /dev/null\nsudo echo \"deb [signed-by=/etc/apt/keyrings/grafana-archive-keyring.gpg] https://packages.grafana.com/oss/deb stable main\" | sudo tee /etc/apt/sources.list.d/grafana.list\n```\nInstalleer `Grafana` met `apt` (als administrator):\n```sh\nsudo apt update\nsudo apt install grafana\n```\nStart de `Grafana` systeem service met `systemctl`:\n```sh\nsudo systemctl enable grafana-server\nsudo systemctl start grafana-server\n```\nControleer de status van de `Grafana` service\n```sh\nsudo systemctl status grafana-server\n```\n\n#### Configure Grafana auto-login\nin `/etc/grafana/grafana.ini`, wijzig deze lijn naar 'true':\n```\n[auth.anonymous]\nenabled = true\norg_name = Main Org.\norg_role = Viewer\n\n```\n### Chromium (browser)\nOm het Grafana-dashboard rechtstreeks op het aangesloten scherm van de Raspberry Pi weer te geven, gebruiken we de Chromium-browser. Dit is de open-source basis van Google Chrome, en draait vlot op de Raspberry Pi. Chromium wordt zo ingesteld dat het automatisch opstart in volledig scherm (kioskmodus) en het lokale Grafana-dashboard toont. Op die manier wordt het scherm een visualisatiepaneel.\n\nInstalleer de `Chromium` web browser:\n```\nsudo apt install chromium-browser\n```\nOm te zorgen dat de `Chromium` browser start op ons `Grafana` dashboard wanneer de Raspberry Pi opstart, voeg volgende lijn toe in het bestand `/etc/xdg/labwc/autostart`:\n```\nsleep 10 \u0026\u0026 /usr/bin/chromium-browser --incognito --kiosk --user-data-dir=/tmp/chromium-tmp --noerrdialogs --disable-infobars --ozone-platform=wayland http://localhost:3000/d/bel1pwxub2fwga/monitor?orgId=1\u0026kiosk= \u0026\n\n```\n\n\u003e[!TIP]\n\u003eOm de `Chromium` browser te sluiten wanneer die in kiosk-modus is, sluit je een toetsenbord aan en druk je `alt+F4`\n\n\n#### Configureer `InfluxDB` als databron voor `Grafana`\n1) In de browser, open het Grafana dashboard `https://localhost:3000`, en log in met de `admin` credentials.\n2) Connecteer met de Influx als databron\n```\nQuery language: SQL\n\n--- HTTP ---\nURL: http://localhost:8181\n\n--- InfluxDB details ---\nDatabase: Sensors\nToken: \u003ctoken from earlier\u003e\nInsecure connection: true\n```\n\n## Licentie\n**Copyright© 2025 Mechatronica Campus De Vesten**. Dit project is gedeeld onder de [**MIT-licentie**](LICENSE.txt).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevestenmechatronica%2Fraspberrypi-iot-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevestenmechatronica%2Fraspberrypi-iot-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevestenmechatronica%2Fraspberrypi-iot-dashboard/lists"}