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