====== 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 [[https://github.com/openv/openv/wiki/Die-Optolink-Schnittstelle|Optolink]] werden in diversen Modellen verbaut. Gas- und Ölkessel, aber auch Wärmepumpen können auf diesem Weg mit einem PC kommunizieren. {{ :hardware:channels:heating_control:vcontrold.png?600 |}} ==== Hardware ==== OptoLink Adapter gibts fertig zu kaufen oder man [[https://github.com/openv/openv/wiki/Bauanleitung-RaspberryPi|bastelt]] einen an den RaspberryPi. ==== Test ==== [[https://github.com/openv/openv/issues/399|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 [[https://github.com/openv/vcontrold|openv projekts]] auszulesen. Der Format String mit `$i` muss stets (auch bei nur einem value) verwendet werden. ... "log" : "/var/log/vzlogger/vzlogger.log", ... "meters": [{ "enabled": true, "allowskip": 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: [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 erst nach vcrontrold starten sollte ist auch seine Konfig ''/etc/systemd/system/vzlogger.service'' anzupassen: [Unit] Description=vzlogger After=syslog.target network.target After=mysql.service ntp.service After=vcontrold.service [Service] User=vzlogger 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.