Anbindung Viessmann Heizung mit VCONTROL300

Begonnen von srxp, 23 Februar 2017, 13:15:51

Vorheriges Thema - Nächstes Thema

gero112233

Servus,

ich verwende die hier veröffentlichte Version 89_VCONTROL300+configDB_support.pm mit 84645 Bytes.

Danke für den Hinweis zu IP. Ist wirklich einfach.

zu den Log Verbose 5:
1. ich ändere das Define des zweiten Devices. Das Konfig File hat nur zwei Zeilen:
/dev/ttyUSB3 /opt/fhem/FHEM/V050HK3W_300.cfg 180 KW
Das Logfile dazu:
2018.01.06 13:25:13 2: VCONTROL300: Using USB device
2018.01.06 13:25:13 5: VCONTROL300: DEBUG VCONTROL300_CmdConfig() entry
2018.01.06 13:25:13 3: VCONTROL300: Opening file '/opt/fhem/FHEM/V050HK3W_300.cfg'
2018.01.06 13:25:13 5: VCONTROL300: CmdConfig-Zeile #Geraeteeinstellungen
2018.01.06 13:25:13 5: VCONTROL300: CmdConfig-Zeile POLL, 00F8, 2ByteH, 1, Geraetekennung       , -                                     # stimmt Gero
2018.01.06 13:25:13 3: VCONTROL300: File '/opt/fhem/FHEM/V050HK3W_300.cfg' refreshed
2018.01.06 13:25:13 3: VCONTROL300: Using protocol kw
2018.01.06 13:25:13 5: VCONTROL300: Set InternalTimer to 1515241514.20619
2018.01.06 13:25:13 5: VCONTROL300: DEBUG VCONTROL300_Set() entry
2018.01.06 13:25:14 5: VCONTROL300: DEBUG VCONTROL300_Poll() entry
2018.01.06 13:25:14 4: VCONTROL300: fetched attr 'vitotronicType=200_KWx'
2018.01.06 13:25:14 5: VCONTROL300: Polling enabled!
2018.01.06 13:25:14 5: VCONTROL300: DEBUG VCONTROL300_Poll() Set InternalTimer to 1515241694.20908
2018.01.06 13:25:14 3: VCONTROL300: USB connection opened
2018.01.06 13:25:14 3: Opening Viessmann_Steuerung device /dev/ttyUSB3
2018.01.06 13:25:14 3: Setting Viessmann_Steuerung serial parameters to 4800,8,E,2
2018.01.06 13:25:14 3: Viessmann_Steuerung device opened
2018.01.06 13:25:14 5: VCONTROL300: DEBUG VCONTROL300_DoUpdate() entry
2018.01.06 13:25:14 4: VCONTROL300: Start of update...
2018.01.06 13:25:14 4: VCONTROL300: Start of polling values...
2018.01.06 13:25:14 4: VCONTROL300: Waiting for sync byte...
2018.01.06 13:25:14 5: SW: 04
2018.01.06 13:25:14 5: VCONTROL300: DEBUG VCONTROL300_Set() entry
2018.01.06 13:25:15 4: VCONTROL300: Received sync byte!
2018.01.06 13:25:15 4: VCONTROL300: Init status: 'ok'!
2018.01.06 13:25:15 5: VCONTROL300: DEBUG VCONTROL300_GetReturnLength() entry
2018.01.06 13:25:15 5: VCONTROL300: Set sendstr 01F700F802
2018.01.06 13:25:15 5: VCONTROL300: Send 01F700F802
2018.01.06 13:25:15 5: SW: 01f700f802
2018.01.06 13:25:15 5: VCONTROL300: Read '20'
2018.01.06 13:25:15 5: VCONTROL300: Received 1 of 2 bytes
2018.01.06 13:25:15 5: VCONTROL300: DEBUGGING Received data are data: 20
2018.01.06 13:25:15 5: VCONTROL300: Read 'AB'
2018.01.06 13:25:15 5: VCONTROL300: Data '20AB'
2018.01.06 13:25:15 5: VCONTROL300: DEBUG VCONTROL300_Parse() entry
2018.01.06 13:25:15 5: VCONTROL300: DEBUGGING VCONTROL300_Parse() data=20AB , length=4
2018.01.06 13:25:15 5: VCONTROL300: Parsed 'Geraetekennung : 20AB'
2018.01.06 13:25:15 5: VCONTROL300: Update reading 'Geraetekennung : 20AB'
2018.01.06 13:25:15 5: VCONTROL300: DEBUG setname: Geraetekennung <eq> last_cmd: Geraetekennung
2018.01.06 13:25:15 4: VCONTROL300: End of polling values! Duration: 0.98
2018.01.06 13:25:15 5: VCONTROL300: DEBUG VCONTROL300_Set() entry
2018.01.06 13:25:15 5: VCONTROL300: DEBUG VCONTROL300_UpdateDone() delete(HASH(0x3382828))
2018.01.06 13:25:15 5: VCONTROL300: DEBUG VCONTROL300_Set() entry
2018.01.06 13:25:15 4: VCONTROL300: Update done!
2018.01.06 13:25:15 3: VCONTROL300: USB device closed
2018.01.06 13:25:15 5: VCONTROL300: VCONTROL300_UpdateDone() Undef set_cmd_list_values!


