Modul zur Anbindung Viessmann Heizung (Vitotronic 200 KW1)

Begonnen von Adam, 15 Februar 2014, 18:17:35

Vorheriges Thema - Nächstes Thema

kvo1


Hallo Adam,

ZitatIch lass es bei mir ein paar Tage laufen, wenn es bei mir oder anderen Keine Probleme gibt kann ich diese Version dann auch als offizielle Version einchecken.

vielleicht könnt Ihr das ja so machen, das es irgendwie umschaltbar / konfigurierbar ist.
Ich habe DEINE Version seit ewigen Zeiten am laufen, OHNE Probleme und würde nicht ohne Not war verändern wollen.!


Gruss , schönen 4. Advent

Klaus   ;)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

srxp

Hi,
Freut mich wenns gefällt :-)
Also ich hätte folgende Idee. Ich führe eine protocol Bezeichnung "kwfast" ein welche auf die neue Anfrage Methode geht, "kw" würde auf die alte abfragemethode gehen. Weiters könnte ich einen Zusatz Parameter einführen welcher abgibt wieviel Werte ohne erneutes warten auf 0x05 ausgeführt werden sollen. Ich denke somit müsste jeder zufrieden sein :-) was meint ihr?
Lg

Raspiano

Hallo,
ich habe eine Vitotronic 200 Typ KOB (KO2B, funktionsgleich mit KO1B).
Ich kann alle Werte LESEN, so wie in der Viessmann-Doku http://connectivity.viessmann.com/de/mp_rt/vitogate/vitogate-200-typ-knx-ab-05-2016.html
beschrieben.

SCHREIBEN kann ich aber nur manche Datenpunkte wie z.B. Systemzeit oder die aktuelle Raumtemperatur für HK1 und HK2.

Wichtige Datenpunkte wie Niveau HK1 oder Steigung HK1, kann ich NICHT erfolgreich schreiben, obwohl das lt. Doku beschreibbare Register sind.

Ich kann noch nicht einmal die Betriebsart schreiben oder den Partymodus einschalten.

Ich kann mir nicht erklären, woran es liegt.

Ich POLLe ca. 30 Datenpunkte und habe als POLL-Intervall 120 sec.

Ich benutze das aktuelle FHEM mit dem aktuellen 89_vcontrol.

Zusätzlich an die Steuerung angeschlossen ist noch eine Vitolan 100, mit der ich problemlos auch die og. Felder SCHREIBEN kann.
Aber natürlich will ich Vitolan 100 möglichst bald abschalten und unabhäng vom Viessman-Server alles mit FHEM schalten.

Hat jemand eine Idee, zumindest wie ich das Problem eingrenzen kann, das wäre super :-)
FHEM in docker fhem/fhem:latest auf intel i7/asrock deskmini 310; mit Stromzähler 98_ArduCounter.pm, Relais-Steuerung mit Arduino, diverse Homematic-Regler und Schalter über HM-LAN, Solarstrommessung, LaCrosse-Temperatursensoren über JeeLink, Viessmann V200 über 89_VCONTROL.pm

srxp

Hallo Raspiano,
Kannst du die Werte die du schreiben willst erfolgreich auslesen?
Kannst mal dein config file Posten bitte?
Probier Mal bitte die Version des Moduls dass ich hier gepostet habe (die letzte die du findest, müsste ein paar posts vor diesem sein). Ich hatte anfangs Probleme beim Schreiben von negativen werten, da hatte ich einen kleinen Bug behoben. @adam: das war in der 2ByteSConv Funktion. Kann jetzt net sagen ob das aber eh schon committed würde, gepostet hätte ich es mal.

VL is aber bei dir auch was anderes.
Aber poste Mal deine Dateien dann schau en wir weiter.

Lg

mmi

Zitat von: srxp am 17 Dezember 2016, 19:08:15
Freut mich wenns gefällt :-)
Also ich hätte folgende Idee. Ich führe eine protocol Bezeichnung "kwfast" ein welche auf die neue Anfrage Methode geht, "kw" würde auf die alte abfragemethode gehen. Weiters könnte ich einen Zusatz Parameter einführen welcher abgibt wieviel Werte ohne erneutes warten auf 0x05 ausgeführt werden sollen. Ich denke somit müsste jeder zufrieden sein :-) was meint ihr?
Lg

Hi,

danke Dir für das Update - bislang läuft die Version von heute auch bei mir, ohne dass das Problem mit 05 Werten in Readings nochmal aufgetreten ist.

