NEWS
Viessmann-Adapter mit vcontrol
-
@martybr
Haha das kenne ich! Bei mir sind es 10 Tage -
Super, dann besorge ich ein Opto-Kabel und USB-Verlängerung um das ganze an den ioB-Server anzuschließen.
Danke
Muss man die Optolink Schnittstelle der Vitical noch freischalten oder ist die immer aktiv?
-
@darth2010
Die ist immer aktiv. -
Bitte mal die GitHub Version testen. Das Problem kam mit der Großen Code Umstellung die ich vor ein paar Wochen gemacht habe.
Ich konnte jetzt leider nicht testen, darum bitte mal testen und Feedback geben. Danke
-
EDIT: Kann leider nicht testen.
Habe aus benutzerdefinierter URL https://github.com/misanorot/ioBroker.viessmann installiert. In der Objekt-Struktur taucht zwar etwas auf dieser Ordner ist leer.
Aber ansonsten komme ich in keine Adapterkonfiguration (Instanzen ist diesbezüglich leer) rein...Muss auch dazu sagen, dass ich noch nie einen Adapter o.Ä. von außerhalb des Stable installiert habe.
Wenn du mir erklärst wie, kann ich gerne testen.
-
@issr4k Hallo, den eigentlichen Adapter vorher gelöscht?
Nach der Installation über GitHub, musst du über das plus Zeichen, eine Instanz hinzufügen.
-
@issr4k said in Viessmann-Adapter mit vcontrol:
Grüß dich @martybr
Die set commands laufen bei meiner 222-g auf den gleichen Adressen wie die get commands.
zB. Warmwassertemp über ioB ändern funktioniert ohne Probleme.
Kann heute Abend meine Dateien anhängen.Die vcontrold.xml ist irgendeine Standarddatei aus dem openv Forum, welche ich nur angepasst habe.
vito.xml vcontrold.xmlEdit: Falls die Adressen bei dir auch funktionieren sollten und du weitere herausfindest würde ich mich freuen, wenn du hier noch etwas postest
Hallo issr4k,
ich habe auch eine Vitocal 222-g und daher dachte ich nehme ich deine beiden XMLs als ersten Start.Ich habe meinen PI soweit fertug und er ist per Optolink verbunden.
Ein Putty Test zeigt:
vctrld>version Version: 0.98.12-4-g70ef62b vctrld>getTempA 5.500000 Grad Celsius
Das sind zumindest schonmal Antworten von der Vitocal .
Nun verstehe ich die "5.500000 Grad Celsius" nicht... aktuell sind es 4.1°C.
Wo ist da der Fehler?Gruß
Darth -
@blauholsten bin leider noch nicht wieder ans Testen gekommen…
@darth2010 mhh kann ich dir ad-hoc nicht beantworten, eine Vermutung wäre möglicherweise das falsche Protokol. KW statt 300, da hatte ich zumindest auch schonmal abweichende Werte.
Davon abgesehen gaube ich, dass die xml Dateien aus einem der älteren Posts nicht meinen aktuellen entsprechen.
Ich schaue dass ich die heute Abend nochmal hochlade -
@darth2010
Hier mal meine Dateien, die an der Vitocal 333g funktionieren.
Ich habe weiter unten einige Datenpunkte für die Lüftung Vitovent 300F eingefügt. Die kannst du ja löschen. -
Mein VControld-Server stürzte nach einigen Tagen Betrieb ab. Ich habe nun die vcontrold-Version von 0.98.11 auf die 0.98.12 Version upgedated. Ich werde das ein paar Tage beobachten und hier berichten.
-
@darth2010
vcontrold.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/serial/port0</tty> <!-- GGF. ZEILE ANPASSEN!!! --> </serial> <net> <port>3002</port> </net> <logging> <file>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></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>
vito.xml
<?xml version="1.0"?> <vito> <devices> <device ID="204D" name="V200WO1C" protocol="P300"/> </devices> <commands> <!-- AUSSENTEMPERATUR --> <command name="getTempA" protocmd="getaddr"> <addr>0101</addr> <len>2</len> <unit>UT</unit> <description>Ermittle Aussentemperatur in Grad C</description> </command> <!-- HEIZUNG --> <command name="getRoomtemp" protocmd="getaddr"> <addr>2000</addr> <len>2</len> <unit>UT</unit> <description>Ermittle Soll-Raumtemperatur</description> </command> <command name="setRoomtemp" protocmd="setaddrValue"> <addr>2000</addr> <len>2</len> <unit>UT</unit> <description>Setze Soll-Raumtemperatur</description> </command> <!-- WARMWASSER --> <command name="getTempP" protocmd="getaddr"> <addr>010D</addr> <len>2</len> <unit>UT</unit> <description>Ermittle Warmwassertemperatur</description> </command> <command name="getTempWWsoll" protocmd="getaddr"> <addr>6000</addr> <len>2</len> <unit>UT</unit> <description>Ermittle Warmwassersolltemperatur</description> </command> <command name="setTempWWsoll" protocmd="setaddrValue"> <addr>6000</addr> <len>2</len> <unit>UT</unit> <description>Setze Warmwassersolltemperatur</description> </command> <command name="getTempWWsoll_2" protocmd="getaddr"> <addr>600C</addr> <len>2</len> <unit>UT</unit> <description>Bedienung WW - Betriebsdaten WW: Zweiter Sollwert (10..60 (95))</description> </command> <command name="setTempWWsoll_2" protocmd="setaddrValue"> <addr>600C</addr> <len>2</len> <unit>UT</unit> <description>Bedienung WW - Betriebsdaten WW: Zweiter Sollwert (10..60 (95))</description> </command> <!-- STATUS PUMPEN --> <command name="getStatusV1" protocmd="getaddr"> <addr>0480</addr> <len>1</len> <unit>RT</unit> <description>Status Verdichter 1 (0..1)</description> </command> <command name="getStatPump" protocmd="getaddr"> <addr>048D</addr> <len>1</len> <unit>RT</unit> <description>Status HK1: Heizkreispumpe (0..1)</description> </command> <command name="getStatPumpZirk" protocmd="getaddr"> <addr>0490</addr> <len>1</len> <unit>BST2</unit> <description>Status Zirkulationspumpe (0..1)</description> </command> <command name="getPumpZirk_Betriebsstunden" protocmd="getaddr"> <addr>0590</addr> <len>4</len> <unit>CS</unit> <description>Betriebsstunden Zirkulationspumpe</description> </command> <command name="getStatPPump" protocmd="getaddr"> <addr>0496</addr> <len>1-Bit</len> <unit>RT</unit> <description>Status Warmwasser: Speicherladepumpe (0..1)</description> </command> <!-- STATUSINFORMATIONEN --> <command name="getJAZ" protocmd="getaddr"> <addr>1680</addr> <len>1</len> <unit>JAZ</unit> <description>Energiebilanz: Jahresarbeitszahl (0..10)</description> </command> <command name="getJAZ_Heiz" protocmd="getaddr"> <addr>1681</addr> <len>1</len> <unit>JAZ</unit> <description>Energiebilanz: Jahresarbeitszahl Heizen (0..10)</description> </command> <command name="getJAZ_WW" protocmd="getaddr"> <addr>1682</addr> <len>1</len> <unit>JAZ</unit> <description>Energiebilanz: Jahresarbeitszahl WW (0..10)</description> </command> <!-- BEDIENUNG --> <command name="set1xWW" protocmd="setaddrValue"> <addr>B0D0</addr> <len>1</len> <unit>XX</unit> <description>Bedienung 1xWW-Bereitung (0=aus 2=ein)</description> </command> <command name="get1xWW" protocmd="getaddr"> <addr>B0D0</addr> <len>1</len> <unit>XX</unit> <description>Bedienung WW 1xWW Bereitung (0=aus 2=ein)</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> <command name="getHeater" protocmd="getaddr"> <addr>7907</addr> <len>1</len> <unit>XX</unit> <description>Leistung Durchlauferhitzer (1=3, 2=6 oder 3=9kW)</description> </command> <command name="setComp" protocmd="setaddrValue"> <addr>5012</addr> <len>1</len> <unit>XX</unit> <description>Freigabe Verdichterstufe (1=WW 2=Heiz 3=WW+Heiz 15=default)</description> </command> <command name="getComp" protocmd="getaddr"> <addr>5012</addr> <len>1</len> <unit>XX</unit> <description>Freigabe Verdichterstufe (1=WW 2=Heiz 3=WW+Heiz 15=default)</description> </command> </commands> </vito>
-
@issr4k said in Viessmann-Adapter mit vcontrol:
@darth2010
vcontrold.xml<?xml version="1.0"?> <V-Control xmlns:vcontrol="http://www.openv.de/vcontrol"> ...
vito.xml
<?xml version="1.0"?> <vito> ...
@martybr said in Viessmann-Adapter mit vcontrol:
@darth2010
Hier mal meine Dateien, die an der Vitocal 333g funktionieren.
Ich habe weiter unten einige Datenpunkte für die Lüftung Vitovent 300F eingefügt. Die kannst du ja löschen.Danke euch beiden
Damit werde ich in die nächste Runde einsteigen und berichten.Gruß
Darth -
@martybr sagte in Viessmann-Adapter mit vcontrol:
Mein VControld-Server stürzte nach einigen Tagen Betrieb ab. Ich habe nun die vcontrold-Version von 0.98.11 auf die 0.98.12 Version upgedated. Ich werde das ein paar Tage beobachten und hier berichten.
Hatte vor ein paar Wochen bereits auf die .12 umgestellt, allerdings liefen bisher beide Versionen ohne Abstürze. Ich lese derzeit aber auch nur aus, da ich die PV-Anlage dieses Jahr erst installieren kann
-
@issr4k
Ich habe auch ein paar mehr Datenpunkte, die ich abfrage
Ich warte ein Woche auf neue Ergebnisse. Wenn der Server wieder abstürzt, dann werde ich einige Werte aus der Vito.xml entfernen.In welchem Rhythmus fragst du die Werte ab?
-
@issr4k wie genau sendest du denn die set-Befehle über ioBroker raus? Ich habe versucht, mit Blockly zu arbeiten, allerdings wird mir dort der Viessmann-Adapter gar nicht angezeigt.
Bisher sende ich die set-Befehle per Hand über die Konsole mittels vclient, wollte aber bestimmte Abhängigkeiten einbauen und dafür ioBroker verwenden.
-
@micha487 die Datenpunkte des viessmann -Adapters sind doch in deiner Objektstruktur, oder nicht? Dort musst doch du in jedem Fall direkt über den Objektbrowser manuell Werte setzen können. Wenn es dort geht, klappt auch auf jeden Fall Blockly bzw. generell über den Javascript-Adapter.
EDIT:
Gerade nochmal getestet.. ich schreibe manuell unter "set" Roomtemp 22 und nach dem eingestellten Zeitinterval des Viessmann-Adapters wird Roomtemp unter "get" aktualisiert. -
@blauholsten so... habe direkt übers Kätzchen icon im Adapter Browser > Benuzerdefiniert > https://github.com/misanorot/ioBroker.viessmann geladen, dann Instanz manuell hinzugefügt.
Der Adapter wird grün, holt einmalig Daten (get), dann ich ändere die vito.xml, setze den Haken bei "Vito.xml neu einlesen" und speichere.
Der Adapter startet neu und die Daten im Objektbrowser ändern sich nicht mehr z.B. wenn ich manuell an der Wärmepumpe einen Wert ändere.PS: kann natürlich sein, dass ich jetzt beim installieren des Adapters einen Bock geschossen habe oder generell zu doof bin.. Kann ich irgendwo eine Versionsnummer abgleichen zu deiner letzten Änderung daran?
-
@issr4k das manuelle Setzen über die Datenpunkte funktioniert bei mir. Allerdings taucht der viessmann-Adapter nicht im Blockly bzw. im Javascript-Adapter auf:
-
@micha487 habe mal geschaut bei mir wird der Adapter auch nicht unter sendTo gelistet.
Sprech die Datenpunkte doch einfach direkt an. -
@issr4k Super, das klappt. Vielen Dank.
Jetzt muss ich nur noch meine Vito.xml für die Setz-Befehle etwas aufräumen, bei dir sieht das wesentlich funktionaler und übersichtlicher aus