2. Ich lasse zum ersten device mit get readConfigFile neu einlesen. Das File hat 129 Zeilen.
/dev/ttyUSB2 /opt/fhem/FHEM/VScotHO1_300.cfg
Das Logfile dazu:
2018.01.06 13:33:34 5: VCONTROL300: DEBUG VCONTROL300_Get() entry
2018.01.06 13:33:34 5: VCONTROL300: DEBUG VCONTROL300_Poll() entry
2018.01.06 13:33:34 4: VCONTROL300: fetched attr 'vitotronicType=200_KWx'
2018.01.06 13:33:34 5: VCONTROL300: Polling enabled!
2018.01.06 13:33:34 5: VCONTROL300: DEBUG VCONTROL300_Poll() Set InternalTimer to 1515242194.45394
2018.01.06 13:33:34 5: VCONTROL300: DEBUG VCONTROL300_CmdConfig() entry
2018.01.06 13:33:34 3: VCONTROL300: Opening file '/opt/fhem/FHEM/V050HK3W_300.cfg'
2018.01.06 13:33:34 5: VCONTROL300: CmdConfig-Zeile #Geraeteeinstellungen
2018.01.06 13:33:34 5: VCONTROL300: CmdConfig-Zeile POLL, 00F8, 2ByteH, 1, Geraetekennung       , -                                     # stimmt Gero
2018.01.06 13:33:34 3: VCONTROL300: File '/opt/fhem/FHEM/V050HK3W_300.cfg' refreshed
2018.01.06 13:33:34 3: VCONTROL300: USB connection opened
2018.01.06 13:33:34 3: Opening Viessmann_Kessel device /dev/ttyUSB2
2018.01.06 13:33:34 3: Setting Viessmann_Kessel serial parameters to 4800,8,E,2
2018.01.06 13:33:34 3: Viessmann_Kessel device opened
2018.01.06 13:33:34 5: VCONTROL300: DEBUG VCONTROL300_DoUpdate() entry
2018.01.06 13:33:34 4: VCONTROL300: Start of update...
2018.01.06 13:33:34 4: VCONTROL300: Start of polling values...
2018.01.06 13:33:34 4: VCONTROL300: Waiting for sync byte...
2018.01.06 13:33:34 5: SW: 04
2018.01.06 13:33:34 5: VCONTROL300: DEBUG VCONTROL300_Set() entry


Im zweiten Log ist ersichtlich, dass
  • das falsche Config-File gelesen wird
  • das richtige USB-Device genommen wird
  • das falsche Protokoll genommen wird: KW statt 300, oder?

Ich verstehe recht wenig, ab ein Fehler ist fast sicher, dass die Variable command_config_file nur in VCONTROL300_Define gesetzt wird (nicht bei Poll). Damit ist klar, dass nur der letzte Filename zieht.


Ich hoffe, ich konnte den richtigen Input liefern!

Vielen Dank für die Unterstützung!

Beste Grüße,
Gero

crispyduck

#196
Hallo,

protokoll sollte gepasst haben.  ;)

Habe mal was geändert. Der parameter für das config file <command_config> wird jetzt im device hash $hash->{CFG_FILE} gespeichert. Wird somit auch in FHEMWEB beim device mit angezeigt.
Die abfrage ob tcp device habe ich auch gleich mit geändert, sollte jetzt also auch mit by-path funktionieren.