Mir sind aber Schwankungen in der Dauer der Polls aufgefallen.

2016.12.17 19:31:02 4: VCONTROL: End of Poll ! Duration: 2.49
2016.12.17 19:32:33 4: VCONTROL: End of Poll ! Duration: 3.05
2016.12.17 19:34:03 4: VCONTROL: End of Poll ! Duration: 3.29
2016.12.17 19:35:34 4: VCONTROL: End of Poll ! Duration: 3.88
2016.12.17 19:37:05 4: VCONTROL: End of Poll ! Duration: 5.11
2016.12.17 19:38:40 4: VCONTROL: End of Poll ! Duration: 15.29
2016.12.17 19:38:54 4: VCONTROL: End of Poll ! Duration: 3.06
2016.12.17 19:39:35 4: VCONTROL: End of Poll ! Duration: 11.04
2016.12.17 19:41:12 4: VCONTROL: End of Poll ! Duration: 17.34
2016.12.17 19:42:37 4: VCONTROL: End of Poll ! Duration: 12.53
2016.12.17 19:44:07 4: VCONTROL: End of Poll ! Duration: 11.81
2016.12.17 19:45:36 4: VCONTROL: End of Poll ! Duration: 11.61
2016.12.17 19:47:06 4: VCONTROL: End of Poll ! Duration: 11.41
2016.12.17 19:48:34 4: VCONTROL: End of Poll ! Duration: 8.70
2016.12.17 19:50:10 4: VCONTROL: End of Poll ! Duration: 14.92
2016.12.17 19:51:37 4: VCONTROL: End of Poll ! Duration: 11.70
2016.12.17 19:52:16 4: VCONTROL: End of Poll ! Duration: 3.01
2016.12.17 19:53:47 4: VCONTROL: End of Poll ! Duration: 4.40
2016.12.17 19:55:16 4: VCONTROL: End of Poll ! Duration: 3.32
2016.12.17 19:56:48 4: VCONTROL: End of Poll ! Duration: 4.56
2016.12.17 19:58:17 4: VCONTROL: End of Poll ! Duration: 3.48
2016.12.17 19:59:48 4: VCONTROL: End of Poll ! Duration: 4.69
2016.12.17 20:01:34 4: VCONTROL: End of Poll ! Duration: 20.88
2016.12.17 20:02:47 4: VCONTROL: End of Poll ! Duration: 4.02
2016.12.17 20:04:18 4: VCONTROL: End of Poll ! Duration: 5.10
2016.12.17 20:05:47 4: VCONTROL: End of Poll ! Duration: 4.05
2016.12.17 20:07:18 4: VCONTROL: End of Poll ! Duration: 5.18


Ich ahne, woran es liegen kann/wird. Die erste Verlangsamung trat ab einem regulären Poll um 19:39 auf, welches auf ein set Kommando (und dessen Poll) folgte. Im Event Monitor konnte ich sehen, dass am Anfang der Polls immer wieder andere Events einliefen. In diesem Fall trafen Events ein, welche alle 90s abgefragt werden. Da vcontrol auch alle 90s abfragt, war dies dann  "synchron", und führte zum Stocken.

Um 19:52 hab ich ein anderes Set Kommando losgeschickt. Die darauf folgende Poll Zyklen liefen dann schneller durch, da sie asynchron mit anderen Events sind.

Um 20:01 hat sich das wiederholt (mit anderen/mehr Events), das habe ich mal in 2 Dateien mitgeschnitten.

BG

kvo1

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Raspiano

#1086
@srxp

@Adam


Zitat von: srxp am 17 Dezember 2016, 20:16:37

Hallo Raspiano,
Kannst du die Werte die du schreiben willst erfolgreich auslesen?


JA, ich kann ALLE Werte korrekt auslesen.

Ich poste anbei meine V200-KOB-test.cfg.

Die POLL-Werte in dieser V200-KOB-test.cfg kann ich ALLE korrekt lesen, aber beim Schreiben geht nicht viel.


Mal konkret als Beispiel:

Kein Problem beim Lesen von Betriebsart HK1, Partymodus HK1 , Neigung HK1 und Niveau HK1.

Aber leider keine Reaktion/ Veränderung der Steuerungswerte nach dem Schreiben von Betriebsart HK1, Partymodus HK1 , Neigung HK1 oder Niveau HK1.

Hingegen kann ich Systemzeit und Raumtemp. problemlos schreiben.


KONKRETES BEISPIEL anhand der cfg anbei:

SET Heizung Betriebsart_Abschaltbetrieb

