Fallstudie · ESP32 & Machine Learning

Sensordaten-Pipeline & Auswertung

Ein komplettes Beispielprojekt für die Erfassung und Auswertung von Sensordaten – vom Sensor am „Edge" über ein Industrieprotokoll und eine Zeitreihen-Datenbank bis zur Anomalieerkennung mit Machine Learning. Als Beispielprozess dient ein fiktives Trinkwasser-Pumpwerk.

Live-Simulation im Browser

Und weil das Projekt gerade davon lebt, dass alles zusammenhängt: Hier läuft das Pumpwerk direkt im Browser. Dieselben Formeln wie im Python-Simulator, nur in JavaScript nachgebaut. Am Steuerpult drehen, ein Verbrauchsprofil wählen, einen Störfall auslösen – und zusehen, wie sich die Störung durch die ganze Anlage fortpflanzt und die Diagnose anschlägt.

Anlage startet … Zustandsindex %
Brunnen Pumpe P1 Filter UV-Desinfektion – % Hochbehälter Pumpe P2 Netz
Förderstrom P1
m³/h
Behälterstand
%
Netzdruck
bar
Filter Δp
bar
Vibration P1
mm/s
Wirkungsgrad P1
%
UV-Dosis
J/m²
Leistung ges.
kW
■ Netzdruck (0–9 bar) ■ Behälterstand (0–100 %) Sollband und Trip-Grenze gestrichelt
Läuft im Zeitraffer (rund 100-fach), damit sich der Behälter sichtbar füllt und leert. Die Werte tragen ein kleines Messrauschen – wie echte Sensoren. Der „Zustandsindex" ist eine vereinfachte Fassung der Anomalie-Erkennung; im herunterladbaren Projekt übernimmt das ein trainiertes Machine-Learning-Modell (Local Outlier Factor) zusammen mit dieser Bauteil-Diagnose.

Worum es geht

Das Projekt bildet die komplette Kette ab, mit der in Fabriken Maschinen überwacht werden: Ein ESP32 erfasst (bzw. simuliert) Sensordaten und schickt sie per MQTT an einen Raspberry Pi. Dort validiert eine Pipeline die Daten, schreibt sie in eine Zeitreihen-Datenbank (InfluxDB), ein Machine-Learning-Modell überwacht die Anlage live auf Anomalien, und ein Web-Dashboard zeigt alles als Leitwarte an.

Als Beispielprozess läuft ein fiktives Trinkwasser-Pumpwerk – anschaulich und allgemein verständlich, mit stark gekoppelten Messgrößen. Der Aufbau ist bewusst derselbe, mit dem man später auch eine echte Industrieanlage über Modbus auswerten würde.

ESP32  ──MQTT──▶  Raspberry Pi (Pipeline → InfluxDB → Auswertung)  ──▶  Dashboard (Browser)

Was das Projekt zeigt

Modbus-Lehrteil

Der Kern: derselbe Messwert in allen gängigen Modbus-Kodierungen – 16-Bit mit Skalierungsfaktor, 32-Bit-Float in den Wortreihenfolgen ABCD/CDAB/BADC/DCBA – samt der klassischen Falle „falsch gelesen = Zahlensalat". Dazu RTU, ASCII und TCP im Vergleich. Ein Register-Explorer im Dashboard zeigt es live.

Gekoppelte Physik

Pumpenkennlinien, Filter-Druckverlust, Behälterbilanz, UV-Dosis und Sicherheitskette (Trip < Überdruckventil) – alles thermodynamisch/hydraulisch konsistent gerechnet. Eine Störung pflanzt sich sichtbar durch die ganze Anlage fort.

Machine Learning

Eine unüberwachte Anomalieerkennung (Local Outlier Factor) lernt aus dem Normalbetrieb, wie „gesund" aussieht, und meldet Abweichungen. Ergänzt um eine regelbasierte Bauteil-Diagnose – beide Verfahren zusammen sind stark.

Live-Dashboard

Animiertes Anlagenschema mit fließenden Wasser-Teilchen, Kurven, Betriebskennzahlen (spezifischer Energieverbrauch, Wirkungsgrad, Verfügbarkeit), der Modbus-Register-Explorer, ein Steuerpult und die Auswertung – im industriellen Look.

Selbst ausprobieren

Man braucht keine Hardware: Ein eingebauter Simulator ersetzt den ESP32, die Datenbank und den Broker. Ein einziger Befehl startet das komplette Dashboard.

# Python 3.9+ vorausgesetzt
python -m venv .venv
.venv\Scripts\activate            :: Windows (Linux/macOS: source .venv/bin/activate)
pip install -e ".[dev]"

python scripts/run_dashboard.py   # dann http://localhost:5000 öffnen

Projekt herunterladen

Vollständiger Quellcode inklusive ESP32-Firmware, Tests und Dokumentation. Wie bei allen Projekten: kurz anfragen, ich schalte frei.

Download anfragen

Technik im Überblick

  • Physik-Simulation und Datenmodell als sauberes Python-Paket (eine Quelle der Wahrheit)
  • MQTT-Datenpipeline mit Validierung, Zeitreihen-Speicherung in InfluxDB
  • Anomalieerkennung (Local Outlier Factor) mit out-of-sample-Kalibrierung
  • Modbus-Abbild: Coils, Discrete Inputs, Input- und Holding-Register mit CRC/LRC-Prüfsummen
  • Flask-Dashboard mit animiertem SVG-Anlagenschema und eigenem Icon-Satz
  • ESP32-Firmware (Arduino/C++) mit identischer Physik; systemd-Dienste für den Pi
  • Automatische Tests (pytest) und ausführliche Dokumentation

Lern- und Demonstrationsprojekt. Die Anlage ist simuliert – es fließt kein echtes Wasser. Alle Werte sind jedoch untereinander konsistent gerechnet, damit die Auswertung echte Zusammenhänge lernen kann.

Für wen das interessant ist

Zielgruppe
Wer Pumpen, Verdichter oder ähnliche Maschinen betreibt und wissen will, was eine Zustandsüberwachung praktisch voraussetzt. Und alle, die eine vollständige Messkette einmal von vorne bis hinten sehen möchten, statt nur das Modell am Ende.
Stand
Fallstudie. Die Anlage ist simuliert, es fließt kein Wasser. Physik, Protokollabbild, Datenbank, Dashboard und Auswertung sind vollständig gebaut und laufen zusammen.
Verfügbarkeit
Der Quellcode ist auf Anfrage erhältlich. Für die Übertragung auf eine reale Maschine kommen Sensorik, Anbindung an die vorhandene Steuerung und eine Lernphase im Normalbetrieb dazu.
Nächster Schritt
Die Simulation oben ausprobieren, einen Störfall auslösen und zusehen, wie die Diagnose anschlägt. Wenn es zu einer eigenen Anlage passen soll, schreiben Sie mir.

Fragen zu diesem Projekt?

Wie etwas gebaut ist, warum es so gebaut ist, ob es sich auf einen anderen Fall übertragen lässt – schreib einfach. Die Nachricht geht als E-Mail an mich, sonst passiert damit nichts.

Rechenaufgabe Rechenaufgabe als Bild

Kein Google-Captcha, keine Weitergabe an Dritte, keine Cookies. Die Rechenaufgabe wird von diesem Server gezeichnet und geprüft. Wenn sie nicht lesbar ist oder das Formular klemmt: info@timobritz.de geht genauso.