Buderus KM200 Kommunikationsmodul

Begonnen von Sailor, 21 Juli 2014, 12:39:47

Vorheriges Thema - Nächstes Thema

Sailor

#1905
Zitat von: p-body am 27 November 2022, 10:26:48
ich bin heute nach einem fhem-Update auch über den oben beschriebenen Fehler im km200 gestolpert.
Dann wurde das Modul mit der angepassten Version ersetzt und fhem gestartet:
2022.11.27 09:14:23 0: Server started with 261 defined entities (fhem.pl:26635/2022-11-01 perl:5.028001 os:linux user:root pid:7423)
Can't use string ("1") as a HASH ref while "strict refs" in use at fhem.pl line 4835.


Mit der angepassten Version meinst du die Version aus https://forum.fhem.de/index.php/topic,25540.msg1247686.html#msg1247686 ?

Warum kann ich den Fehler nur nicht nachstellen???

Was passiert, wenn Ihr in der angepassten Version in Zeile 291 den Timer von 0 auf 15s hochsetzt?
InternalTimer(15, \&km200_FirstInit, $hash );

sowie Zeile 2583 durch
InternalTimer(gettimeofday()+0, \&km200_GetDynService, $hash, 1);
ersetzt?

Gruß
    Sailor
******************************
Man wird immer besser...

p-body

Hi Sailor,

Zitat von: Sailor am 27 November 2022, 12:32:55
Was passiert, wenn Ihr in der angepassten Version in Zeile 291 den Timer von 0 auf 15s hochsetzt?
InternalTimer(15, \&km200_FirstInit, $hash );

sowie Zeile 2583 durch
InternalTimer(gettimeofday()+0, \&km200_GetDynService, $hash, 1);
ersetzt?

ich hab es grade mal getestet, leider ohne Veränderung:
2022.11.27 19:05:48 0: Server started with 261 defined entities (fhem.pl:26635/2022-11-01 perl:5.028001 os:linux user:root pid:8580)
Can't use string ("1") as a HASH ref while "strict refs" in use at fhem.pl line 4835.


Gruß, p-body

p-body

Nachtrag: (ich hatte verbose noch auf 3)

mit verbose=4 sehen die letzten Zeilen des Logs so aus:
2022.11.27 19:21:52 4: 73_km200 : km200_FirstInit -  hash                                  : $VAR1 = 1;

Can't use string ("1") as a HASH ref while "strict refs" in use at fhem.pl line 4835.

Sailor

Moin

Zitat von: p-body am 27 November 2022, 19:25:29

2022.11.27 19:21:52 4: 73_km200 : km200_FirstInit -  hash                                  : $VAR1 = 1;
Can't use string ("1") as a HASH ref while "strict refs" in use at fhem.pl line 4835.


OK, dann wissen wir also, das eine "1" statt einem $hash übergeben wurde...

Dann müssen wir nur noch wissen, ob der $hash vorher bei Aufruf auch schon "1" war...
Bitte mal angehängte Version testen und auf verbose = 4 den kompletten log-Auszug mit Bezug auf km200 reinsetzen.

Danke
    Sailor
******************************
Man wird immer besser...

p-body

Moin Sailor,

nach einem Test der bereitgestellten Version liefert ein tail -f /opt/fhem/log/fhem-2022-11.log |grep km200

2022.11.28 21:42:02 1: PERL WARNING: main::km200_GetDynService() called too early to check prototype at ./FHEM/73_km200.pm line 2583, <$fh> line 685.
2022.11.28 21:42:02 4: heizung : km200 - Starting to define module
2022.11.28 21:42:02 4: heizung : km200 - InternalTimer has been removed.
2022.11.28 21:42:02 4: heizung : km200 - IPv4-address is valid                  : 192.xxx.xxx.xxx
2022.11.28 21:42:02 4: heizung : km200 - Provided GatewayPassword provided as bareword has the correct length at least.
2022.11.28 21:42:02 4: heizung : km200 - Provided PrivatePassword exists at least
2022.11.28 21:42:02 4: heizung : km200 - Define H                                   : HASH(0x3f535c0)
2022.11.28 21:42:02 4: heizung : km200 - Define D                                   : heizung km200 192.xxx.xxx.xxx yyyy-yyyy-yyyy-yyyy passwort
2022.11.28 21:42:02 4: heizung : km200 - Define A                                   : 5
2022.11.28 21:42:02 4: heizung : km200 - Define Name                                : heizung
2022.11.28 21:42:02 4: heizung : km200 - Define Adr                                 : 192.xxx.xxx.xxx
2022.11.28 21:42:31 4: 73_km200 : km200_FirstInit -  hash                                  : $VAR1 = 1;


