Mein IoT-Projekt

Dieser Beitrag ist eine Zusammenfassung des Projekts, verweist auf andere Blog-Einträge und wird gelegentlich ergänzt. Hierbei handelt es sich bewusst nicht um ein Smart-Home-System. Es geht darum, Erfahrungen im Bereit IoT zu sammeln und dennoch im Privatbereich einen Nutzen davon zu haben.

Ausgangssituation

Als ich unsere Warmwasserzirkulationspumpe repariert hatte, fielen mir die unterschiedlichen Wassertemperaturen auf. Da ich mit dem TonUINO wieder Spaß an den Mikrocontrollern (Arduino) hatte, wollte ich unbedingt ein weiteres Projekt in Angriff nehmen. Das Messen der verschiedenen Wassertemperaturen hat sich angeboten. Doch eine reine Sensorerfassung wäre zu einfach gewesen.
Der Trend in der Industrie geht in Richtung IoT. Hier erfassen sog. Cyber-physische Systeme (CPS) häufig Daten und senden diese in eine Cloud (Stichwort: Big Data). Damit hatte ich bisher keinerlei Erfahrung. Ich bin jedoch relativ fit bei den Themen „Datenbanken“ und „Website-Programmierung“. Daher wollte ich privat erste Erfahrungen sammeln und die gemessenen Werte in ein selbst entwickeltes System im Internet speichern und optisch aufbereiten. Auch soll es möglich sein, mehrere CPS an das System anzubinden. D. h. ich lege sehr großen Wert auf Flexibilität und Skalierbarkeit. Ich wollte keinen externen IoT-Anbieter nutzen, der diese Infrastruktur zur Verfügung stellt. Denn nur bei einem eigenen System kann ich die Zusammenhänge, die Performance u. ä. erfahren und die Grenzen kennen lernen.

Näheres zur Idee für das Vorhaben erfahrt ihr im folgenden Blog-Eintrag:

Hardware + Software

Als Mikrocontroller kommt ein ESP8266 zum Einsatz. Dieser kann in C programmiert werden und hat bereits ein WLAN-Modul integriert. Die Sensoren zur Temperaturerfassung sind vom Typ DS18B20. Der Sensor löst Temperaturwerte mit bis zu 12 Bit auf und deckt einen Temperaturbereich von -55 bis +125 °C bei einer Genauigkeit von ±5 °C ab. Die Übertragung der gemessenen Werte an den Mikrocontroller erfolgt über ein 1-Draht-Bussystem. Das ermöglicht eine gute Skalierbarkeit, da bei zusätzlichen Sensoren keine Hardware-Erweiterungen auf der Seite des Mikrocontrollers notwendig sind. Bei der Erfassung von Analogwerten (z. B. Spannung, Strom) sind normalerweise so viele Analogeingänge erforderlich, wie es Sensoren gibt. Bei einem Bus-System ist dies nicht der Fall.
Die Komponenten des 1. CPS zur Erfassung der Wassertemperaturen und die zugehörige Schaltung sind im Folgenden erläutert.

Anschließend entwickelte ich die serverseitigen PHP-Skripte und habe die Struktur der MySQL-Datenbank entworfen. Hier erfahrt ihr mehr zu den ersten Tests bzgl. der Kommunikation bzw. Schnittstelle und zur ersten Plausibilitätsprüfung der am Server gespeicherten Daten. Einer der Sensoren lieferte tatsächlich einen nicht plausiblen Wert. Die Ursache konnte ich jedoch schnell finden und beheben.

Eine schematische Darstellung des Zusammenspiels der verschiedenen Teilsysteme (Mikrocontroller, Datenbank, Server-Anwendung) ist im folgenden Beitrag zu finden.

Das Frontend

Der folgende Beitrag zeigt as bereits gut funktionierende Dashboard (Website/Frontend). Sämtliche Einstellungen zur Sensorskalierung, den zugewiesenen Y-Achsen in den Diagrammen, dessen Plot-Farben oder die Konfiguration des Dashboards sind über die Datenbank möglich. Eine Änderung der Software ist dazu nicht erforderlich.

Anbindung eines Außen-Sensors

Zur Messung der Außentemperatur und Luftfeuchte wollte ich ursprünglich ein eigenes System entwickeln mit Atmel-Mikrocontroller. Dieses Vorhaben haben ich jedoch verworfen und setze nun auf bestehende Consumer-Elektronik.

Eine große Herausforderung dabei war die Dekodierung der Daten, die ein Funk-Außensensor auf dem 433-MHz-Band sendet. Näheres dazu erfahrt ihr in folgenden Beiträgen.

Ein paar kurze Hinweise zum 433-MHz-Empfänger gibt’s in folgendem Beitrag:

Schreibe einen Kommentar