Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:heating_control:uvr1611

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) und aktuell das C.M.I. die auch Datenlogging bieten. Speziell der BL-Net verfügt aber nur über wenig Speicherkapazität, was bedeutet das 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 der UVR
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
hardware/channels/heating_control/uvr1611.1453203550.txt.gz · Zuletzt geändert: 2016/01/19 12:39 von jau