Anbei die von mir geänderte Version. Hab das jetzt nur bei mir mit zwei defines getestet welche das selbe usb device nutzen getestet; dürfte aber funktionieren.

Teste das bitte mal, ob es damit bei dir funktioniert. Bin selbst kein Programmierer und hab meine perl Kenntnisse auch erst seit FHEM, aber sollte so eigentlich funktionieren.

EDIT: leider doch nicht so einfach wie ich gedacht habe. Ist wohl etwas mehr Aufwand das anzupassen.

Lg,
crispyduck


Absolute Beginner

@Patrik.S
Danke für die Hinweise. Bei mir gibt die Adresse 55DE grundsätzlich '0' aus. 55D3 dagegen zeigt bei Brennerbetrieb immer '26' - das lässt sich sicher als 'an' deuten, denn sonst steht hier '0'. Die Brennerleistung wird bei A38F angezeigt. Einen Fehler hatte ich noch in meiner .cfg-Datei entdeckt: die Adressen 2302 und 2303 waren vertauscht für die Betriebsarten 'spar' und 'party'. Deshalb im Anhang meine aktualisierte Datei.
Raspberry Pi 3 - CUL868 - Jessie - FHEM5.8 - MQTT - Node-RED
HM-TC-IT-WM-W-EU, HM-LC-BI1PBU-FM, HM-Sec-SCo, HM-WDS30-0T2-SM, SOMFY, Echo, ESP, SonOff

gero112233

Hallo crispyduck,

ich habe eine ganz dumme Frage:
wenn ich 89_VCONTROL300.pm auf 89_VCONTROL300a.pm dupliziere und das zweite Device mit VCONTROL300a definiere?

Kann das gehen?

Beste Grüße,
Gero

crispyduck

Hallo,

@gero112233:

Damit mit dem Modul zwei devices angelegt werden können, müsste wohl doch einiges mehr angepasst werden als ich geglaubt habe.

Einfacher workaround ist einfach ein zweites Modul z.B. VCONTROL300_2 zu verwenden.

Habe das bei mir mal ausprobiert, dabei ist mir dann aufgefallen das in den Modulen 4 subs waren die nicht richtig benannt waren (ohne VCONTROL300_).

Habe jetzt eine V7 gemacht, in welcher ich die subs umbenannt habe und ausserdem die änderung der Abfrage ob tcp device auch geändert habe so das jetzt auch device by-path gehen sollte.

Habe die Idee mit einem zweiten Modul (VCONTROL300_2) bei mir mal ausprobiert. Dürfte alles funktionieren. Anbei auch das VCONTROL300_2 welches einfach die V7 ist mit einmal find and replace VCONTROL300 to VCONTROL300_2.

Lg,
crispyduck

gero112233

 ;D Hatten die gleiche Idee!  :)

Vielen Dank, ich werde es ausprobieren!

GlG, Gero

crispyduck

Ja, da hatten wir jetzt die selbe Idee.  ;)

Ja, hat jetzt bei mir funktioniert. Gab erst noch ein paar perl Warnings wegen der subs die gleich hießen, da sie nicht den Modulnamen beinhalteten, aber mit der Version die ich hochgeladen habe ging es bei mir ohne Probleme.

Lg
crispyduck

gero112233

Hi crispyduck,

das funktioniert super!

Ich habe jetzt

  • auf USB2 die Steuerung VScotHO1 mit dem Modul VCONTROL300
  • auf USB3 die Steuerung V050HK3W mit dem Modul VCONTROL300_2

die Werte schauen vernünftig und sinnvoll aus.

Ein Punkt, der mich sehr wundert:
obwohl ich für die V050HK3W 3 Heizkreise abfrage und somit sehr viele Werte habe, scheint die Abfrage sehr schnell zu funktionieren. Laut den Updatezeiten dauert es 2-3 Sekunden, obwohl ich grob über 60 Werte habe. Ich dachte nicht, dass das mit dem KW Protokoll möglich ist.

Als ich vor einem Jahr die Abfragen mit vclient versucht hatte, hat es wesentlich länger gedauert.

In Summe bin ich begeistert, obwohl ich jetzt an Daten ersticke und noch keine Ahnung habe, wie ich diese so aufbereiten kann, dass man diese auch interpretieren kann.  :-\

