[Tutorial] UV-Lichtmessung mit dem VEML6070

  • 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
    i2cdetect -y 1
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- 29 -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- 38 39 -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    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
    */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
    sudo vi /etc/snmp/snmpd.conf
    pass .1.3.6.1.2.1.25.1.48.1  /usr/local/bin/snmp_UV_int.sh
    pass .1.3.6.1.2.1.25.1.49.1  /usr/local/bin/snmp_UV_index.sh
    pass .1.3.6.1.2.1.25.1.50.1  /usr/local/bin/snmp_UV_raw.sh

    Und dann snmp neu starten:

    Code
    sudo service snmpd restart

    Fehlen noch die Bash-Scripte dazu:

    Bash
    vi /usr/local/bin/snmp_UV_int.sh
    #!/bin/bash
    echo  .1.3.6.1.2.1.25.1.48.1
    echo gauge
    cat /tmp/UVa.snmp
    exit 0
    Bash
    vi /usr/local/bin/snmp_UV_index.sh
    #!/bin/bash
    echo  .1.3.6.1.2.1.25.1.49.1
    echo gauge
    cat /tmp/UVa_index.snmp
    exit 0
    Bash
    sudo vi /usr/local/bin/snmp_UV_raw.sh
    #!/bin/bash
    echo  .1.3.6.1.2.1.25.1.50.1
    echo gauge
    cat /tmp/UV_raw.snmp
    exit 0
    Code
    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
    iso.3.6.1.2.1.25.1.45.1 = Gauge32: 0
    pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.9 .1.3.6.1.2.1.25.1.49.1
    iso.3.6.1.2.1.25.1.46.1 = Gauge32: 0
    pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.9 .1.3.6.1.2.1.25.1.50.1
    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
    cd /etc/mrtg/
    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.

  • 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.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!