Software-Ingenieur & Web-Entwickler

IoT-Projekt erweitern

IoT-Projekt erweitern: Datenlogging, Warnmeldungen, OTA-Updates & Multi-Geräte-Unterstützung

Im vorherigen Beitrag haben wir ein IoT-System aufgebaut, bei dem ein ESP32 Sensordaten über MQTT an die Cloud sendet und diese in Echtzeit visualisiert. Jetzt heben wir das Projekt auf das nächste Level – mit wichtigen Funktionen wie Datenlogging, Echtzeit-Warnungen, OTA-Firmware-Updates und Unterstützung für mehrere Geräte.

1. Datenlogging mit Firebase

Echtzeitdaten sind nützlich – aber für Auswertungen und Verlauf sind gespeicherte Daten unverzichtbar. Wir nutzen Firebase Realtime Database zur Speicherung in der Cloud.

1.1 Firebase vorbereiten

  • Neues Projekt auf console.firebase.google.com erstellen
  • Realtime Database aktivieren und Testregeln setzen: { ".read": true, ".write": true }
  • Geheimen Datenbankschlüssel (secret) generieren

1.2 Beispielcode (ESP32)

#include <WiFi.h>
#include <FirebaseESP32.h>

#define WIFI_SSID "DeinWiFi"
#define WIFI_PASSWORD "DeinPasswort"
#define FIREBASE_HOST "deinprojekt.firebaseio.com"
#define FIREBASE_AUTH "dein_firebase_secret"

FirebaseData fbdo;

void setup() {
  Serial.begin(115200);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

  float temperatur = 26.4;
  String path = "/geraet1/logs/" + String(millis());
  Firebase.setFloat(fbdo, path + "/temperatur", temperatur);
}

void loop() {}

Die gespeicherten Daten kannst du später in Google Sheets exportieren oder z. B. mit Grafana visualisieren.

2. Warnmeldungen mit IFTTT oder Webhooks

Bei kritischen Werten möchtest du benachrichtigt werden – etwa wenn die Temperatur zu hoch ist. Hierfür kombinieren wir Firebase mit IFTTT.

2.1 IFTTT einrichten

  • Applet mit Webhook-Trigger auf IFTTT erstellen
  • Als Aktion z. B. Telegram-Nachricht oder E-Mail verwenden

2.2 Beispiel: ESP32 löst Alarm aus

if (temperatur > 30.0) {
  Firebase.setString(fbdo, "/geraet1/alerts", "🔥 Temperatur zu hoch!");
}

3. OTA (Over-the-Air) Firmware-Updates

OTA ermöglicht dir, neue Firmware auf den ESP32 zu spielen – ohne das Gerät ausbauen oder anschließen zu müssen.

3.1 OTA im Sketch aktivieren

#include <WiFi.h>
#include <ArduinoOTA.h>

void setup() {
  WiFi.begin("DeinSSID", "DeinPasswort");
  while (WiFi.status() != WL_CONNECTED) delay(500);
  ArduinoOTA.begin();
}

void loop() {
  ArduinoOTA.handle(); // Muss in loop() bleiben
}

Ab dem zweiten Upload kannst du im Arduino-IDE das Gerät über das Netzwerk (OTA) updaten.

4. Mehrere Geräte verwalten

Für ein skalierbares System brauchst du Unterstützung für mehrere Geräte – jedes mit eigener ID und Datenstruktur.

4.1 Struktur der Firebase-Datenbank


/geraet1/logs
/geraet2/logs
/geraet3/alerts

4.2 Gerät mit eindeutiger ID

String geraeteId = "geraet2";
String path = "/" + geraeteId + "/logs/" + String(millis());
Firebase.setFloat(fbdo, path + "/luftfeuchtigkeit", feuchte);

4.3 Übersicht im Dashboard (React oder Grafana)

  • Separate Tabs oder Karten je Gerät
  • Visualisierung von Temperatur, Feuchte, etc.
  • Statusanzeige & letzte Aktualisierung

5. Zusammenspiel aller Funktionen

So sieht deine Architektur jetzt aus:

  • 📡 ESP32 → MQTT → React Dashboard
  • 🧠 ESP32 → Firebase → Logging & Alarme
  • 🚀 OTA → Firmware-Update per WLAN
  • 🧩 Eine Cloud-Datenbank mit mehreren Geräten

6. Tipps für Skalierung & Sicherheit

  • Jedes Gerät mit eigenem API-Key oder Token
  • Verschlüsselung via TLS/HTTPS aktivieren
  • OTA-Daten validieren (z. B. mit Checksum)
  • Logs als Zeitreihen-Daten strukturieren (für z. B. InfluxDB)

Zusammenfassung

Du hast jetzt aus deinem IoT-Projekt eine stabile Plattform gemacht – mit Logging, Alarmsystem, OTA-Firmware-Updates und Multi-Geräte-Support. Damit bist du bereit für skalierbare IoT-Deployments, ob zuhause oder im Unternehmen.

Im nächsten Beitrag kümmern wir uns um Sicherheitsaspekte, Benutzerkonten, Authentifizierung und individuelle Dashboards für Nutzer oder Geräte.

Fügen Sie Ihren Kommentar hinzu