Vielen, vielen Dank für deine Unterstützung!  :) :) :)

GlG,
Gero

crispyduck

Freut mich zu hören das es funktioniert.

Habe zwar keinen Vergleich zu vclient, aber bei mir haben die abfragen mit VCONTROL und ke auch nie länger als 3 Sekunden gedauert.

Ja, was man mit all den Daten tut muss man sich erst überlegen. Habe es bis jetzt immer noch nicht geschafft alles so darzustellen wie ich es gerne hätte. Aber ich habe die daten zumindest mal alle in der DB und konnte anhand dieser die Parameter der Vitotronic optimieren.

Lg
crispyduck

Andreasmfh

Hallo zusammen,
nachdem ich das Auslesen und die Bedienung meiner Heizung auf VCONTROL300 umgestellt habe bekomme ich folgende Fehlermeldungen:

2018.01.15 18:15:11 1: PERL WARNING: Use of uninitialized value $cumulation in string eq at ./FHEM/89_VCONTROL300.pm line 1477.
2018.01.15 18:25:03 1: VCONTROL300: attr 'vitotronicType' not set correctly, using internal default value '200_HOxx' which might not match to your heater!
2018.01.15 18:25:09 1: PERL WARNING: Use of uninitialized value $mybuf in unpack at ./FHEM/89_VCONTROL300.pm line 1276.
2018.01.15 18:25:14 1: Timeout for VCONTROL300_DoUpdate reached, terminated process 5320
2018.01.15 18:35:03 1: VCONTROL300: attr 'vitotronicType' not set correctly, using internal default value '200_HOxx' which might not match to your heater!
2018.01.15 18:35:12 1: PERL WARNING: Use of uninitialized value $cumulation in string eq at ./FHEM/89_VCONTROL300.pm line 1477.
2018.01.15 18:45:03 1: VCONTROL300: attr 'vitotronicType' not set correctly, using internal default value '200_HOxx' which might not match to your heater!
2018.01.15 18:45:13 1: Timeout for VCONTROL300_DoUpdate reached, terminated process 5382

Hab schon soweit gelesen das ich was an den "Attributes" eintragen/ändern muß?! Die Anpassung der .cfg war kein Problem, aber wo und wie ändere ich "Attributes"???

Gruß Andreas

crispyduck

Hallo,

Erster Fehler kommt vermutlich von einem Fehler in deinem config File. Da fehlt irgendwo oder öfter am Ende der Zeile ein Wert für KUMULATION.

Zweiter sollte doch selbsterklärend sein; einfach das Attribut vitotronicType entsprechend deines Heizugstypes setzen.
Siehe auch commandref oder devicespecific help.

Lg
Crispyduck

Andreasmfh

Hallo Crispyduck,

danke für die schnelle Antwort. Ja manchmal sieht man den Wald vor lauter Bäumen nicht, d.h. Attribut is klar. Aber bei den Werten für die Kumulation finde ich (noch) keine(n) Fehler.

Schönen Abend erstmal

crispyduck

Hänge doch mal dei e config an, oder teste es einfach mal mit nur einer Zeile in der config:

# POLL,SENDCMD   , PARSE, DIVISOR, READING-NAME        , KUMULATION
################################################################################################
#       Gerätekennung
POLL, 00F8, 2ByteH, 1, Gerätekennung , -


Lg
crispyduck

Andreasmfh

Hallo crispyduck,

ich hab den fehlenden Kumulatioseintrag gefunden, läuft soweit aber jetzt hab ich eine andere Fehlermeldung:

2018.01.16 15:34:11 1: PERL WARNING: Use of uninitialized value $mybuf in unpack at ./FHEM/89_VCONTROL300.pm line 1276.
2018.01.16 15:34:15 1: Timeout for VCONTROL300_DoUpdate reached, terminated process 9850
2018.01.16 15:44:13 1: Timeout for VCONTROL300_DoUpdate reached, terminated process 9879

Meine config hab ich angehangen.

Gruß Andreas

crispyduck

Hallo,

Scheint als würde bei einem Wert oder überhaupt keine Antwort von der Heizung kommen.
Bekommst du irgendwas zurück?
Setz doch mal verbose auf 5, dann sollte im Log mehr zu sehen sein.

Lg
crispyduck