NEWS
Viessmann-Adapter mit vcontrol
-
@ issr4k
Trotzdem finde ich die 1400€ mehr als sportlich… das ist ja schon Wucher!
Wenn ich mit dem Teil gut zurecht käme, ist‘s trotzdem eine Überlegung wert.
Scheiß Situation bei dir, wüsste auch nicht recht was ich machen würde. Auf kurz oder lang würde ich wahrscheiblich den Tod sterben und die 1400€ raushauen, aber mein Gott nur aus Spaß an der Freude und getreu dem Motto Hobbys kosten eben…
Mein Entschluss ..
Bevor ich so viel Geld ausgebe, möchte ich mich zuvor versichern, dass es mir möglich ist, dieses teure Teil auch verwenden zu können. Daher habe ich begonnen, unseren Wechselrichter Fronius GEN24 mittels Modbus zu verwalten. War die Einbindung unsere Wallbox dank einer hervorragenden Anleitung von Matthias Kleine (haus-automatisierung.com) überhaupt kein Problem, so sind meine ersten Gehversuche und Erfahrungen alles Andere als ermutigend.
Zwar ist es mir gelungen nach vielen Irrungen und Wirkungen das am Modbus des GEN24 angeschlossene Smartmeter anzusprechen, aber letztendlich weiß ich nicht, warum das Ganze funktioniert. Kleinste - eigentlich nach den Handbüchern zulässige Änderungen - führen dazu, dass nichts mehr geht.
In diesem Thread habe ich begonnen, meine Versuche - besser: Leidensgeschichte - aufzuzeigen in der Hoffnung, dass ich Hilfe finde.
-
@legro Richtige Entscheidung sich erstmal um die Baustelle der PV Integration in ioBroker zu kümmern, alles auf einmal ist sicher viel!
Habe für meine Zisternensteuerunfen einen Frequenzumrichter per Modbus TCP eingebunden, hat mich trott guter Doku auch Nerven gekostet… was ich sagen will, gib nicht so schnell auf, manchmal müssen einfsch ein paar Tage ins Land ziehen. -
@issr4k sagte in Viessmann-Adapter mit vcontrol:
@legro Richtige Entscheidung sich erstmal um die Baustelle der PV Integration in ioBroker zu kümmern, ..
Die PV Installation ist soweit abgeschlossen, sogar die Visualisierung ist (bis auf Weiteres) fertig. Daher habe ich jetzt Zeit, mich an Neues zu wagen.
Meine Überlegung: Warum nicht zur Übung die Visualisierung auf die Datenpunkte vom Modbus umstellen. Da ich dank der gut funktionierenden Visualisierung weiß, was herauskommen muss, könnte ich Fehler schnell entdecken.
Aber soweit komme ich erst gar nicht. Verzweifelt suche ich hier nach Unterstüzung.
-
Mein Pi für vcontrol (v0.98.12) ist nun im Einsatz und läuft auch in Verbindung mit dem Viessmann Adapter (v1.4.3).
ABER:
Der Adapter holt brav die Werte ab, in meinem Fall Außentemperatur (getTempA) und Wassertemperatur (getTempP),
jedoch nach ein paar Stunden passiert dies:Der Adapter wird von iob nach zu vielen Fehlversuchen gestoppt.
Nach einem
service vcontrol restart
auf dem Pi kann sich der Adapater zwar Verbinden, aber keine Werte abrufen.
Gleiches gilt für Putty, hier klappt die Verbindung, aber die Verbindung wird direkt nach dem Absetzen des ersten Befehls getrennt.Nach einem Neustart des Pi funktionieren command via Putty oder Adapter wieder.
Hier die Adaptereinstellungen (falls relevant):
Kennt einer das Problem oder hat einen Hinweis woran es liegen könnte?
-
@darth2010 schick doch Mal dein Log aus iobroker
-
ich komme leider erst jetzt dazu, eine Antwort zu schreiben.
Zu meiner Verwunderung läuft alles seit gestern Nachmittag ohne Fehler .
Ich vermute das mein gleichzeitgier Zugriff via Telnet mit Putty, während der Viessmann Adapter verbunden war, den Absturzt verursacht hat.
Das werde ich testen und berichten.
-
@darth2010
Das Verhalten habe ich ab und zu. Ich musste in solchen Fällen auch den VCONTROLD-Server neu starten. Ich habe das nun automatisiert.
Adapter Linux-Control installieren und den Raspi eintragen.
Ich überwache den DP "viessmann.0.info.connection".
Wenn er auf "false" geht, dann starte ich per Linux-Control den Raspi neu. Es gibt hier den DP "restart". Der Viessmann-Adapter 1.4.3 verbindet sich dann wieder mit vcontrold. -
@blauholsten said in Viessmann-Adapter mit vcontrol:
@darth2010 schick doch Mal dein Log aus iobroker
viessmann.0 2023-05-11 12:52:52.311 info Connection with Viessmann system disconnected! viessmann.0 2023-05-11 12:52:52.306 debug Next poll: getTempA (For Object: TempA) viessmann.0 2023-05-11 12:51:52.310 debug Wait for next run: 59996 in ms viessmann.0 2023-05-11 12:51:52.309 debug Next poll: heartbeat (For Object: heartbeat) viessmann.0 2023-05-11 12:50:52.309 debug Wait for next run: 59999 in ms viessmann.0 2023-05-11 12:50:52.307 debug Next poll: heartbeat (For Object: heartbeat) viessmann.0 2023-05-11 12:49:52.308 debug Wait for next run: 59999 in ms viessmann.0 2023-05-11 12:49:52.307 debug Next poll: heartbeat (For Object: heartbeat) viessmann.0 2023-05-11 12:48:52.310 debug Wait for next run: 59997 in ms viessmann.0 2023-05-11 12:48:52.307 debug Next poll: heartbeat (For Object: heartbeat) viessmann.0 2023-05-11 12:47:52.306 debug Wait for next run: 60000 in ms viessmann.0 2023-05-11 12:47:52.305 debug Commands for polling: getTempP viessmann.0 2023-05-11 12:47:52.305 debug Commands for polling: getTempA viessmann.0 2023-05-11 12:47:52.304 info Connect with Viessmann sytem! viessmann.02023-05-11 12:47:52.275 info starting. Version 1.4.3 in /opt/iobroker/node_modules/iobroker.viessmann, node: v18.16.0, js-controller: 4.0.24
Jetzt das Setup bis diese Nacht ca. 2,5 Tage.
Ich kann keine Verbindung mehr zu vcontrol herstelle, weder per Adapter noch per Telnet (Putty).
Da kann der Adapter dann auch wenig machen, wenn vcontrol nicht mehr "da" ist .@martybr
Danke für die Info, den Adapter kannte ich noch nicht.
Ich suche mal in den Logs von vcontrol und OS nach Hinweisen, warum vcontrol sich verabschiedet.Aber so oder so ist es nicht verkehr einen automatischen Neustart bei disconnect einzurichten.
-
@darth2010
Ich habe auf dem Tinkerboard Updates installiert. Auf dem System läuft ein Armbian, kein reines Debian.
Seit den Updates hatte ich bisher keinen Ausfall der Verbindung. Ich spiele die Updates regelmäßig ein, ich kann dir nicht sagen, warum es jetzt stabil läuft. -
Ich hab keine Hinweise auf ein spezifischen Problem bei mir gefunden
In den letzten zwei Wochen erfolgte jedoch nur ein Neustarts aufgrund von nicht Erreichbarkeit von vcontrol, das kann man verschmwerzen.
@martybr
Wie klein hast du das Abfrageintervall im Adapter eingestellt?
Meins steht noch auf 5min. -
@darth2010
Ich hatte am Anfang 2 Min. Nun habe ich alle "zeitkritischen" DP auf eine Minute und die Statistikwerte auf 5, 15 und 60 Minuten gesetzt. Nach dem letzten Update des Betriebssystems habe ich keinen einzigen Absturz bzw. Abbruch der Verbindung gehabt. Die Versionen VControld und Viessmann-Adapter sind gleichgeblieben. -
Mein vcontrol läuft nun auch relativ stabil (1 neustart alle 4-5 Tage) mit kurzen Abfrageintervallen (1min).
Nun wollte ich mich an die Steuerung des Heizstabes und WWSoll Temperatur geben.
Das Aktiveren des Heizstsabes klappt wunderbar, jedoch kann ich die WWSoll Temperatur nicht ändern.
Ich habe es mit einigen Variante versucht hier mal zwei:setTempWWsoll 55 setTempWWsoll 55.000000
Es kommt der Fehler:
Vctrld send ERROR: ERR: >FRAMER: ERROR address 6000 code 33Error in recv, terminatingError executing setTempWWsoll 55
Der Fehler wird per Putty und Vissmann-Adapter geworden.
Hier meine vito.xml:
<?xml version="1.0"?> <vito> <devices> <device ID="204D" name="V200WO1C" protocol="P300"/> </devices> <commands> ... <command name="setTempWWsoll" protocmd="setaddrValue"> <addr>6000</addr> <len>2</len> <unit>UT</unit> <description>Setze Warmwassersolltemperatur</description> </command> ...
und meine vcontrol.xml:
<?xml version="1.0"?> <V-Control xmlns:vcontrol="http://www.openv.de/vcontrol"> <unix> <config> <username>nobody</username> <groupname>dialout</groupname> <serial> <tty>/dev/ttyUSB0</tty> </serial> <net> <port>3002</port> </net> <logging> <file>/var/log/vcontrold.log</file> <syslog>n</syslog> <debug>n</debug> </logging> <device ID="204D"/> </config> </unix> <units> <unit name="Temperatur"> <abbrev>UT</abbrev> <calc get="V/10" set="V*10"/> <type>short</type> <entity>°C</entity> </unit> <unit name="Temperatur100"> <abbrev>UTH</abbrev> <calc get="V/100" set="V*100"/> <type>short</type> <entity>°C</entity> </unit> <unit name="Neigung"> <abbrev>UN</abbrev> <calc get="V/10" set="V*10"/> <type>short</type> <entity/> </unit> <unit name="Temperatur 1Byte"> <abbrev>UT1</abbrev> <calc get="V/2" set="V*2"/> <type>char</type> <entity>°C</entity> </unit> <unit name="Temperatur 1Byte unsigned"> <abbrev>UT1U</abbrev> <calc get="V/2" set="V*2"/> <type>uchar</type> <entity>°C</entity> </unit> <unit name="Temperatur 1Byte ganzzahlig"> <abbrev>UTI</abbrev> <calc get="V" set="V"/> <type>uchar</type> <entity>°C</entity> </unit> <unit name="Einstellwert"> <abbrev>XX</abbrev> <calc get="V" set="V"/> <type>uchar</type> <entity/> </unit> <unit name="Counter"> <abbrev>CO</abbrev> <calc get="V" set="V"/> <type>int</type> <entity/> </unit> <unit name="JAZ"> <abbrev>JAZ</abbrev> <calc get="V/10" set="V/10"/> <type>int</type> <entity/> </unit> <unit name="Volumenstrom"> <abbrev>VS</abbrev> <calc get="V" set="V"/> <type>ushort</type> <entity>l/h</entity> </unit> <unit name="Counter liter"> <abbrev>COL</abbrev> <calc get="V/1000" set="V*1000"/> <type>int</type> <entity/> </unit> <unit name="Prozent"> <abbrev>PR</abbrev> <calc get="V/2" set="V*2"/> <type>short</type> <entity>%</entity> </unit> <unit name="Prozent 1 Byte ganzzahlig"> <abbrev>PR1</abbrev> <calc get="V" set="V"/> <type>uchar</type> <entity>%</entity> </unit> <unit name="Prozent zweites Byte ganzzahlig (Pumpe)"> <abbrev>PR2</abbrev> <calc get="B1" set="B1"/> <type>uchar</type> <entity>%</entity> </unit> <unit name="Prozent erstes Byte"> <abbrev>PR3</abbrev> <calc get="V/2" set="V*2"/> <type>uchar</type> <entity>%</entity> </unit> <unit name="CounterS"> <abbrev>CS</abbrev> <calc get="V/3600" set="V*3600"/> <type>uint</type> <entity>Stunden</entity> </unit> <unit name="CycleTime"> <abbrev>CT</abbrev> <type>cycletime</type> </unit> <unit name="ReturnStatus"> <abbrev>RT</abbrev> <type>enum</type> <enum bytes="00" text="0"/> <enum bytes="01" text="1"/> <enum bytes="02" text="EIN"/> <enum text="NOT OK"/> </unit> <unit name="WWBereitung"> <abbrev>WW</abbrev> <type>enum</type> <enum bytes="00" text="0"/> <enum bytes="02" text="1"/> <enum text="UNKNOWN"/> </unit> <unit name="BetriebsArt"> <abbrev>BA</abbrev> <type>enum</type> <enum bytes="00" text="0"/> <enum bytes="01" text="0"/> <enum bytes="02" text="2"/> <enum bytes="42" text="3"/> <enum bytes="82" text="4"/> <enum text="UNKNOWN"/> </unit> <unit name="SetReturnStatus"> <abbrev>SR</abbrev> <type>enum</type> <enum bytes="00" text="OK"/> <enum bytes="05" text="SYNC (NOT OK)"/> <enum text="NOT OK"/> </unit> <unit name="Druck"> <abbrev>PS</abbrev> <calc get="V/10" set="V*10"/> <type>short</type> <entity>Bar</entity> </unit> <unit name="SystemTime"> <abbrev>TI</abbrev> <type>systime</type> </unit> <unit name="Plain"> <abbrev>PL</abbrev> <calc get="V" set="V"/> <type>short</type> </unit> <unit name="ErrorState"> <abbrev>ES</abbrev> <type>errstate</type> <enum bytes="00" text="Regelbetrieb (kein Fehler)"/> <enum bytes="0F" text="Wartung (fuer Reset Codieradresse 24 auf 0 stellen)"/> <enum bytes="10" text="Kurzschluss Aussentemperatursensor"/> <enum bytes="18" text="Unterbrechung Aussentemperatursensor"/> <enum bytes="20" text="Kurzschluss Vorlauftemperatursensor"/> <enum bytes="21" text="Kurzschluss Ruecklauftemperatursensor"/> <enum bytes="28" text="Unterbrechung Aussentemperatursensor"/> <enum bytes="29" text="Unterbrechung Ruecklauftemperatursensor"/> <enum bytes="30" text="Kurzschluss Kesseltemperatursensor"/> <enum bytes="38" text="Unterbrechung Kesseltemperatursensor"/> <enum bytes="40" text="Kurzschluss Vorlauftemperatursensor M2"/> <enum bytes="42" text="Unterbrechung Vorlauftemperatursensor M2"/> <enum bytes="50" text="Kurzschluss Speichertemperatursensor"/> <enum bytes="58" text="Unterbrechung Speichertemperatursensor"/> <enum bytes="A7" text="Bedienteil defekt"/> <enum bytes="B0" text="Kurzschluss Abgastemperatursensor"/> <enum bytes="B1" text="Kommunikationsfehler Bedieneinheit"/> <enum bytes="B4" text="Interner Fehler (Elektronik)"/> <enum bytes="B5" text="Interner Fehler (Elektronik)"/> <enum bytes="B6" text="Ungueltige Hardwarekennung (Elektronik)"/> <enum bytes="B7" text="Interner Fehler (Kesselkodierstecker)"/> <enum bytes="B8" text="Unterbrechung Abgastemperatursensor"/> <enum bytes="B9" text="Interner Fehler (Dateneingabe wiederholen)"/> <enum bytes="BA" text="Kommunikationsfehler Erweiterungssatz fuer Mischerkreis M2"/> <enum bytes="BC" text="Kommunikationsfehler Fernbedienung Vitorol, Heizkreis M1"/> <enum bytes="BD" text="Kommunikationsfehler Fernbedienung Vitorol, Heizkreis M2"/> <enum bytes="BE" text="Falsche Codierung Fernbedienung Vitorol"/> <enum bytes="C1" text="Externe Sicherheitseinrichtung (Kessel kuehlt aus)"/> <enum bytes="C2" text="Kommunikationsfehler Solarregelung"/> <enum bytes="C5" text="Kommunikationsfehler drehzahlgeregelte Heizkreispumpe, Heizkreis M1"/> <enum bytes="C6" text="Kommunikationsfehler drehzahlgeregelte Heizkreispumpe, Heizkreis M2"/> <enum bytes="C7" text="Falsche Codierung der Heizkreispumpe"/> <enum bytes="C9" text="Stoermeldeeingang am Schaltmodul-V aktiv"/> <enum bytes="CD" text="Kommunikationsfehler Vitocom 100 (KM-BUS)"/> <enum bytes="CE" text="Kommunikationsfehler Schaltmodul-V"/> <enum bytes="CF" text="Kommunikationsfehler LON Modul"/> <enum bytes="D4" text="Sicherheitstemperaturbegrenzer hat ausgeloest oder Stoermeldemodul nicht richtig gesteckt"/> <enum bytes="DA" text="Kurzschluss Raumtemperatursensor, Heizkreis M1"/> <enum bytes="DB" text="Kurzschluss Raumtemperatursensor, Heizkreis M2"/> <enum bytes="DD" text="Unterbrechung Raumtemperatursensor, Heizkreis M1"/> <enum bytes="DE" text="Unterbrechung Raumtemperatursensor, Heizkreis M2"/> <enum bytes="E4" text="Fehler Versorgungsspannung"/> <enum bytes="F0" text="Interner Fehler (Regelung tauschen)"/> <enum bytes="F2" text="Temperaturbegrenzer ausgeloest"/> <enum bytes="F7" text="Differenzdrucksensor defekt"/> <enum bytes="FE" text="Starkes Stoerfeld (EMV) in der Naehe oder Elektronik defekt"/> <enum bytes="FF" text="Starkes Stoerfeld (EMV) in der Naehe oder interner Fehler"/> <enum text="UNKNOWN"/> </unit> <unit name="DeviceType"> <abbrev>DT</abbrev> <type>enum</type> <enum bytes="20 4D" text="V200WO1C ID=204D Protokoll:300"/> <enum text="UNKNOWN"/> </unit> <unit name="Sachnummer"> <abbrev>SN</abbrev> <type>uint</type> <icalc get="((((((((((((B0-48)*10)+(B1-48))*10)+(B2-48))*10)+(B3-48))*10)+(B4-48))*10)+(B5-48))*10)+B6-48"/> </unit> <unit name="Bitstatus"> <abbrev>BST</abbrev> <type>uchar</type> <icalc get="(B0 & (0x01<<BP))>> BP"/> <enum bytes="00" text="0"/> <enum bytes="01" text="1"/> <enum text="UNKNOWN"/> </unit> <unit name="HKP Pumpentyp"> <abbrev>HKT</abbrev> <type>uchar</type> <icalc get="(B0 & (0x01<<BP))>> BP"/> <enum bytes="00" text="stufig"/> <enum bytes="01" text="drehzahlgeregelt"/> <enum text="UNKNOWN"/> </unit> <unit name="Bitstatus_Boolean"> <abbrev>BST2</abbrev> <type>enum</type> <enum bytes="00" text="0"/> <enum bytes="01" text="1"/> <enum bytes="02" text="NV"/> <enum text="UNKNOWN"/> </unit> <unit name="Umschaltventil Stellung"> <abbrev>USV</abbrev> <type>enum</type> <enum bytes="00" text="UNDEV"/> <enum bytes="01" text="Heizen"/> <enum bytes="02" text="Mittelstellung"/> <enum bytes="03" text="Warmwasser"/> <enum text="UNKNOWN"/> </unit> <unit name="Ferienbetrieb"> <abbrev>BFB</abbrev> <type>uchar</type> <icalc get="(B7 & (0x01<<BP))>> BP"/> <enum bytes="00" text="inaktiv"/> <enum bytes="01" text="aktiv"/> <enum text="?"/> </unit> </units> <protocols> <protocol name="P300"> <pid>41</pid> <macros> <macro name="GETADDR"> <command>SEND 00 01</command> </macro> </macros> <commands> <command name="getaddr"> <send>GETADDR $addr $hexlen;RECV $len $unit</send> </command> <command name="setaddr"> <send>SEND 00 02 $addr $hexlen BYTES;RECV 1 SR</send> </command> <command name="setaddrValue"> <send>SEND 00 02 $addr $hexlen;SEND BYTES $unit;RECV 1 SR</send> </command> <command name="setfunc"> <send>SEND 00 07 $addr 02 02;SEND BYTES $unit;RECV $len</send> </command> </commands> </protocol> </protocols> <extern xmlns:xi="http://www.w3.org/2003/XInclude"> <xi:include href="vito.xml" parse="xml"/> </extern> </V-Control>
Wie steuert ihr die WWSoll Temperatur?
-
@darth2010 hast du es in Zeile 8 deiner vito.xml mal mit nur setaddr versucht anstatt setaddrvalue ?
-
leider nein
Hier der Versuch per Putty:
vctrld>setTempWWsoll 55 ERR: >FRAMER: ERROR address 6000 code 4 Error in recv, terminating Error executing setTempWWsoll 55 vctrld>
und per Adapter:
Vctrld send ERROR: ERR: >FRAMER: ERROR address 6000 code 4 Error in recv, terminating Error executing setTempWWsoll 50
mit dieser vito.xml:
<command name="setTempWWsoll" protocmd="setaddr"> <addr>6000</addr> <len>2</len> <unit>UT</unit> <description>Setze Warmwassersolltemperatur</description> </command>
Hatte extra deine vito.xml genommen, da wir beide die Vitcal-222 haben und trotzdem funktioniert es nicht
Noch eine Idee?
-
Ich antworte mir selber, falls noch jemand in diese Falle läuft:
Da ich an der Heizung keine Temperaturen über 50°C für das Warmwasser einstellen kann(warum auch immer das auf 50°C gedeckelt ist), geht es logischer weise auch nicht per vcontrol.
Daher keine vcontrol opder iobroker Problem, sondern ein Bedienungsfehler.
-
@darth2010 sicher? Über Sollwert 2 sind doch höhere Werte möglich.
Und Sollwert 2 wird systembedingt ja sowieso herangezogen, wenn 1x WW-Bereitung gewählt wird.Wie ist sonst der Fortschritt klappt es soweit?
-
@issr4k
Ja, über WW-Soll 2 geht es an der Heizung auch nur bis 50°C.Zudem hätte ich erwartet, dass wenn man die WW-Tempeartur(1 und2 ) anhebt, Heizstab und 1xWW Bereitung aktiviert, das Aufheizen direkt beginnt...
Hier passiert sehr wenig, die Wassertemperatur geht mal hoch bis 47°C und das wars.Sonst klappt es jetzt in der "Anfänger-" Version:
PV-Überschuss? Ja
1. Heizstab an 2. Soll-Temperatur auf 50°C
PV-Überschuss? nein
1. Heizstab aus 2. Soll-Temperatur zurücksetzen
-
@darth2010 genau das ist bei mir der Fall.
Ich aktiviete 1xWW und nach ein paar Gedenksekunde springt auch irgendwann der Verdichter an und heizt auf WW Soll 2 hoch. Hier kann ich max. 63 Grad einstellen.
-
Hallo
Ich bin nun wieder etwas mehr im Thema angelangt, vorallem, da ich auch die Daten brauche, um meine PV Anlage damit zu verbinden.Jetztbrauche ich einen optolink adapter. Da denke ich natürlich an meine Wemos D1. Das problem: ich finde keine genaue info. die analeitungen die ich finde, verwenden Teile, welche es nicht mehr gibt.
Hat da jemand erfahrungen????
die habe ich gefunden
anleitung
Den SFH487-2 finde ich leider nicht mehr zum kaufenvielen dank
-
Nutzt jemand von euch vcont. um je nach PV Strom wasser extra aufzuheizen???.
Danke
Liebe Grüße
Jumbo