NEWS
Viessmann-Adapter mit vcontrol
-
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 -
Hallo,
Dank eurer tollen Arbeit habe ich vcontrold und iobroker per raspbery USB to optocoupler mithilfe eurer vito-/vcontrold.xml Dateien zu Laufen gebracht.
Habe eine Vitocaldens 222-F Hybrid Anlage mit Gas Brenner 200-W , WP 200-S verbunden mit Vitotronic 200 WO1C.
Nun möchte ich aber auch Werte wie Gas Brenner/WP „Anzahl starts“ & „Verbrauch qm/kWh“ & „average run time“ auslesen bzw ermitteln aus ausgelesenen Werten.
Dazu bräuchte ich wohl erweiterte ito-/vcontrold.xml Daten
Wie komme ich an solche Daten ran?
Kann mir jemand helfen?
Was ich NICHT benutzen möchte, ist die offizieller Viesmann API →
https://documentation.viessmann.com/static/getting-startedMfG
hans-georg -
ESP8266 funktioniert nun
-
Hier eine Liste mit den Datenpunkte der Vitocal 200S
dennoch eine frage,
wisst ihr die Datenpunkte für die Smartgrid optionen?ich würde gerne je nach PV Auslastung manche werteändern, weiß aber nicht die Datenpunkte.
- eine Sollwertanhebung für die Trinkwassererwärmung (Parameter 7E91),
- eine Sollwertanhebung für die Beheizung des Pufferspeichers (Parameter 7E92),
- die Sollwertanhebung für Raumbeheizung (Parameter 7E93) oder
- eine Sollwertabsenkung für die Raumkühlung (Parameter 7E95).
Datenpunkt Vitogate 200 EIB bei Verwendung mit Vitocontrol 200 WO1AB und WPR-300.pdf