NEWS
Viessmann-Adapter mit vcontrol
-
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
-
@tietz @jumbo125
Alle Adressen findet ihr hier https://github.com/philippoo66/ViessData21
Ihr müsst lediglich schauen wie ihr sie ansprechen könnt und natürlich ob eure Heizung diese Adressen bzw. Funktionen hat. -
@issr4k
super Danke!!! -
welche Datenpunkte ändert ihr, um den PV überschuss gut auszunutzen?
Was ich noch fragen wollte:
angenommen die PV produziert nun gerade 3KW.
Nun setzte ich die Kessel solltemperatur auf 65°C statt 55°Cjetzt wird der boiler aufgeheizt.
Wenn nun kurz keine Sonne verfügbar ist, fällt der PV ertrag plötzlich auf 500W. Die Solltemperatur wird nun zurückgesetzt auf 55°C5 min später sind die Wolken weg und er heizt wieder auf 65°C.
Das ist doch nicht gut für die Heizspirale, oder? heizen, nicht heizen, heizen... usw.Da ich es selbst programmiere kann ich das nun selbst entscheiden, Durchschnittswert der PV, mindest Heizzeit, usw.....
Wie lange sollte der Heizstab den laufen, wenn er mal lauft?
wieivel kw braucht der heizstab ca.?ich würde gerne wissen, mit welchem Datenpunkt ich folgende infos bekomme:
- Heizt der Boiler gerade bzw. läuft die LWP atkiv
- Falls sie arbeitet, was macht sie. Trinkwasser, Speicher oder Fußbodenheizung?
- Wir haben auch einen Kühlkreis. Wie sehe ich, ob sie gerade heizt oder kühlt?
danke euch vielmals!!!!
-
@darth2010
Hallo darth2010
welche werte änderst du alle bei PV überschuss? nur WW? -
@issr4k
weißt du zufällig was die datenpunkte bedeuten:Name Adresse #Bytes Einheit Umrechnung Beschreibung WaermeEnergie_Heizen_12Monate 0x1640 4 kW Div10 WaermeEnergie_Heizen_12Monate (die Wochenzähler werden Montags,0:00 Uhr zurückgesetzt, die Jahreszähler sind rollierend) ElektroEnergie_Heizen_12Monate 0x1650 0x1650 4 kW Div10 ElektroEnergie_Heizen_12Monate (die Wochenzähler werden Montags,0:00 Uhr zurückgesetzt, die Jahreszähler sind rollierend) WaermeEnergie_Warmwasser_12Monate 0x1660, 4 bytes, factor=0.1 0x1660 4 kW Div10 WaermeEnergie_Warmwasser_12Monate (die Wochenzähler werden Montags,0:00 Uhr zurückgesetzt, die Jahreszähler sind rollierend) ElektroEnergie_Warmwasser_12Monate 0x1670 4 kW Div10 ElektroEnergie_Warmwasser_12Monate (die Wochenzähler werden Montags,0:00 Uhr zurückgesetzt, die Jahreszähler sind rollierend) ElektroEnergie_Warmwasser_1Woche 0x16D0 2 kW Div10 ElektroEnergie_Warmwasser_1Woche (die Wochenzähler werden Montags 0:00 Uhr zurückgesetzt) ElektroEnergie_Heizen_1Woche 0x16D1 2 kW Div10 ElektroEnergie_Heizen_1Woche (die Wochenzähler werden Montags 0:00 Uhr zurückgesetzt) WaermeEnergie_Warmwasser_1Woche 0x16D2 2 kW Div10 WaermeEnergie_Warmwasser_1Woche (die Wochenzähler werden Montags 0:00 Uhr zurückgesetzt) WaermeEnergie_Heizen_1Woche 0x16D3 2 kW Div10 WaermeEnergie_Heizen_1Woche (die Wochenzähler werden Montags 0:00 Uhr zurückgesetzt)
bedeutet ElektroEnergie_Warmwasser_12Monate das dies die Summe an verbrauchten Strom ist, in den letzten 12 monaten?
was bedeutet
WaermeEnergie_Warmwasser_12Monate???
ist das die Energie an Wärme? Also wieviel kWh Wärme erzeugt wurde??? -
Frage 1: Kannst du mir deine Beweggründe nennen, warum du den Heizstab für WW aktivierst und dann wieder deaktivierst?
Um Hintergrund meiner Frage: bin fleißiger Mitleser, PV & WP sind in Iobroker integriert und möchte nun meinen Solarüberschuss für die WW Aufbereitung nutzen.
Meine Gedanken sind:
a) Wenn Überschuss (~3kw) hebe WW temp1 um 10Grad an (von 50 auf 60)
b) Es wird empfohlen den Verdichter nicht zu häufig zu starten, d.h. Heizstab aktivieren. Da ich nur mittels viessmann api auf meine Anlage zugreife, kann ich den Punkt "Heizstab für WW" nicht über iobroker setzen, sondern nur per Hand an der Anlage.
Und deswegen Frage ich: da der Heizstab nur für WW aktiviert wird, spricht ja nichts dagegen den einmalig per Hand an der Anlage zu setzen, somit keine notwendig den zu aktivieren und deaktivieren für jede Aufbereitung.
Edit: habe gesehen, dass der Verdichter ebenfalls mit anspringt. Sehe aktuell kaum einen Nutzen für den Heizstab, in diesem Fall. Verbrauch geht auf über 11kw, ohne Heizstab bin ich bei 4-5. Klar, es braucht länger zum Aufheizen, aber ich bleib größtenteils im Bereich des PV Überschusses.
c) wenn Überschuss kleiner ~3kw setze temp2 runter.
Frage 2: übersehe ich da was? Ist mein Gedankengang korrekt?Frage 3 an alle: gibt es eine Möglichkeit die Heizleistung zu "drosseln", eben auf meinen PV-Überschuss(3-6kw)?
Ich habe über etliche andere Projekte gelesen, die die PV in die Anlage integriert (tiefere Codierebene in der Anlage) haben mittels zusätzlichem Zähler, habe dort aber nirgends raus lesen können, ob die Leistung sich anpasst.Vielen Dank vorab!