langt Dir der Logauszug so - oder nach was sollte ich suchen?

Gruß,
p-body

Sailor

Hi p-body

Zitat von: p-body am 28 November 2022, 22:02:38
langt Dir der Logauszug so - oder nach was sollte ich suchen?

Der Anfang ist schon mal gut.

Ändere mal die Zeile281 in
Log3 $name, 4, $name. " : km200 - Define H                                   : " . Dumper($hash);
damit wir den Inhalt sehen können.

Dann das Ganze von oben nochmal.

Danke

Gruss
    Sailor
******************************
Man wird immer besser...

menzinger

Hallo,
nach dem letzten Update vom 19.11. startet bei mir die FHEM Oberfläche gar nicht mehr, bis ich die Backup-Version vom 73_km200.pm wiederherstelle.
Im Log steht nur:

2022.11.29 08:55:39 1: PERL WARNING: main::km200_GetDynService() called too early to check prototype at ./FHEM/73_km200.pm line 2582, <$fh> line 630.

p-body

@Sailor nach Änderung der Zeile ändert sich die Ausgabe folgendermaßen:

2022.11.29 16:23:48 1: PERL WARNING: main::km200_GetDynService() called too early to check prototype at ./FHEM/73_km200.pm line 2583, <$fh> line 685.
2022.11.29 16:23:48 4: heizung : km200 - Starting to define module
2022.11.29 16:23:48 4: heizung : km200 - InternalTimer has been removed.
2022.11.29 16:23:48 4: heizung : km200 - IPv4-address is valid                  : 192.xxx.xxx.xxx
2022.11.29 16:23:48 4: heizung : km200 - Provided GatewayPassword provided as bareword has the correct length at least.
2022.11.29 16:23:48 4: heizung : km200 - Provided PrivatePassword exists at least
2022.11.29 16:23:48 4: heizung : km200 - Define H                                   : $VAR1 = {
          'TYPE' => 'km200',
2022.11.29 16:23:48 4: heizung : km200 - Define D                                   : heizung km200 192.xxx.xxx.xxx yyyy-yyyy-yyyy-yyyy passwort
2022.11.29 16:23:48 4: heizung : km200 - Define A                                   : 5
2022.11.29 16:23:48 4: heizung : km200 - Define Name                                : heizung
2022.11.29 16:23:48 4: heizung : km200 - Define Adr                                 : 192.xxx.xxx.xxx
2022.11.29 16:24:13 4: 73_km200 : km200_FirstInit -  hash                                  : $VAR1 = 1;


Gruß,
p-body

Sailor

Moin

Zitat von: p-body am 29 November 2022, 16:31:55
@Sailor nach Änderung der Zeile ändert sich die Ausgabe folgendermaßen:
2022.11.29 16:23:48 1: PERL WARNING: main::km200_GetDynService() called too early to check prototype at ./FHEM/73_km200.pm line 2583, <$fh> line 685.
2022.11.29 16:23:48 4: heizung : km200 - Define H                                   : $VAR1 = {
          2022.11.29 16:23:48 4: heizung : km200 - Define H                                   : $VAR1 = {
          'TYPE' => 'km200',


Super, aber das ist stark gekürzt.

Mich interessiert ob da auch
'NAME' =>
drin steht.

Gruß
    Sailor
******************************
Man wird immer besser...

p-body

Hi,

Zitat von: Sailor am 29 November 2022, 17:48:47
Super, aber das ist stark gekürzt.

das war keine Absicht  :)  da hat der grep ganze Arbeit geleistet ;)

2022.11.29 16:23:48 4: heizung : km200 - Starting to define module
2022.11.29 16:23:48 4: heizung : km200 - InternalTimer has been removed.
2022.11.29 16:23:48 4: heizung : km200 - IPv4-address is valid                  : 192.xxx.xxx.xxx
2022.11.29 16:23:48 4: heizung : km200 - Provided GatewayPassword provided as bareword has the correct length at least.
2022.11.29 16:23:48 4: heizung : km200 - Provided PrivatePassword exists at least
2022.11.29 16:23:48 4: heizung : km200 - Define H                                   : $VAR1 = {
          'FUUID' => '12345678-1234-1234-1234-1234567890123456',
          'status' => {
                        'FlagInitRequest' => 0,
                        'FlagStatRequest' => 0,
                        'FlagGetRequest' => 0,
                        'FlagSetRequest' => 0,
                        'FlagDynRequest' => 0
                      },
          'POLLINGTIMEOUT' => 5,
          'INTERVALDYNVAL' => 300,
          'READTEXTLEN' => 0,
          'DEF' => 'heizung km200 192.xxx.xxx.xxx yyyy-yyyy-yyyy-yyyy passwort',
          'Secret' => {
                        'KM200RESPONDINGSERVICES' => [],
                        'CRYPTKEYPRIVATE' => 'r{/retuvnfj8kfvdjfjvdjfvfjdvkfvkfvdf',
                        'KM200DONOTPOLL' => [],
                        'KM200ALLSERVICES' => [
                                                '/',
                                                '/application',
                                                '/dhwCircuits',
                                                '/dhwCircuits',
                                                '/gateway',
                                                '/gservice-tariff',
                                                '/heatSources',
                                                '/heatingCircuits',
                                                '/notifications',
                                                '/recordings',
                                                '/solarCircuits',
                                                '/system'
                                              ],
                        'KM200ALLSERVICESBACKUP' => [
                                                      '/',
                                                      '/application',
                                                      '/dhwCircuits',
                                                      '/dhwCircuits',
                                                      '/gateway',
                                                      '/gservice-tariff',
                                                      '/heatSources',
                                                      '/heatingCircuits',
                                                      '/notifications',
                                                      '/recordings',
                                                      '/solarCircuits',
                                                      '/system'
                                                    ],
                        'KM200WRITEABLESERVICES' => [],
                        'CRYPTKEYINITIAL' => 'r{/xfsdfsdfsdsdfsdfgfetetgfbgtrtrgtt'
                      },
          'TYPE' => 'km200',
          'STATE' => 'define',
          'NAME' => 'heizung',
          'URL' => '192.xxx.xxx.xxx',
          'DELAYDYNVAL' => 60,
          'NR' => 153,
          'CL' => undef,
          'READBACKDELAY' => 100,
          'temp' => {
                      'ServiceCounterDyn' => 0,
                      'ServiceCounterInit' => 0,
                      'ServiceDbLogSplitHash' => undef
                    }
        };

2022.11.29 16:23:48 4: heizung : km200 - Define D                                   : heizung km200 192.xxx.xxx.xxx yyyy-yyyy-yyyy-yyyy passwort
2022.11.29 16:23:48 4: heizung : km200 - Define A                                   : 5
2022.11.29 16:23:48 4: heizung : km200 - Define Name                                : heizung
2022.11.29 16:23:48 4: heizung : km200 - Define Adr                                 : 192.xxx.xxx.xxx


Gruß,
p-body

Sailor

Hi p-body

Zitat von: p-body am 29 November 2022, 19:11:23
das war keine Absicht  :)  da hat der grep ganze Arbeit geleistet ;)

