[Tutorial] UV-Lichtmessung mit dem VEML6070

Ein neuer Artikel wurde veröffentlicht
Dieses SubForum ist nur für fertiggestellte Tutorials gedacht. Fragen jedweder Art sind hier nicht erwünscht
  • Einleitung
    (Zurück zum Inhaltsverzeichnis)

    Wenn ich schon Infrarot und normales Licht messen kann, sollte das andere Ende des Lichtspektrums auch nicht fehlen.

    Die Wahl fiel auf dieses Breakoutboard VEML6070 von Watterott.

    Die benutzte Library findet sich auf Github und teilweise auf einem Forum von http://www.raspberrypi.org.

    Angeschlossen wird der Sensor wie üblich über den I2C-Bus und sollten danach am I2C-Bus sichtbar sein.

    Code
    1. i2cdetect -y 1
    2. 0 1 2 3 4 5 6 7 8 9 a b c d e f
    3. 00: -- -- -- -- -- -- -- -- -- -- -- -- --
    4. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    5. 20: -- -- -- -- -- -- -- -- -- 29 -- -- -- -- -- --
    6. 30: -- -- -- -- -- -- -- -- 38 39 -- -- -- -- -- --
    7. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    8. 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    9. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    10. 70: -- -- -- -- -- -- -- --

    Hier sind es die Adressen 0x038 und 0x039, die Adresse 0x029 gehört zu einem TSL25911.


    Die Library von Github wurde unverändert übernommen und wird nach /usr/local/bin/veml6070.py kopiert.

    Das Script demo.py habe ich umbenannt und etwas ergänzt:

    Meine Ergänzung ist die Funktion: "def getUvaIndex(uv_raw):" zum Ermitteln des UVa-Indexes.

    sowie das Schreiben der 3 Files UV_index.snmp, UV_raw.snmp und UVa_index.snmp nach /tmp


    Die Auswertung

    Naja, hier ist wieder der übliche Verdächtige dran, cron:

    Code
    1. */5 * * * * root python /usr/local/bin/UV.py 2>&1

    Und das wars hier schon, jetzt werden alle 5 min. 3 Files nach /tmp geschrieben.


    SNMP einstellen

    SNMP sollte gereits eingerichtet sein, hier wird nur noch der "pass"-Abschnitt ergänzt:

    Code
    1. sudo vi /etc/snmp/snmpd.conf
    2. pass .1.3.6.1.2.1.25.1.48.1 /usr/local/bin/snmp_UV_int.sh
    3. pass .1.3.6.1.2.1.25.1.49.1 /usr/local/bin/snmp_UV_index.sh
    4. pass .1.3.6.1.2.1.25.1.50.1 /usr/local/bin/snmp_UV_raw.sh

    Und dann snmp neu starten:

    Code
    1. sudo service snmpd restart

    Fehlen noch die Bash-Scripte dazu:

    Shell-Script
    1. vi /usr/local/bin/snmp_UV_int.sh
    2. #!/bin/bash
    3. echo .1.3.6.1.2.1.25.1.48.1
    4. echo gauge
    5. cat /tmp/UVa.snmp
    6. exit 0
    Shell-Script
    1. vi /usr/local/bin/snmp_UV_index.sh
    2. #!/bin/bash
    3. echo .1.3.6.1.2.1.25.1.49.1
    4. echo gauge
    5. cat /tmp/UVa_index.snmp
    6. exit 0
    Shell-Script
    1. sudo vi /usr/local/bin/snmp_UV_raw.sh
    2. #!/bin/bash
    3. echo .1.3.6.1.2.1.25.1.50.1
    4. echo gauge
    5. cat /tmp/UV_raw.snmp
    6. exit 0
    Code
    1. Das wars schon auf dem Messseite. Nur noch ein kurzer Test (bei Nacht)
    2. pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.9 .1.3.6.1.2.1.25.1.48.1
    3. iso.3.6.1.2.1.25.1.45.1 = Gauge32: 0
    4. pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.9 .1.3.6.1.2.1.25.1.49.1
    5. iso.3.6.1.2.1.25.1.46.1 = Gauge32: 0
    6. pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.9 .1.3.6.1.2.1.25.1.50.1
    7. iso.3.6.1.2.1.25.1.47.1 = Gauge32: 0

    Die Auswertung mittel MRTG

    Auch hier sollte MRTG bereits eingerichtet sein, hier kommt nur die Ergänzung:

    Dazu noch die Includes:

    Dann nur noch eine neue Webseite erstellen:

    Code
    1. cd /etc/mrtg/
    2. sudo indexmaker --output=/var/www/mrtg/raspi09/index.html raspi09_mrtg.cfg

    Letzte Anmerkung:

    Auch hier kann man, ähnlich wie bei der Dämmerungssteuerung, einen Alarm auslösen, wenn der UV-Index zu hoch ist.

    Jahrelang wurde gesagt:
    Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wußte das nicht, und hat es dann einfach gemacht.

    Dieser Beitrag wurde bereits 3 Mal editiert, zuletzt von Jürgen Böhm ()

  • Das wars schon auf dem Messseite. Nur noch ein kurzer Test (bei Nacht)pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.9 .1.3.6.1.2.1.25.1.48.1

    Servus,


    da ist dir ein Satz in den Code-Block gerutscht. Beim Python sind die Einrückungen kaputt und wenn du als Sprache tatsächlich Python auswählen würdest, gäb's auch noch bunte Farben. Ansonsten... tolle Sache! Auch wenn ich es nur grob überflogen habe, weil's doch ziemlich komplex zu sein scheint.