Dies ist eine alte Version des Dokuments!
UVR
Die UVR1611 und ihr Nachfolger UVR16x2 sind nahezu frei programmierbare Heizkreisregler der Firma Technische Alternative.
Sie bietet auch diverse Systeme zur Anbindung an PC und Ethernet an. So z.B. den alten BL-Net (Bootloader), D-Logg und aktuell das C.M.I. die auch Datenlogging bieten.
Der BL-Net verfügt aber nur über wenig Speicherkapazität, was bedeutet dass die Daten regelmäßig abgeholt werden müssen oder im Ringspeicher verloren gehen.
Sensoren auslesen
Um die Sensordaten in den Volkszähler zu übernehmen eignet sich dl-aktuelle-datenx github von Volker Römer.
Er stellt auch eine, auf dem Raspberry lauffähige Version, als Download zur Verfügung. Sie wird vorzugsweise unter /usr/local/bin/ abgelegt.
In einem Shellscript aufgerufen eignet sich der vzclient als Schnittstelle zur Middleware.
#!/bin/bash # /home/pi/bin/uvr-dlogg.sh # Daten aus der UVR1611 mittels dlogg und vzclient # in die Datenbank eines Volkszaehler.org uebertragen # 03.11.2015 Daniel Lauckner # PATH fuer Cronjob setzen PATH=/usr/local/bin:$PATH # IP-Adresse des BL-Net uvr_ip=192.168.1.100 # Datenrahmen der UVR (Standard=1) uvr_dr=1 # UUIDs den Daten zuordnen # wenn kein Channel zugeordnet ist nach dem = einfach leer lassen uuids[0]=12ab3456-789c-01d2-f34a-b56c78901234 # 1.Wert Aussentemperatur uuids[1]= # 2.Wert uuids[2]= # 3.Wert uuids[3]= # 4.Wert uuids[4]= # 5.Wert uuids[5]= # 6.Wert uuids[6]=654321ab-789c-01d2-f34a-b56c78901234 # 7.Wert Raumtemperatur uuids[7]= # 8.Wert uuids[8]= # 9.Wert uuids[9]= # 10.Wert #uuids[10]= # 11.Wert #uuids[11]= # 12.Wert #uuids[12]= # 13.Wert #uuids[13]= # 14.Wert #uuids[14]= # 15.Wert #uuids[15]= # 16.Wert # UVR auslesen echo "Daten aus UVR holen" uvr_daten=($(dl-aktuelle-datenx -i "$uvr_ip" -r "$uvr_dr" --rrd | sed 's/:/ /g') ) # Timestamp ts=$(date +%s) ts=$(($ts*1000)) # VZ schreiben echo "Daten an Volkszaehler uebergeben" i=0 z=${#uuids[@]} while [ $i -le $z ] do if [ ${uuids[$i]} ] then # In VZ uebertragen echo vzclient -u "${uuids[$i]}" add data ts="$ts" value="${uvr_daten[$i]}" vzclient -u "${uuids[$i]}" add data ts="$ts" value="${uvr_daten[$i]}" fi i=$(($i+1)) done
Es wird ein aktueller Datenrahmen (enstpricht allen Ein- und Ausgängen einer UVR) abgerufen und entsprechend der UUID in den Volkszähler übertragen.
Die Kanäle sind meist vom Typ Temperatur mit Auflösung 1, die UVR kann aber auch etliche andere Sensoren verarbeiten.
Für jeden gewünschten Datenpunkt im Volkszähler wird das Script erneut aufgerufen.
Beispielsweise als cronjob alle 5 Minuten.
*/5 * * * * /home/pi/bin/uvr-dlogg.sh >> /home/pi/cronlog