Macht nix, aber man kann sehen, dass die Ausgabe "Define H" noch ganz in Ordnung ist.

Letzter Versuch, und dann weiß ich echt nicht mehr weiter: Zeile 291
InternalTimer(15, \&km200_FirstInit, $hash );
ersetzen durch

InternalTimer(15, "km200_FirstInit", $hash, 1);


Wenn das jetzt auch nicht funktioniert, dann liegt das an evtl. an der fhem.pl.
Dann weiß ich auch nicht weiter...

Gruß
    Sailor
******************************
Man wird immer besser...

p-body

Hi Sailor,

nach der Änderung läuft es leider noch nicht durch:
2022.11.29 21:51:36 1: PERL WARNING: main::km200_GetDynService() called too early to check prototype at ./FHEM/73_km200.pm line 2583, <$fh> line 685.
2022.11.29 21:51:36 4: heizung : km200 - Starting to define module
2022.11.29 21:51:36 4: heizung : km200 - InternalTimer has been removed.
2022.11.29 21:51:36 4: heizung : km200 - IPv4-address is valid                  : 192.xxx.xxx.xxx
2022.11.29 21:51:36 4: heizung : km200 - Provided GatewayPassword provided as bareword has the correct length at least.
2022.11.29 21:51:36 4: heizung : km200 - Provided PrivatePassword exists at least
2022.11.29 21:51:36 4: heizung : km200 - Define H                                   : $VAR1 = {
          'INTERVALDYNVAL' => 300,
          'URL' => '192.xxx.xxx.xxx',
          'STATE' => 'define',
          'DEF' => '192.xxx.xxx.xxx yyyy-yyyy-yyyy-yyyy passwort',
          'status' => {
                        'FlagGetRequest' => 0,
                        'FlagDynRequest' => 0,
                        'FlagSetRequest' => 0,
                        'FlagStatRequest' => 0,
                        'FlagInitRequest' => 0
                      },
          'DELAYDYNVAL' => 60,
          'CL' => undef,
          'FUUID' => 'y-x-c-v-b',
          'NR' => 153,
          'temp' => {
                      'ServiceCounterInit' => 0,
                      'ServiceDbLogSplitHash' => undef,
                      'ServiceCounterDyn' => 0
                    },
          'READTEXTLEN' => 0,
          'POLLINGTIMEOUT' => 5,
          'READBACKDELAY' => 100,
          'TYPE' => 'km200',
          'NAME' => 'heizung',
          'Secret' => {
                        'CRYPTKEYINITIAL' => 'dsfsdfsdfsdfsdfsdsd',
                        'KM200ALLSERVICES' => [
                                                '/',
                                                '/application',
                                                '/dhwCircuits',
                                                '/dhwCircuits',
                                                '/gateway',
                                                '/gservice-tariff',
                                                '/heatSources',
                                                '/heatingCircuits',
                                                '/notifications',
                                                '/recordings',
                                                '/solarCircuits',
                                                '/system'
                                              ],
                        'KM200DONOTPOLL' => [],
                        'KM200WRITEABLESERVICES' => [],
                        'KM200ALLSERVICESBACKUP' => [
                                                      '/',
                                                      '/application',
                                                      '/dhwCircuits',
                                                      '/dhwCircuits',
                                                      '/gateway',
                                                      '/gservice-tariff',
                                                      '/heatSources',
                                                      '/heatingCircuits',
                                                      '/notifications',
                                                      '/recordings',
                                                      '/solarCircuits',
                                                      '/system'
                                                    ],
                        'CRYPTKEYPRIVATE' => 'fdfgdffdgfgdfgdfgdfgf',
                        'KM200RESPONDINGSERVICES' => []
                      }
        };

