NEWS
Viessmann-Adapter mit vcontrol
-
@martybr said in Viessmann-Adapter mit vcontrol:
@hoizi1994
Ich habe die Vitovent 300F. Die 200W hat andere Datenpunkte. Versuch mal die Werte zu bekommen. Sind die in deinem Handbuch beschrieben? Teste mal mit einem Wert. Bei mir war es auch ein langwieriges Recherchieren, bis ich die richtigen Werte gefunden hatte.
Zeige mal deine xml-Dateien, vielleicht finde ich das was.So das was ich rausgefunden habe sind nur die Datenpunkte um den volumenstrom der lüftung in % zu ändern
B005 habe ich bis jetzt nur 2 und 66 rausbekommen 66 war die intensivlüftung wenn mans an der steuerung manuell startet 2 dürfte der betriebsmodus für die zeitsteuerung sein oder so
Doch wie man in den Leistungsstufen unschaltet bekam ich noch nicht raus. Evtl. hast ein paar tipps wie ich so was rausfinden könnte
-
@hoizi1994 Ich habe auch nur die große Suchmaschine und mein Handbuch durchsucht.
Evtl. findest du in anderen Foren Infos über die 200W, z,B. FHEM:
https://forum.fhem.de/index.php?topic=104786.0Das war auch bei meiner 300F eine Sucherei, bis ich die richtigen Werte gefunden habe.
Edit:
Schau mal hier:# Lüftung POLL, 01F7B00501, 1ByteU, 1, Lueftung_Betriebsart , - SET, Einstellung_Lueftung, 01F4B00501, 1ByteU , - # kann man dann mit 66 auf Intensivbetrieb setzen POLL, 01F70A7E01, 1ByteH, 1, Lueftung_Betriebsprogramm , - POLL, 01F70A0103, 2ByteS, 10, Lueftung_Zulufttemperatur , - POLL, 01F70A0203, 2ByteS, 10, Lueftung_Ablufttemperatur , - POLL, 01F70A0003, 2ByteS, 10, Lueftung_AussentemperaturLueftung , - POLL, 01F70A0403, 2ByteU, 1, Lueftung_Zuluft_Volumenstrom, - POLL, 01F70A0C03, 2ByteS, 1, Lueftung_Elek_Vorheiz, - POLL, 01F70A0D03, 2ByteU, 1, Lueftung_Bypass, - POLL, 01F70A0E03, 2ByteU, 1, Lueftung_Filterstandzeit, - POLL, 01F70A0303, 2ByteS,10 ,Lueftung_Fortlufttemperatur, - POLL, 01F70A0503, 2ByteU,1 ,Lueftung_Fortluft_Volumenstrom, - POLL, 01F70A0403, 2ByteU,1 ,Lueftung_Zuluft_Volumenstrom, -
Hier kommt deine B005 vor: 01F4B00501
Versuche mal die Werte aus der Tabelle und lass vorne die ersten 4 Zeichen und hinten die letzten 2 Zeichen weg.
-
@martybr oke danke für die Info
Hätte da noch ne frage zu den .xml wie sollte die vcontrold aussehen wenn ich eine setadrr66 machen würde für die intensiv Lüftung
muss ich da von deiner vcontrold.xml noch was hinzufügen ?
für die Vito dachte ich an sowas oder sehe ich da was falsch?
<command name="setIntensivLueftung" protocmd="setaddr66"> <addr>B005</addr> <len>1</len> <unit>ST</unit> <description>Intensiv Lueftung</description> </command>
bin hier leider ganz neu in dem Thema und finde nichts ähnliches im Inet
lg. und danke
-
@hoizi1994
Ich hatte in meiner vcontrold.xml folgende Protokolle definiert:<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="setaddr0"> <send>SEND 00 02 $addr $hexlen 00;RECV 1 SR</send> </command> <command name="setaddr1"> <send>SEND 00 02 $addr $hexlen 01;RECV 1 SR</send> </command> <command name="setaddr2"> <send>SEND 00 02 $addr $hexlen 02;RECV 1 SR</send> </command> <command name="setaddr16"> <send>SEND 00 02 $addr $hexlen A0 00;RECV 2 SR</send> </command> <command name="setaddr17"> <send>SEND 00 02 $addr $hexlen AA 00;RECV 2 SR</send> </command> <command name="setaddr18"> <send>SEND 00 02 $addr $hexlen B4 00;RECV 2 SR</send> </command> <command name="setaddr19"> <send>SEND 00 02 $addr $hexlen BE 00;RECV 2 SR</send> </command> <command name="setaddr20"> <send>SEND 00 02 $addr $hexlen C8 00;RECV 2 SR</send> </command> <command name="setaddr21"> <send>SEND 00 02 $addr $hexlen D2 00;RECV 2 SR</send> </command> <command name="setaddr22"> <send>SEND 00 02 $addr $hexlen DC 00;RECV 2 SR</send> </command> <command name="setaddr23"> <send>SEND 00 02 $addr $hexlen E6 00;RECV 2 SR</send> </command> <command name="setaddr24"> <send>SEND 00 02 $addr $hexlen F0 00;RECV 2 SR</send> </command> <command name="setaddr25"> <send>SEND 00 02 $addr $hexlen FA 00;RECV 2 SR</send> </command> <command name="setaddr45"> <send>SEND 00 02 $addr $hexlen C2 01;RECV 2 SR</send> </command> <command name="setaddr55"> <send>SEND 00 02 $addr $hexlen 26 02;RECV 2 SR</send> </command> <command name="setfunc"> <send>SEND 00 07 $addr 02 02;SEND BYTES $unit;RECV $len</send> </command> </commands> </protocol> </protocols>
Vielleicht kannst du ja ein Protokoll übernehmen oder dir ein neues bauen.
Welche Werte musst du in B005 schreiben? -
@Hoizi1994
Ich danke dir für die infos bzüglich der vito.xml und vcontrold.xml von martybr@martybr
Hallo Martybr
ich hätte da mal eine frage zu den JAZ werten, die sind bei mir um den Faktor 10
zuhoch. Sprich aus 3,5 wird im IOB eine 35.
Kann man das in der vito.xml irgendwo anpassen?Primärkreis Temperatur Eingang ist da (5,9 °C)
Primärkreis Temperatur Ausgang nicht (0°C)
Wo kann ich die korrekten Adressen finden?Ich habe einen Exprot aller Datapoint der A200 von der Vitosoft.
Wenn mal die da vielleicht herleiten kann?!? -
@martybr said in Viessmann-Adapter mit vcontrol:
@hoizi1994
Ich hatte in meiner vcontrold.xml folgende Protokolle definiert:<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="setaddr0"> <send>SEND 00 02 $addr $hexlen 00;RECV 1 SR</send> </command> <command name="setaddr1"> <send>SEND 00 02 $addr $hexlen 01;RECV 1 SR</send> </command> <command name="setaddr2"> <send>SEND 00 02 $addr $hexlen 02;RECV 1 SR</send> </command> <command name="setaddr16"> <send>SEND 00 02 $addr $hexlen A0 00;RECV 2 SR</send> </command> <command name="setaddr17"> <send>SEND 00 02 $addr $hexlen AA 00;RECV 2 SR</send> </command> <command name="setaddr18"> <send>SEND 00 02 $addr $hexlen B4 00;RECV 2 SR</send> </command> <command name="setaddr19"> <send>SEND 00 02 $addr $hexlen BE 00;RECV 2 SR</send> </command> <command name="setaddr20"> <send>SEND 00 02 $addr $hexlen C8 00;RECV 2 SR</send> </command> <command name="setaddr21"> <send>SEND 00 02 $addr $hexlen D2 00;RECV 2 SR</send> </command> <command name="setaddr22"> <send>SEND 00 02 $addr $hexlen DC 00;RECV 2 SR</send> </command> <command name="setaddr23"> <send>SEND 00 02 $addr $hexlen E6 00;RECV 2 SR</send> </command> <command name="setaddr24"> <send>SEND 00 02 $addr $hexlen F0 00;RECV 2 SR</send> </command> <command name="setaddr25"> <send>SEND 00 02 $addr $hexlen FA 00;RECV 2 SR</send> </command> <command name="setaddr45"> <send>SEND 00 02 $addr $hexlen C2 01;RECV 2 SR</send> </command> <command name="setaddr55"> <send>SEND 00 02 $addr $hexlen 26 02;RECV 2 SR</send> </command> <command name="setfunc"> <send>SEND 00 07 $addr 02 02;SEND BYTES $unit;RECV $len</send> </command> </commands> </protocol> </protocols>
Vielleicht kannst du ja ein Protokoll übernehmen oder dir ein neues bauen.
Welche Werte musst du in B005 schreiben?Einen wert von 66 muss ich schreiben
Wenn ich hier die setaddr55 kopiere und auf 66 ändere müsste das doch passen oder was bedeuted das hinterer hexlen usw? muss da auch was gändert werden
edit: sollte 1 bite sein der B005
-
@hoizi1994
Probiere doch setaddr1 aus. Hier ist die Länge auf 1 Byte definiert.Also:
<command name="setIntensivLueftung" protocmd="setaddr1"> <addr>B005</addr> <len>1</len> <unit>ST</unit> <description>Intensiv Lueftung</description> </command>
Ist nur meine Vermutung, habe ich nicht getestet.
-
wenn ich getLueftung bei Intensivlüftung mache kommt ein wert von 66 sollte dann die setaddr nicht auch 66 haben?
lg.
-
@hoizi1994 Du musst hier den Namen "setaddrxxx" vom Wert unterscheiden. Wenn du als Wert "66" bekommst, dann benötigst du auch eine Definition die zumindest 2 byte definiert.
Wie list du den Wert "getLueftung" aus? Kannst du nicht direkt mit den gleichen Adressen eine Definition "setLueftung" machen und dort z.B. als Wert die 66 eintragen?Zeige mal die Passage aus der vcontrold.cml und der vito.xml
-
so lese ich aus
vito:<command name="getLueftung" protocmd="getaddr"> <addr>B005</addr> <len>1</len> <unit>ST</unit> <description>Lueftungsmodus</description> </command>
wenn ich setaddr1 verwende hüpft der auf wert 3 und schaltet sich auf abschaltbetrieb
vcontrold
<command name="setaddr6"> <send>SEND 00 02 $addr $hexlen 03;RECV 1 SR</send> </command>
müsste ich bei der vcontrold hexlen auf 66 ?
-
@hoizi1994
Setze doch mal in der vito.xml<command name="setLueftung" protocmd="setaddr"> <addr>B005</addr> <len>1</len> <unit>ST</unit> <description>Lueftungsmodus</description> </command>
und dann in dem Datenpunkt unter Viessmann.0/set dort einen Wert.
-
@martybr im adapter von iobroker?
da tut sich nix
-
@hoizi1994 Hast du die vito.xml entsprechend ergänzt? also den getxx und der setxx Command eingetragen und die neue vito.xml in der Viessmann-App neu eingelesen?
Zeige bitte deine vito.xml mit den beiden Einträgen.
-
so sahs jetzt aus den wert habe ich im adapter eingegeben
<command name="getLueftung" protocmd="getaddr"> <addr>B005</addr> <len>1</len> <unit>ST</unit> <description>Lueftungsmodus</description> </command> <command name="setLueftung" protocmd="setaddr"> <addr>B005</addr> <len>1</len> <unit>ST</unit> <description>Lueftungsmodus</description> </command>
-
@hoizi1994
Was mir noch dazu einfällt ist: Hast du den Wert mit Bestätigt = Ja gesetzt?
Ansonsten bin ich da auch überfragt. Meine 300F hat andere Datenpunkte und ich steuere über die App. In iobroker lese ich die Werte aus und baue mir Grafiken. -
@martybr nein ohne bestätigt
-
@hoizi1994 Teste mal mit Bestätigung. Bei Adaptern muss man mit Bestätigung den Wert setzen, so dass dieser die Änderung erkennt.
-
@martybr könnte hier ein anderer unit wert sinnmachen? mit best. hat auch nix verändert
-
@hoizi1994
Du könntest folgende Units testen:
Bsp.<command name="getBetriebsart" protocmd="getaddr"> <addr>B000</addr> <len>1</len> <unit>BA</unit> <description>Heizkreis 1: Betriebsart (0..4)</description> </command> <command name="setBetriebsart" protocmd="setaddr"> <addr>B000</addr> <len>1</len> <unit>BA</unit> <description>Setze Betriebsart (0..4)</description> </command> <command name="setBetriebsart0" protocmd="setaddr0"> <addr>B000</addr> <len>1</len> <unit>BA</unit> <description>Abschaltbetrieb</description> </command> <command name="setBetriebsart1" protocmd="setaddr1"> <addr>B000</addr> <len>1</len> <unit>BA</unit> <description>Warmwasser</description> </command> <command name="setBetriebsart2" protocmd="setaddr2"> <addr>B000</addr> <len>1</len> <unit>BA</unit> <description>Heizen und Warmwasser</description> </command> <command name="get1xWW" protocmd="getaddr"> <addr>B020</addr> <len>1</len> <unit>RT</unit> <description>1 malige Warmwasserbereitung (2 == ein, 0 == aus)</description> </command> <command name="set1xWW" protocmd="setaddr2"> <addr>B020</addr> <len>1</len> <unit>RT</unit> <description>1 malige Warmwasserbereitung (2 == ein, 0 == aus)</description> </command> <command name="setHeaterforWW" protocmd="setaddrValue"> <addr>6015</addr> <len>1</len> <unit>XX</unit> <description>Druchlauferhitzer für Warmwasser aktivieren</description> </command> <command name="setHeaterforRoomtemp" protocmd="setaddrValue"> <addr>7902</addr> <len>1</len> <unit>XX</unit> <description>Durchlauferhitzer für Heizung aktivieren</description> </command> <command name="setHeater" protocmd="setaddrValue"> <addr>7907</addr> <len>1</len> <unit>XX</unit> <description>Leistung Durchlauferhitzer (1=3, 2=6 oder 3=9kW)</description> </command>
Im Bereich Bxxx lese und setze ich über die Unit >BA<
<unit name='BetriebsArt'> <abbrev>BA</abbrev> <type>enum</type> <enum bytes='00' text='Abschaltbetrieb'/> <enum bytes='01' text='Warmwasser'/> <enum bytes='02' text='Heizen und Warmwasser'/> <enum bytes='03' text='3'/> <enum bytes='04' text='dauernd reduziert'/> <enum bytes='05' text='dauernd normal'/> <enum bytes='06' text='normal Abschalt'/> <enum bytes='07' text='nur Kuehlen'/> <enum bytes="42" text="3"/> <enum bytes="82" text="4"/> <enum text='UNKNOWN'/> </unit>
oder
<unit name="Einstellwert"> <abbrev>XX</abbrev> <calc get="V" set="V"/> <type>uchar</type> <entity/> </unit>
Ich kenne die Datensatzstruktur der 200W nicht. Vielleicht kann hier jemand aus dem Forum weiterhelfen.
-
Hallo zusammen, ich wollte mal fragen, ob bei euch die Verbindung auch sporadisch abbricht?
Bei mir ist von Zeit zu Zeit die verbindung von Vcontrold zum Oprolink dahin.Habe jetzt soweit raus, das mit einem USBreset und anschließendem Adapter neustart wieder da alles im Lot ist.
Was ich aber noch immer manuell ausfühern muss.
Habe noch nicht raus wie ich das per Skript resalisieren kann.
(Ählich verhält es sich momentan mit dem USB300 EnOcean Stick am Pi4 mir ser2net)Meine neue konstelation sieht so aus, Optolink am Pi4 und der IOB im Docker auf der Diskstatio.
Als ich das direkt im IOB des Pi4 und über Mqtt zur Diskstaion hatte, ist das nicht vorgekommen.