In der fhem.log sehe ich nun (verbose 5):

2016.12.17 22:15:26 5: VCONTROL_READ
2016.12.17 22:15:26 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:26 5: VCONTROL: Setze sendstr
2016.12.17 22:15:26 5: VCONTROL: send '01F7232301'
2016.12.17 22:15:26 5: SW: 01f7232301
2016.12.17 22:15:26 5: VCONTROL_READ
2016.12.17 22:15:26 5: VCONTROL: VCONTROL_Read '02'
2016.12.17 22:15:26 5: VCONTROL: receive 'HK1-Betriebsart : 2'
2016.12.17 22:15:29 5: VCONTROL_READ
2016.12.17 22:15:29 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:29 5: VCONTROL: Setze sendstr
2016.12.17 22:15:29 5: VCONTROL: send '01F7233001'
2016.12.17 22:15:29 5: SW: 01f7233001
2016.12.17 22:15:29 5: VCONTROL_READ
2016.12.17 22:15:29 5: VCONTROL: VCONTROL_Read '00'
2016.12.17 22:15:29 5: VCONTROL: receive 'HK1-Party : off'
2016.12.17 22:15:32 5: VCONTROL_READ
2016.12.17 22:15:32 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:32 5: VCONTROL: Setze sendstr
2016.12.17 22:15:32 5: VCONTROL: send '01F7233101'
2016.12.17 22:15:32 5: SW: 01f7233101
2016.12.17 22:15:32 5: VCONTROL_READ
2016.12.17 22:15:32 5: VCONTROL: VCONTROL_Read '00'
2016.12.17 22:15:32 5: VCONTROL: receive 'HK1-Spar : off'
2016.12.17 22:15:35 5: VCONTROL_READ
2016.12.17 22:15:35 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:35 5: VCONTROL: Setze sendstr
2016.12.17 22:15:35 5: VCONTROL: send '01F7250001'
2016.12.17 22:15:35 5: SW: 01f7250001
2016.12.17 22:15:35 5: VCONTROL_READ
2016.12.17 22:15:35 5: VCONTROL: VCONTROL_Read '02'
2016.12.17 22:15:35 5: VCONTROL: receive 'HK1-Betriebsart-aktuell : 2'
2016.12.17 22:15:38 5: VCONTROL_READ
2016.12.17 22:15:38 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:38 4: VCONTROL: End of Poll ! Duration: 45.60
2016.12.17 22:15:40 5: VCONTROL_READ
2016.12.17 22:15:40 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:43 5: VCONTROL_READ
2016.12.17 22:15:43 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:45 5: VCONTROL_READ
2016.12.17 22:15:45 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:49 5: VCONTROL_READ
2016.12.17 22:15:49 5: VCONTROL: VCONTROL_Read '0505'
2016.12.17 22:15:51 5: VCONTROL_READ
2016.12.17 22:15:51 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:54 5: VCONTROL_READ
2016.12.17 22:15:54 5: VCONTROL: VCONTROL_Read '05'
2016.12.17 22:15:56 5: VCONTROL_READ
2016.12.17 22:15:56 5: VCONTROL: VCONTROL_Read '05'

Das sieht mir so aus, dass da die ganze Zeit "01F7" gesendet wird, also LESEN.

Dabei will ich ja "01F4", also SCHREIBEN.

Aber wie gesagt mein Befehl in der FHEM Kommandozeile ist: 

SET Heizung Betriebsart_Abschaltbetrieb

und das ist in meiner cfg hinterlegt:

# Betriebsart explizit setzen
SET,   Betriebsart_Abschaltbetrieb,   01F423230100,   state,      -


Was könnte da falsch laufen im 89VCONTROL?

Gerne probiere ich auch die Version deines neuen Moduls :-)

FHEM in docker fhem/fhem:latest auf intel i7/asrock deskmini 310; mit Stromzähler 98_ArduCounter.pm, Relais-Steuerung mit Arduino, diverse Homematic-Regler und Schalter über HM-LAN, Solarstrommessung, LaCrosse-Temperatursensoren über JeeLink, Viessmann V200 über 89_VCONTROL.pm

Adam

In meiner Version war das bisher so, dass der SET Befehl zwischengespeichert wird und erst nach Ende des POLL Intervalls abgearbeitet wird.
Bei Verbose 5 müsste man das im LOG auch sehen.
Vlt. kannst Du mal ein größeres Log Stück als Datei anhängen dann kann man da mal rumsuchen!

Ich habe ein SET in Stephans Version noch nicht ausprobiert!
Werde ich die Tage mal machen.

Gruß
Adam

srxp

Ja genau das mit dem Set ist eh noch immer so. Macht anders auch keinen Sinn. Werde mir das heute mal ansehen ob ich was sehe.

Lg

srxp

#1089
Hi Raspiano,
also ich hab mir dein Problem mal angesehen.
Du hast die Parameter von dieser Vitogate Seite genommen. Diese stimmen aber wohl nicht mit den tatsächlichen Parameter der Vitotronic überein.
Das ist bei mir nämlich auch so. Beispiel: Mein korrekter Parameter für Warmwasser oben lautet 010D. Beim Vitogate steht aber 01CD. Ich schätze dass das das Vitogate umdreht auf den korrekten Parameter.
Probier doch mal folgendes für z.B. die Betriebsart:
Du hast ja jetzt 2323. Nimm aber mal 2301.
Schau zuerst mal nur ob du da auch beim Auslesen den korrekten Wert bekommst und falls ja probier mal einen Set zu machen.
fürs hk niveau könntest 2304 probieren.

was allerdings bei deinem log komisch ist dass nach dem fertigen poll interval überhaupt kein set gemacht wird...

lg

stephan

LuckyDay

@Raspiano

POLL, 01F700F802, 2ByteH,      1 , ID-Vito          , -

füge das mal in deine config ein, und lese damit deine vito id aus!

Raspiano

Hallo zusammen,

Problem gelöst  :D

Ich habe meine cfg minimal auf zwei POLLs und zwei SETs geschrumpft. Der eine set funktionierte und war auch perfekt im fhem.log zu sehen.
Von dem anderen SET war im log NICHTS zu sehen, das machte mich misstrauisch.

Die Lösung des Problems ist ziemlich banal:
Im einen Fall habe ich in der Eingabezeile von FHEM den Befehlstoken set kleingeschrieben, im anderen Fall groß.

Fazit:

set Heizung Betriebsart 0    funktioniert :-)

SET Heizung Betriebsart 0     funktioniert NICHT ;-)

Da leider keinerlei Fehlermeldung kommt, wenn man SET groß schreibt, war der Fehler nicht wirklich leicht zu finden  :-\


Zur zweiten Frage: Meine VITO ID ist 209f  (Vitotronic 200-KO2B - kompatibel zu KO1B und KW6B).

Gerne stelle ich bei Interesse meine cfg zur Verfügung, wenn ich allle Adressen soweit drin habe.


Vielen Dank für Eure Unterstützung!  :)
FHEM in docker fhem/fhem:latest auf intel i7/asrock deskmini 310; mit Stromzähler 98_ArduCounter.pm, Relais-Steuerung mit Arduino, diverse Homematic-Regler und Schalter über HM-LAN, Solarstrommessung, LaCrosse-Temperatursensoren über JeeLink, Viessmann V200 über 89_VCONTROL.pm

darkmission

Hallo Adam,

sorry das ich mich erst jetzt zurückmelde, seit dem letzten Post vom 5 September (69). Aber wie viele ITler muss/darf ich halt im letzten Quartal viel Zeit in meine normale Arbeit investieren  :)

Du hast angesprochen, dass das Modul während des Pollens das ganze FHEM blockt. Ich habe mal ein bisschen bei einem Modul mitgeholfen, Nobily Rollläden über SDuino zu steuern. Dabei haben wir, wenn ich mich recht erinnere, so etwas wie "queueing" eingesetzt, damit keine Signale verloren gehen. Das war aber im Sduino Modul, kann ich nix genaues mehr zu sagen.

Dann habe ich mich erinnert, das ich vor Jahren mal 2 eigene Module zum Auslesen von meinem Solarwechselrichter und Stromzähler lesen programmiert habe. Überall habe ich das Modul Blocking Call eingesetzt.

Wenn ich das richtig verstanden habe, startet Blocking Call einen Client Prozess, der dann parallel zu dem FHEM Hauptprozess läuft.
https://wiki.fhem.de/wiki/DevelopmentGuidelines#Aktualisierung_der_Readings
https://wiki.fhem.de/wiki/Blocking_Call

Wäre das evtl. nicht auch ein Ansatz für Dein Modul? Ich bin nicht so der Perl Freak, kenn mich mit anderen besser Programmiersprachen aus.
Dann könnte man das 300 Protokoll in Ruhe im Clientprozess im Hintergrund laufen lassen.