2022.11.29 21:51:36 4: heizung : km200 - Define D                                   : heizung km200 192.xxx.xxx.xxx yyyy-yyyy-yyyy-yyyy passwort
2022.11.29 21:51:36 4: heizung : km200 - Define A                                   : 5
2022.11.29 21:51:36 4: heizung : km200 - Define Name                                : heizung
2022.11.29 21:51:36 4: heizung : km200 - Define Adr                                 : 192.xxx.xxx.xxx
2022.11.29 21:51:36 4: 73_km200 : km200_FirstInit -  hash                                  : $VAR1 = 1;

Can't use string ("1") as a HASH ref while "strict refs" in use at fhem.pl line 4835.


Gruß,

p-body

Sailor

Moin p-body

Zitat von: p-body am 29 November 2022, 23:37:31
nach der Änderung läuft es leider noch nicht durch:

Ich weiss nicht mehr weiter.
Ich muss mich (nach Weihnachten) mal mit Rudi konsultieren.

Bis dahin pflege ich eine entschärfte Version ein, die zwar noch die Warnung bringt, aber glatt durchläuft.

Gruss
    Sailor
******************************
Man wird immer besser...

marboj

@sailor:

ist die entschärfte Version schon eingepflegt?
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

gotmoon

Kurze Zwischenmeldung.
Bei mir war das ähnlich passiert: Hatte "schon lange" kein Update mehr gemacht. In einer Update-Aktion hatte ich glücklicherweise erst ein Snapshot der VM gemacht (glücklicher Besitzer eines ESXI). Mein FHEM ist nach dem Update eingefroren und konnte mit dem Snapshot "mal eben" zurückgesetzt werden.  Ich vermutete mein veraltetes Ubuntu 18 darunter und habe es in einer separaten Session dann auf 20 hochgerüstet. Bei der anschließenden Update-Aktion ist mir die Buderus einfach rausgeflogen. Die Fehlermeldung hab ich mir nicht gemerkt und auch nicht mehr gefunden.
Jetzt beim neu Verbinden ist mir erst aufgefallen, dass was mit dem km200 Modul nicht in Ordung sein kann. Zum Glück habe ich den Backup Ordner gefunden und die alte Version wieder hergestellt.
Sollte ich zur Lösung des Problems irgendwie beitragen können:
Ich habe eine Gas Hybrid Heizung mit Solar Kollektoren und Pufferspeicher. Bitte kurz per PM anschreiben.