Categories
IoT

#25 – Uv Sensor

PV generiert Strom aus dem Sonnenlicht. Und es gibt Sensoren, die den Uv Index und die “Leistung” des Sonnenlichts messen.

Ein Sensor dieser Art ist der VEML6070 von Vishay Semiconductors. Dieser Sensor steht als Breakout Board unter anderem von Adafruit zur Verfügung und kann ganz einfach mit Tasmota und z.B. einem Wemos D1 Pro oder Mini eingesetzt werden.

Ich habe den Sensor bei Pi-Shop gekauft und mit einem Wemos D1 kombiniert.

https://www.pi-shop.ch/adafruit-veml6070-uv-index-sensor-breakout

VEML6070 auf WEMOS D1 Mini

Dazu habe ich den Sensor mit einer gekürzten 3er Pinleiste direkt auf den GND, D4 und D3 Pin gelötet. Eigentlich sollte der VEML6070 sowohl 3.3V als auch 5.0V tolerieren. Ich habe denoch mit einem Kupferlackdraht VIN auf 3.3V verbunden.

Das Adafruit Board stellt den Sensor auf dem I2C Bus zur Verfügung.

Die Wemos D1 Minis kann man einfach per USB Schnittstelle mit dem Tasmotizer oder ähnlichem mit Tasmota versehen. Wie Tasmota installiert wird, kann man z.B. auf SuperHouse TV von Jonathan Oxer nachvollziehen.

Tasmota Konfiguration

Sobald Tasmota auf dem Device / D1 Mini installiert ist und neu gestartet wurde, kann man auf der IP-Adresse des Geräts die Admin-Oberfläche von Tasmota aufrufen.

Wichtig ist noch, dass man die SENSOR Edition von Tasmota installiert. Siehe auch http://ota.tasmota.com/tasmota/release/ und dann unten die tasmota-sensors.bin.gz auswählen.

Es müssen WiFi, Modul, MQTT und weitere Parameter konfiguriert werden. Mit einem Klick auf “Configuration” gelangt man in Auswahl von dieser Parameter Gruppen. “Configuration Modul” erlaubt die Einstellung von Modul Parametern für dem Zugriff auf das VEML6070 Board bzw. den I2C Bus. Hier werden die Pins D3 und D4 auf die I2C Ausgänge SDA und SCL gemappt ab dann kann man die VEML6070 Werte auf der Eingangsseite ablesen. Die Pins müssen natürlich die Pins sein auf denen das Modul angeschlossen ist.

PIN Mapping

Anschliessen binde ich den Sensor in mein WLAN(WiFi) ein. Netzwerk und Passwort sollten zum eigenen Netzwerk passen. Den Hostnamen habe ich “Lichtsensor1” genannt.

WiFi Parameter

MQTT ist der Nachrichtenumgschlagplatz in meinem Netzwerk. Tasmota bietet von Haus aus eine Integration für MQTT an und publiziert bzw. hört auf alle Nachrichten, die auf dem MQTT-Server ein- und ausgehen.

Hier vergebe ich ebenfalls noch den gleichen Namen sowie den Parameter meines MQTT-Servers.

MQTT Parameter

Unter “Other” kann man noch das Admin-Passwort sowie den Device- bzw. Friendly-Name vergeben… .

“Other” Parameter

Zum Abschluss kann man auf der Console nachschauen, wie die Parameter der Sensoren alle 5 Minuten unter den Topics publiziert werden.

IoT Stack

Unter dem Bericht #2 oben unter IoT habe ich verlinkt, wie man schnell und effizient zu einem funktionierenden IoT Stack kommt.
Hier sind MQTT-Server, Grafana und InfluxDB installiert.

Node-Red

Das Ziel ist, die Sensorwerte, die alle 5 Minuten pubiziert werden, zu speichern und in einer Zeitreihe als Grafik in einem Dashboard darzustellen.

Das Dashboard werde ich in Grafana erstellen und die Speicherung in einer Zeitleiste geschieht in InfluxDB. Den Transfer der Sensorwerte nach InfluxDB übernimmt Node-Red.

Node-Red Flow

Mit dem Flow oben lauscht Node-Red auf die Nachrichten des MQTT-Server (siehe oben) und wandelt sie in ein JSON-Objekt um. Anschliessend isolieren vier Nodes die Werte für UvLevel, UvIndex, UvIndexText und UvPower und schreibt sie mit vier weiteren Nodes in InfluxDB.

In dem Moment wo eine Nachricht auf dem MQTT-Server aufläuft wird diese gelesen, zerlegt und in die InfluxDB geschrieben.

Damit InfluxDB die Daten aufnehmen kann, muss man lediglich eine Datenbank anlegen. Die Datenstrukturen werden automatisch angelegt. Die Handhabung von InfluxDB? Siehe oben: #2 IoT Stack…

Grafana

Grafana bietet die Möglichkeit, Daten aus verschiedenen Datenquellen zu visualisieren. UvIndex und UvIndexText, UvLevel und UvPower werden als Kurven bzw. Gauge (Uhr) dargestellt.

Grafana Dashboard

Grafana ist nicht ganz so simpel zu konfigurieren. Aber wenn man es man verstanden hat, geht es recht schnell von der Hand.

Zunächst legt man die Datenquellen (Verbindung zu InfluxDB) an. Dann konfiguriert man das Dashboard und anschliessend je Graph oder Graphen-Gruppe ein Panel. Innerhalb des Panels wird die Abfrage der Daten definiert sowie die Darstellung der Daten.

Datenquellen

Grafana: Data Sources (InfluxDB)

Panelkonfiguration

Definition der Abfrage

Die Abfrage ist die Herausforderung… Zuächst selektiert man im “FROM” die Messreihe, aus denen man die Daten konsumieren will.

Dann mit dem “SELECT” Statement den Feldwert und mit mean() oder last () die Werte. Dannach noch mit “GROUP BY” die Darstellung als Zeitleiste und die Anweisungen leere Werte (null) aufzufüllen. Die Formatierung als Zeitreihe ist selbsterklärend.

Das “SELECT” Statement ist wichtig für die Art der Darstellung.

Definition der Darstellung

Mit der Darstellung kann man die Art der Visualisierung, die Achenbeschriftung und Farbgebung etc. beeinflussen. Einfach mal rumspielen… .

Titel…

Zum Schluss noch einen Titel und das Panel auf dem Dashboard zur Darstellung der UV-Werte ist fertig.

Aussicht

Was fehlt ist noch eine Stromversorgung und ein Gehäuse. Im Moment liegt der Wemos D1 Mini mit der Platine auf der Fensterbank und wird aus einem USB Lader mit Strom versorgt. Eigentlich möchte ich ein Wasserdichtes Gehäuse verbauen und mir noch etwas für die Stromversorgung “Draussen” ausdenken. Vielleicht etwas mit einem Solarpanel?! Dazu später mehr.

Leave a Reply