Modul zur Anbindung Viessmann Heizung (Vitotronic 200 KW1)

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

Vorheriges Thema - Nächstes Thema

fischle

Hallo,
heute hatte ich wieder einen Absturz. Komischerweise kann ich keinen einzigen "Ready"-Eintrag in meinem Log finden - auch wenn das ganze funktioniert. Ist das normal oder habe ich irgend einen Fehler gemacht?

Hier noch mal der beginn der Ready-Funktion

sub
VCONTROL_Ready($)
{
  my ($hash) = @_;
  my $dev = $hash->{DeviceName};
  my $name = $hash->{NAME};

  my $po;

  Log3 $name, 5, "VCONTROL: Ready";

  ###USB


Log beim Crash:


2014.05.23 02:16:58 5: VCONTROL_READ
2014.05.23 02:16:58 5: VCONTROL: VCONTROL_Read '05'
2014.05.23 02:17:00 5: VCONTROL_READ
2014.05.23 02:17:00 5: VCONTROL: VCONTROL_Read '05'
2014.05.23 02:17:02 5: VCONTROL_READ
2014.05.23 02:17:02 5: VCONTROL: VCONTROL_Read '05'
2014.05.23 02:17:05 5: VCONTROL_READ
2014.05.23 02:17:05 5: VCONTROL: VCONTROL_Read '05'
2014.05.23 02:17:07 5: VCONTROL_READ
2014.05.23 02:17:07 5: VCONTROL: VCONTROL_Read '05'
2014.05.23 02:17:07 5: VCONTROL: Setze sendstr
2014.05.23 02:17:07 5: VCONTROL: send '01F7080002'
2014.05.23 02:17:07 5: SW: 01f7080002
2014.05.23 02:17:07 5: VCONTROL_READ
2014.05.23 02:17:07 5: VCONTROL: VCONTROL_Read 'b0'
2014.05.23 02:17:07 5: VCONTROL: VCONTROL_Read receive_len < 4, b0
2014.05.23 02:17:07 5: VCONTROL_READ
2014.05.23 02:17:07 5: VCONTROL: VCONTROL_Read '00'
2014.05.23 02:17:07 5: VCONTROL: receive 'Temp-Aussen : 17.6'
2014.05.23 02:17:07 5: Triggering Heizung (1 changes)
2014.05.23 02:17:07 5: Notify loop for Heizung Temp-Aussen: 17.6
2014.05.23 02:17:07 5: Heizungsuebersicht: not on any display, ignoring notify
2014.05.23 02:17:07 4: eventTypes: VCONTROL Heizung Temp-Aussen: 17.6 -> Temp-Aussen: .*
2014.05.23 02:17:19 5: HMLAN_Send:  HMLAN1 I:K
2014.05.23 02:17:19 5: HMLAN/RAW: /HHM-LAN-IF,03C1,KEQ1022891,25739A,25739A,6E555D41,0002

2014.05.23 02:17:19 5: HMLAN_Parse: HMLAN1 V:03C1 sNo:KEQ1022891 d:25739A O:25739A t:6E555D41 IDcnt:0002
2014.05.23 02:17:42 5: HMLAN/RAW: /E232134,0000,6E55B974,FF,FFBC,5F86102321340000000A88D30F0058

2014.05.23 02:17:42 5: HMLAN_Parse: HMLAN1 R:E232134   stat:0000 t:6E55B974 d:FF r:FFBC     m:5F 8610 232134 000000 0A88D30F0058
RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne

Adam

Hi fischle,

tja komisch. Die Logs sollten eigentlich bei verbose 5 kommen. Wie die anderen in Deinem Log auch!

Im Wiki habe ich gefunden:
ZitatAuf Windows-Systemen funktioniert dies anders. Hier können USB/Seriell-Geräte nicht per select überwacht werden. In FHEM unter Windows werden daher diese Schnittstellen kontinuierlich abgefragt ob Daten bereitstehen. Dafür müssen Module zusätzlich zur Lesefunktion eine Abfragefunktion (X_Ready) implementieren, die prüft ob Daten zum Lesen anstehen. Auch auf Linux/Unix-Plattformen hat diese Funktion eine Aufgabe. Falls nämlich eine Schnittstelle ausfällt beziehungsweise ein CUL oder USB-zu-Seriell Adapter ausgesteckt wird, dann wird über diese Funktion regelmäßig geprüft ob die Schnittstelle wieder verfügbar wird.

Also eigentlich die richtige Stelle, um das zu tun was wir machen wollen.
Ich weiß nicht ab welcher FHEM Version das gemacht wird, ob das immer schon so war?

Vielleicht hat noch jemand anderes ne Idee?

Adam

fischle

Hallo,
hier habe ich schon mal einen Hinweis gefunden, der in die richtige Richtung gehen könnte - leider ohne Antwort:

http://forum.fhem.de/index.php?topic=19325.0

RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne

Adam

@fischle:
Ja sowas habe ich befürchtet. Wenn das ein Fehler in FHEM ist,
weiß ich nicht wie ich das abfangen soll.
Vielleicht hilft ja der neue Modus (attribut closedev), das Ganze zu stabilisieren?

@alle:

Ich habe im ersten Post eine neue Version angehängt 2.7.

Folgende Dinge sind geändert:

- fix für 05 Bytes
- Temps nun bis 199°C erlaubt
- neues Attribut closedev, dass bei gesetztem Wert 1, die Verbindung nach jedem Pollen kurz schliesst.

Gruß
Adam

Bastelbernd

Hallo Adam,
leider gibt es bei dem 05 fix Version 2.7 immer noch Ausreißer  :(
siehe 0-1 und 10-11.


Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Adam

Ich brauche ein Log, um das zu analysieren!
Adam

fischle

Hi,
zur Info,
ich habe hier mal noch eine Anfrage zu der Ready-Funktion eingestellt:

http://forum.fhem.de/index.php/topic,23961.0.html


Parallell habe ich mal deinen Workaround mit dem Attribut umgesetzt, mal schaun was passiert. Wäre aber immer noch interessant zu wissen, warum die Funktion nicht aufgerufen wird.
RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne

Adam


fischle

Hallo Adam,
ich habe mir nun mal die Initialisierung deines Moduls angeschaut.

So wie ich das sehe, löscht du die Schnittstelle gezielt von der ReadFnList.

VCONTROL_Define($$)
     $hash->{USBDev} = $po;
     if( $^O =~ /Win/ ) {
        $readyfnlist{"$name.$dev"} = $hash;
     } else {
        $hash->{FD} = $po->FILENO;
        delete($readyfnlist{"$name.$dev"});
        $selectlist{"$name.$dev"} = $hash;
        Log3($name, 3, "VCONTROL opened VCONTROL device $dev");

     }
     


Ist das Absicht? Erklärt zumindest, warum die Funktion nicht aufgerufen wird. Leider konnte ich noch keinen guten Guide für dieses Thema finden, hast du vielleicht etwas?
RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne

Adam

@fischle:
Ich habe mir das DevIo_OpenDev() in DevIo.pm angeschaut. Das konnte ich nicht aufrufen, da wir andere Parity bits und baudrate benötigen!
Habe es mir also da raus kopiert und geändert was das Modul benötigt!

@bernd:
noch keine Logs mit 0505?

Bastelbernd

Hallo Adam,
hier ist z.B. ein log


2014.05.25 19:21:29 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:30 5: VCONTROL_READ
2014.05.25 19:21:30 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:30 5: VCONTROL: Setze sendstr
2014.05.25 19:21:30 5: VCONTROL: send '01F7080002'
2014.05.25 19:21:30 5: SW: 01f7080002
2014.05.25 19:21:30 5: VCONTROL_READ
2014.05.25 19:21:30 5: VCONTROL: VCONTROL_Read 'e6'
2014.05.25 19:21:30 5: VCONTROL: VCONTROL_Read receive_len < 4, e6
2014.05.25 19:21:30 5: VCONTROL_READ
2014.05.25 19:21:30 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:21:30 5: VCONTROL: receive 'Temp-Aussen : 23'
2014.05.25 19:21:33 5: VCONTROL_READ
2014.05.25 19:21:33 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:33 5: VCONTROL: Setze sendstr
2014.05.25 19:21:33 5: VCONTROL: send '01F7080402'
2014.05.25 19:21:33 5: SW: 01f7080402
2014.05.25 19:21:33 5: VCONTROL_READ
2014.05.25 19:21:33 5: VCONTROL: VCONTROL_Read '16'
2014.05.25 19:21:33 5: VCONTROL: VCONTROL_Read receive_len < 4, 16
2014.05.25 19:21:33 5: VCONTROL_READ
2014.05.25 19:21:33 5: VCONTROL: VCONTROL_Read '01'
2014.05.25 19:21:33 5: VCONTROL: receive 'Temp-WarmWasser-Ist : 27.8'
2014.05.25 19:21:36 5: VCONTROL_READ
2014.05.25 19:21:36 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:36 5: VCONTROL: Setze sendstr
2014.05.25 19:21:36 5: VCONTROL: send '01F7089602'
2014.05.25 19:21:36 5: SW: 01f7089602
2014.05.25 19:21:39 5: VCONTROL_READ
2014.05.25 19:21:39 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:39 5: VCONTROL: VCONTROL_Read receive_len < 4, 05
2014.05.25 19:21:42 5: VCONTROL_READ
2014.05.25 19:21:42 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:42 5: VCONTROL: receive 'Temp-Wohnzimmer-Ist : 128.5'
2014.05.25 19:21:44 5: VCONTROL_READ
2014.05.25 19:21:44 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:44 5: VCONTROL: Setze sendstr
2014.05.25 19:21:44 5: VCONTROL: send '01F7080202'
2014.05.25 19:21:44 5: SW: 01f7080202
2014.05.25 19:21:44 5: VCONTROL_READ
2014.05.25 19:21:44 5: VCONTROL: VCONTROL_Read 'f0'
2014.05.25 19:21:44 5: VCONTROL: VCONTROL_Read receive_len < 4, f0
2014.05.25 19:21:44 5: VCONTROL_READ
2014.05.25 19:21:44 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:21:44 5: VCONTROL: receive 'Temp-Kessel-Ist : 24'
2014.05.25 19:21:47 5: VCONTROL_READ
2014.05.25 19:21:47 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:47 5: VCONTROL: Setze sendstr
2014.05.25 19:21:47 5: VCONTROL: send '01F7555A02'
2014.05.25 19:21:47 5: SW: 01f7555a02
2014.05.25 19:21:47 5: VCONTROL_READ
2014.05.25 19:21:47 5: VCONTROL: VCONTROL_Read '32'
2014.05.25 19:21:47 5: VCONTROL: VCONTROL_Read receive_len < 4, 32
2014.05.25 19:21:47 5: VCONTROL_READ
2014.05.25 19:21:47 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:21:47 5: VCONTROL: receive 'Temp-Kessel-Soll : 5'
2014.05.25 19:21:50 5: VCONTROL_READ
2014.05.25 19:21:50 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:50 5: VCONTROL: Setze sendstr
2014.05.25 19:21:50 5: VCONTROL: send '01F7080802'
2014.05.25 19:21:50 5: SW: 01f7080802
2014.05.25 19:21:50 5: VCONTROL_READ
2014.05.25 19:21:50 5: VCONTROL: VCONTROL_Read '09'
2014.05.25 19:21:50 5: VCONTROL: VCONTROL_Read receive_len < 4, 09
2014.05.25 19:21:50 5: VCONTROL_READ
2014.05.25 19:21:50 5: VCONTROL: VCONTROL_Read '01'
2014.05.25 19:21:50 5: VCONTROL: receive 'Temp-Abgas : 26.5'
2014.05.25 19:21:53 5: VCONTROL_READ
2014.05.25 19:21:53 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:53 5: VCONTROL: Setze sendstr
2014.05.25 19:21:53 5: VCONTROL: send '01F70C2402'
2014.05.25 19:21:53 5: SW: 01f70c2402
2014.05.25 19:21:56 5: VCONTROL_READ
2014.05.25 19:21:56 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:56 5: VCONTROL: VCONTROL_Read receive_len < 4, 05
2014.05.25 19:21:58 5: VCONTROL_READ
2014.05.25 19:21:58 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:21:58 5: VCONTROL: receive 'Volumenstrom : 1285'
2014.05.25 19:22:00 5: VCONTROL_READ
2014.05.25 19:22:00 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:00 5: VCONTROL: Setze sendstr
2014.05.25 19:22:00 5: VCONTROL: send '01F7088A02'
2014.05.25 19:22:00 5: SW: 01f7088a02
2014.05.25 19:22:00 5: VCONTROL_READ
2014.05.25 19:22:00 5: VCONTROL: VCONTROL_Read '52'
2014.05.25 19:22:00 5: VCONTROL: VCONTROL_Read receive_len < 4, 52
2014.05.25 19:22:00 5: VCONTROL_READ
2014.05.25 19:22:00 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:00 5: VCONTROL: receive 'BrennerStarts : 1362'
2014.05.25 19:22:00 5: VCONTROL: DEBUG nextday 25 <-> 25
2014.05.25 19:22:03 5: VCONTROL_READ
2014.05.25 19:22:03 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:03 5: VCONTROL: Setze sendstr
2014.05.25 19:22:03 5: VCONTROL: send '01F7A38F01'
2014.05.25 19:22:03 5: SW: 01f7a38f01
2014.05.25 19:22:03 5: VCONTROL_READ
2014.05.25 19:22:03 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:03 5: VCONTROL: receive 'BrennerLeistung : 0'
2014.05.25 19:22:06 5: VCONTROL_READ
2014.05.25 19:22:06 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:06 5: VCONTROL: Setze sendstr
2014.05.25 19:22:06 5: VCONTROL: send '01F7766002'
2014.05.25 19:22:06 5: SW: 01f7766002
2014.05.25 19:22:06 5: VCONTROL_READ
2014.05.25 19:22:06 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:06 5: VCONTROL: VCONTROL_Read receive_len < 4, 00
2014.05.25 19:22:06 5: VCONTROL_READ
2014.05.25 19:22:06 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:06 5: VCONTROL: receive 'PumpeDrehzahl : 0'
2014.05.25 19:22:09 5: VCONTROL_READ
2014.05.25 19:22:09 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:09 5: VCONTROL: Setze sendstr
2014.05.25 19:22:09 5: VCONTROL: send '01F7230101'
2014.05.25 19:22:09 5: SW: 01f7230101
2014.05.25 19:22:09 5: VCONTROL_READ
2014.05.25 19:22:09 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:09 5: VCONTROL: receive 'state : WW'
2014.05.25 19:22:12 5: VCONTROL_READ
2014.05.25 19:22:12 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:12 5: VCONTROL: Setze sendstr
2014.05.25 19:22:12 5: VCONTROL: send '01F7230301'
2014.05.25 19:22:12 5: SW: 01f7230301
2014.05.25 19:22:12 5: VCONTROL_READ
2014.05.25 19:22:12 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:12 5: VCONTROL: receive 'state_party : off'
2014.05.25 19:22:15 5: VCONTROL_READ
2014.05.25 19:22:15 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:15 5: VCONTROL: Setze sendstr
2014.05.25 19:22:15 5: VCONTROL: send '01F7230201'
2014.05.25 19:22:15 5: SW: 01f7230201
2014.05.25 19:22:16 5: VCONTROL_READ
2014.05.25 19:22:16 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:16 5: VCONTROL: receive 'state_spar : off'
2014.05.25 19:22:18 5: VCONTROL_READ
2014.05.25 19:22:18 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:18 5: VCONTROL: Setze sendstr
2014.05.25 19:22:18 5: VCONTROL: send '01F7088604'
2014.05.25 19:22:18 5: SW: 01f7088604
2014.05.25 19:22:19 5: VCONTROL_READ
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read '02'
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read receive_len < 8, 02
2014.05.25 19:22:19 5: VCONTROL_READ
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read '49'
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read receive_len < 8, 0249
2014.05.25 19:22:19 5: VCONTROL_READ
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read 'b2'
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read receive_len < 8, 0249b2
2014.05.25 19:22:19 5: VCONTROL_READ
2014.05.25 19:22:19 5: VCONTROL: VCONTROL_Read '00'
2014.05.25 19:22:19 5: VCONTROL: receive 'BrennerStunden : 3245.58277777778'
2014.05.25 19:22:19 5: VCONTROL: DEBUG nextday 25 <-> 25
2014.05.25 19:22:22 5: VCONTROL_READ
2014.05.25 19:22:22 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:22 5: VCONTROL: End of Poll
2014.05.25 19:22:24 5: VCONTROL_READ
2014.05.25 19:22:24 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:26 5: VCONTROL_READ
2014.05.25 19:22:26 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:28 5: VCONTROL_READ
2014.05.25 19:22:28 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:30 5: VCONTROL_READ
2014.05.25 19:22:30 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:33 5: VCONTROL_READ
2014.05.25 19:22:33 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:35 5: VCONTROL_READ
2014.05.25 19:22:35 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:37 5: VCONTROL_READ
2014.05.25 19:22:37 5: VCONTROL: VCONTROL_Read '05'
2014.05.25 19:22:39 5: VCONTROL_READ


reicht das so oder braucht du noch mehr ?

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Adam

#311
Hi Bernd,

kannst Du mal folgende Version probieren.

Adam

Bastelbernd

Hallo Adam,
mit dieser Version hat sich leider nichts verändert, weder verbessert noch verschlechtert.  :(

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Adam

#313
Komisch, kann ich Dich noch mal als Versuchs-Kaninchen missbrauchen?
Ich habe leider keine 2Byte Werte die dann als 0505 zurück kommen.

Ich habe zusätzliche Logs eingebaut, um dies weiter einzugrenzen.

Danke, Adam

Bastelbernd

Hallo Adam,
leider bekomme ich die Version nicht gestartet.

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT