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), D-Logg und aktuell das C.M.I. die auch Datenlogging bieten.
Der BL-Net un dD-Logg verfügt aber nur über wenig Speicherkapazität, was bedeutet dass die Daten regelmäßig abgeholt werden müssen oder im Ringspeicher verloren gehen.

Auslesen des C.M.I. ist mit der nachfolgenden Lösung nicht möglich

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
hardware/channels/heating_control/uvr1611.1453387163.txt.gz · Zuletzt geändert: 2016/01/21 15:39 von jau