Gruß
Frank
Raspberry 2x PiB, 2x Pi2, 2x Pi3, 2xPi0, CUL, HM-LC-DIM1T-FM, LW12FC, Intertechno Funksteckdosen, OSMC, Viessmann Heizungssteuerung, eigene Photovoltaik Anbindung ( Effekta ), eigener "Powermeter" (3 x LED, 1 x Ferraris), AVR Steuerung, IR, Harmony Hub, SIGNALduino433/868, Dooya Rolladensteuerung...

srxp

Grüß euch,
hier findet ihr wieder mal ein aktualisiertes VControl Modul.
Hab die Möglichkeit eingebaut beim Define anzugeben wieviele Werte man innerhalb eines Sync-Bytes auslesen will, falls das KW-Protokoll verwendet wird. Standardwert ist 0, d.h. standardmäßig wird nun immer auf ein Sync-Byte gewartet bis eine neue Abfrage gemacht wird (so wie bisher).
Gibt man aber z.b. 20 an, werden 20 Werte innerhalb eines Sync-Bytes gepollt. Dann wird wieder auf ein Sync-Byte gewartet und dann wieder 20, sofern noch so viele über sind natürlich. Gibt man -1 an, werden alle Werte innerhalb eines Sync-Bytes gepollt. Somit kann man nun selbst steuern wieviele man pollen möchte, bzw. fhem halt blockieren.

@darkmission: Danke für den Input, werde mir das bei Zeiten mal anschaun :-)

Achja hab auch noch die Doku im File etwas erweitert.

@Adam: Eine Frage. Bei der Funktion VCONTROL_1ByteU2Parse, war da mal etwas anders? Weil jetzt seh ich keinen Unterschied zur VCONTROL_1ByteUParse, außer dass halt da das State-Setzen bzw. die Checks nicht gemacht werden?
Bevor ich da was ändere und einen Return der VCONTROL_1ByteUParse mache, hab ich mir gedacht ich frage mal nach. :-)

Noch was:
ich lasse bei mir ja immer alle Werte pollen...so um die 65 sinds (Dauer 2.5s). Jedenfalls hatte ich innerhalb eines Tages nur einmal ein Retry wobei der Counter nur auf 1 ging. Scheint also ganz gut zu funktionieren. Hab eine Vitotronic WO1B.

lg

stephan

srxp

#1094
Hallo liebe Leute,
so es ist soweit...ich hab das bestehende Modul VCONTROL in ein neues Modul VCONTROL300 verfrachtet.
Ich habe dieses soweit umprogrammiert dass es nun BlockingCall nutzt und somit komplett im Hintergrund lauft beim Daten abrufen --> Fhem wird somit nicht mehr blockiert.
Weiters unterstützt es nun das 300-er Protokoll, allerdings muss ich hier noch die Set Funktion implementieren. Das Protokoll KW wird natürlich auch noch unterstützt...hier funktioniert die Set Funktion schon. Das Protokoll GWG wird leider nicht mehr unterstützt momentan...vielleicht bau ich es aber auch wieder ein. Ist halt die Frage ob es noch viele Anlagen gibt die dieses Protokoll nutzen. Meldet euch einfach bei mir falls Interesse besteht.

Anbei findet ihr das neue Modul.

Wäre toll wenns von euch auch jemand testen könnte....bei mir läufts soweit eigentlich problemlos.
Der Vorteil am 300er Protokoll ist halt die Checksum. Somit kann man wirklich genau feststellen ob die Daten korrekt angekommen sind und ggf nochmals abfragen.
Der Nachteil ist dass es etwas langsamer ist da doch um einiges mehr Daten hin und her geschaufelt werden. Aber nachdem das Modul eh in einem extra Prozess läuft nicht weiter schlimm.

Je nachdem wie ich dazukomme werde ich die nächsten Tage noch die fehlende Set Funktion einbauen.

Achja eines noch...da ich ser2net und somit die tcp verbindung im modul benutze konnte ich die direkte usb verbindung nicht testen, sollte aber eigentlich eh funktionieren. Nur falls es doch Probleme gibt als quasi Entschuldigung :-).

Freu mich auf eure Rückmeldungen

lg

stephan

PS: Frohe Weihnachten :-)
PS Nr2: Hatte noch die neue CFG Datei vergessen anzuhängen, ist nun dran. Da hat sich insofern etwas geändert als das man jetzt bei Poll und Set nur mehr den Paramter angibt,sprich ohne prefix und suffix. Beim Set hab ich die Reihenfolge der einzelnen Parts etwas geändert sodass es nun einheitlich mit POLL ist.