Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:heating_control:viessmann_optolink

Dies ist eine alte Version des Dokuments!


Viessmann Optolink

Viessmann ist ein Hersteller für Heizgeräte der an seinen Regelsysteme Vitotronic die Status-LEDs zusätzliche als optischen Schnittstelle ausgerüstet hat. Regelungen mit Optolink werden in diversen Modellen verbaut. Gas- und Ölkessel, aber auch Wärmepumpen können auf diesem Weg mit einem PC kommunizieren.

Hardware

OptoLink Adapter gibts fertig zu kaufen oder man bastelt einen an den RaspberryPi.

Test

vcontrold für VItodens 300 installieren, testen und den Adressen der eigenen Steuerung der Heizungsanlage anpassen. Zum Test anfänglich nur get Befehle auf Speicheradressen verwenden (z.b. einer ähnlichen Anlagensteuerung) und die Ausgaben mit denen am Bedienfeld auf Konsistenz prüfen. Dann Parameter am Bedienfeld ändern und nochmals prüfen ob der Inhalt der gelesenen Speicheradresse sich wie erwartet ändert.

vzlogger

Im vzlogger den MeterExec verwenden um die Daten via vclient von vcontrold des openv projekts auszulesen. Der Format String mit `$i` muss stets (auch bei nur einem value) verwendet werden.

Wegen Sicherheitbedenken ist MeterExec standardmäßig nicht in der Lage Prozesse mit root-Rechten anzustoßen. Eine Lösung ist vzlogger mit den Rechten eines lokalen Users zu starten.
vzlogger.conf
...
"log" : "/home/pi/vzlogger.log",
...
"meters": [{
   "enabled": true,
   "skip": false,
   "protocol": "exec",
   "command": "vclient -h 127.0.0.1:3002 --munin -c 'getTempAged,getTempWWist'
   "format": "$i $v", // $i MUSS verwendet werden. Broken: Null<>Nil Strings zur Channelzuordnung
   "interval": 120,
   "channels": [{
      "uuid": " ... uuid für getTempAged ",
      "identifier":"getTempAged.value",     // WIE $i im format String von der munin Ausgabe 
      "middleware": "http://.../middleware.php"
      },{
      "uuid": "... uuid für getTempWWist",
      "identifier":"getTempWWist.value",
      "middleware": "http://.../middleware.php"
      }]
}]
...

Systemdienst

Um vcontrold über systemctl zu steuern eine Konfiguration unter /etc/systemd/system/vcontrold.service anlegen:

vcontrold.service
[Unit]
Description=vcontrold daemon
After=syslog.target systemd-udev-settle.service
 
[Service]
Type=forking
ExecStartPre=/bin/ls /dev/bus/usb/001
ExecStart=/usr/local/sbin/vcontrold -x /etc/vcontrold/vcontrold.xml
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=120
StandardOutput=null
 
[Install]
WantedBy=multi-user.target

Es kann nun als Dienst gestartet werden:

sudo systemctl start vcontrold

Start des Dienstes beim Boot hiermit aktivieren:

sudo systemctl enable vcontrold

Da vzlogger mit reduzierten Rechten laufen und erst nach vcrontrold starten sollte ist auch seine Konfig /etc/systemd/system/vzlogger.service anzupassen:

vzlogger.service
[Unit]
Description=vzlogger
After=syslog.target network.target
After=mysql.service ntp.service
After=vcontrold.service
 
[Service]
User=pi
ExecStartPre=/bin/ls /dev/bus/usb/001
ExecStart=/usr/local/bin/vzlogger -c /etc/vzlogger.conf
ExecReload=/bin/kill -HUP $MAINPID
StandardOutput=null
 
[Install]
WantedBy=multi-user.target

Weiteres

Zum Steuern der Anlage (setzen von Werten in den Adressen) kann man parallel über bash Scripte die vclient entsprechend aufrufen.

hardware/channels/heating_control/viessmann_optolink.1547908922.txt.gz · Zuletzt geändert: 2019/01/19 15:42 von jau