FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Skusi am 10 Dezember 2022, 10:51:22

Titel: Der Traum vom sauberen Logfile.
Beitrag von: Skusi am 10 Dezember 2022, 10:51:22
Hallo zusammen,

auch wenn ich mich daran gewöhnt habe das beim Start meines Fhem Systems im Logfile Dinge stehen die ich nicht verstehe, Fhem aber glücklicher weise gut läuft, möchte ich die Zeit die mir der Winter gibt dazu nutzen den Sachen auf den Grund zu gehen.

Nun habe ich mir diesen Block mal vorgenommen:

PERL WARNING: Use of uninitialized value $tailBlock in pattern match (m//) at ./FHEM/98_DOIF.pm line 2053.
2022.12.10 10:24:13 1: PERL WARNING: Use of uninitialized value $tailBlock in string ne at ./FHEM/98_DOIF.pm line 2053.
2022.12.10 10:24:14 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($;$) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66, <$fh> line 4786.
2022.12.10 10:24:14 1: PERL WARNING: Prototype mismatch: sub main::decode_json ($;$$) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66, <$fh> line 4786.
2022.12.10 10:24:14 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($) vs ($;$) at ./FHEM/00_SIGNALduino.pm line 28.
2022.12.10 10:24:14 1: PERL WARNING: Prototype mismatch: sub main::decode_json ($) vs ($;$$) at ./FHEM/00_SIGNALduino.pm line 28.
2022.12.10 10:24:14 1: SIGNALduino: DoInit, /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AL00N6AD-if00-port0@57600
2022.12.10 10:24:15 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($;$) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66, <$fh> line 4978.
2022.12.10 10:24:15 1: PERL WARNING: Prototype mismatch: sub main::decode_json ($;$$) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66, <$fh> line 4978.
2022.12.10 10:24:15 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($) vs ($;$) at (eval 457) line 1.
2022.12.10 10:24:15 1: PERL WARNING: Prototype mismatch: sub main::decode_json ($) vs ($;$$) at (eval 457) line 1.


Leider haben meine Recherchen nicht wirklich einen Anhaltspunkt ergeben wo ich diesen Probleme finden und beheben kann. Ich brauche mal von euch eine kleine Starthilfe.

Da mein Setup mit den Jahren wirklich riesig angewachsen ist, stehe ich ein wenig hilflos davor. Mittlerweile bricht hier im Haushalt alles zusammen wenn Fhem mal zickt. Deshalb möchte ich es möglichst "sauber" haben

Es wäre toll wenn mal jemand drüber schauen könnte und mir einen Einstieg zur Behebung der Problem gibt.

Gruß Skusi
Titel: Antw:Der Traum vom sauberen Logfile.
Beitrag von: rudolfkoenig am 10 Dezember 2022, 12:00:49
Wenn mir die Ursche fuer ein WARNING unklar ist, dann setze ich "attr global stacktrace 1".
Das hilft zwar nicht immer, zeigt aber den Verursacher etwas genauer.
Titel: Antw:Der Traum vom sauberen Logfile.
Beitrag von: Skusi am 10 Dezember 2022, 13:08:14
Ok, hab ich mal eingeschaltet.

Spontan taucht da nun folgendes auf:
PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5010.
2022.12.10 13:03:55 1: stacktrace:
2022.12.10 13:03:55 1:     main::__ANON__                      called by fhem.pl (5010)
2022.12.10 13:03:55 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/36_Shelly.pm (1236)
2022.12.10 13:03:55 1:     main::Shelly_proc1G                 called by ./FHEM/36_Shelly.pm (1058)
2022.12.10 13:03:55 1:     main::Shelly_status                 called by ./FHEM/36_Shelly.pm (1045)
2022.12.10 13:03:55 1:     main::__ANON__                      called by FHEM/HttpUtils.pm (729)
2022.12.10 13:03:55 1:     main::__ANON__                      called by fhem.pl (781)


Hängt also irgendwie mit meinem ein zigsten Shelly Dimmer zusammen ???

Internals:
   DEF        192.168.12.130
   DURATION   0
   FUUID      5e1f6a03-f33f-98db-bf13-d5e2d634bca1a9f6
   INTERVAL   60
   NAME       Licht_Flur
   NR         583
   SHELLYID   shellydimmer-F3C712
   STATE      off
   TCPIP      192.168.12.130
   TYPE       Shelly
   eventCount 4
   READINGS:
     2020-01-15 20:37:40   cloud           disabled
     2022-12-10 11:41:18   energy          829.8
     2022-11-11 22:50:23   firmware        v1.12.1
     2022-12-10 11:13:23   network         <html>connected to <a href="http://192.168.12.130">192.168.12.130</a></html>
     2022-12-10 10:11:03   pct             30
     2022-12-10 11:41:18   power           0
     2022-12-10 11:41:18   state           off
Attributes:
   alexaName  Flur
   alexaRoom  Flur
   comment    energie Reset am 15.01.22 9:50
696.8 am Sonntag 04.12.22 10:16
   devStateIcon on:black_FS20.on off:black_FS20.off
   event-on-change-reading state,pct
   group      Beleuchtung
   model      shellydimmer
   room       1.0_Beleuchtung
   verbose    1
   webCmd     :


Hmm...
Titel: Antw:Der Traum vom sauberen Logfile.
Beitrag von: rudolfkoenig am 10 Dezember 2022, 14:22:01
Laut Code liefert dein Shellydimmer kein overpower, was auch immer das ist.
Eine Katastrophe ist das nicht, es gibt nur eine Meldung pro FHEM-Start wenn attr global stacktrace abgeschaltet ist.
Womoeglich hilft es, wenn Du auf MQTT umsteigst :)
Titel: Antw:Der Traum vom sauberen Logfile.
Beitrag von: Skusi am 10 Dezember 2022, 14:32:39
Ok, vielen Dank für den Tipp.

Nun geht es aber ja leider noch viel weiter.

Ich habe nun mal neu gestartet und nun ist der Log natürlich um die Stacktrace Meldungen reicher. Aber ich kann ums verrecken keine hilfreichen Informationen daraus lesen.

Ich will nun auch nicht meine ganzen Fehler hier posten und Euch die Arbeit machen lassen. Aber wie kann ich denn lernen zu verstehe was da steht.

Beispiel:

PERL WARNING: Use of uninitialized value $pin in hash element at /usr/local/share/perl/5.28.1/Device/Firmata/Platform.pm line 1210.
2022.12.10 13:10:37 1: stacktrace:
2022.12.10 13:10:37 1:     main::__ANON__                      called by /usr/local/share/perl/5.28.1/Device/Firmata/Platform.pm (1210)
2022.12.10 13:10:37 1:     Device::Firmata::Platform::is_configured_mode called by /usr/local/share/perl/5.28.1/Device/Firmata/Platform.pm (586)
2022.12.10 13:10:37 1:     Device::Firmata::Platform::digital_write called by ./FHEM/20_FRM_OUT.pm (165)
2022.12.10 13:10:37 1:     (eval)                              called by ./FHEM/20_FRM_OUT.pm (164)
2022.12.10 13:10:37 1:     main::FRM_OUT_Set                   called by fhem.pl (3971)
2022.12.10 13:10:37 1:     main::CallFn                        called by fhem.pl (1964)
2022.12.10 13:10:37 1:     main::DoSet                         called by fhem.pl (1996)
2022.12.10 13:10:37 1:     main::CommandSet                    called by fhem.pl (1276)
2022.12.10 13:10:37 1:     main::AnalyzeCommand                called by fhem.pl (1127)
2022.12.10 13:10:37 1:     main::AnalyzeCommandChain           called by fhem.pl (4016)
2022.12.10 13:10:37 1:     main::fhem                          called by ./FHEM/93_PWMR.pm (956)
2022.12.10 13:10:37 1:     main::PWMR_SetRoom                  called by ./FHEM/94_PWM.pm (603)
2022.12.10 13:10:37 1:     main::PWM_Calculate                 called by fhem.pl (3501)
2022.12.10 13:10:37 1:     main::HandleTimeout                 called by fhem.pl (705)


oder auch:

PERL WARNING: Use of uninitialized value $tailBlock in pattern match (m//) at ./FHEM/98_DOIF.pm line 2053.
2022.12.10 13:09:54 1: stacktrace:
2022.12.10 13:09:54 1:     main::__ANON__                      called by ./FHEM/98_DOIF.pm (2053)
2022.12.10 13:09:54 1:     main::ParseCommandsDoIf             called by ./FHEM/98_DOIF.pm (3652)
2022.12.10 13:09:54 1:     main::CmdDoIf                       called by ./FHEM/98_DOIF.pm (3733)
2022.12.10 13:09:54 1:     main::DOIF_Define                   called by fhem.pl (3976)
2022.12.10 13:09:54 1:     main::CallFn                        called by fhem.pl (2155)
2022.12.10 13:09:54 1:     main::CommandDefine                 called by fhem.pl (1276)
2022.12.10 13:09:54 1:     main::AnalyzeCommand                called by fhem.pl (1127)
2022.12.10 13:09:54 1:     main::AnalyzeCommandChain           called by fhem.pl (1415)
2022.12.10 13:09:54 1:     main::CommandInclude                called by fhem.pl (628)


Ok, ich denke diese Meldungen sind nicht unbedingt schwerwiegend, aber ich habs schon gerne "sauber" und wenn ich da Fhem helfen kann, dann will ich das wohl tun.
Titel: Antw:Der Traum vom sauberen Logfile.
Beitrag von: rudolfkoenig am 10 Dezember 2022, 15:24:21
ZitatOk, ich denke diese Meldungen sind nicht unbedingt schwerwiegend, aber ich habs schon gerne "sauber" und wenn ich da Fhem helfen kann, dann will ich das wohl tun.
Das ist sehr loeblich, ist leider Arbeit, und man muss dranbleiben.

Shelly: entweder die Zeile selbst patchen:
      readingsBulkUpdateIfChanged($hash,"overpower".$subs,$overpower) if(defined($oeverpower));
und das Modul vom FHEM-Update ausschliessen, oder im Forumsbereich "Sonstige Systeme" ein Thema oeffnen und den Maintainer "nerven".
Oder auf MQTT2 umsteigen.

Firmata aehnlich: entweder dem Maintainer ueber Forums-Thema Bescheid geben, oder selbst fixen.
Hier ist laut https://github.com/ntruchsess/perl-firmata/blob/master/lib/Device/Firmata/Platform.pm#L1210 (usw.) $hash->{PIN} nicht definiert, was in FRM_Init_Pin_Client() passieren sollte. Stecke leider nicht so tief in der Materie drin, dass ich den Grund nennen kann.
Wenn man selbst Hardware hat, dann kann man durch eingefuegte Debug-Zeilen die Ursache nach eine Weile rausfinden.


Beim DOIF wuerde ich nicht anfangen selbst zu suchen: der Maintainer ist reaktionsschneller, als bei den anderen Modulen :) , d.h. direkt ein Thema im Forumsbereich Automatisierung/DOIF oeffnen.

Und so weiter mit jeder Meldung...
Titel: Antw:Der Traum vom sauberen Logfile.
Beitrag von: Skusi am 10 Dezember 2022, 20:22:09
Ok, das heißt das ich selber eigentlich keinen Fehler gemacht habe, sondern das es ein Fall für den Maintainer ist.
Gut dann werde ich mal Kontakt aufnehmen.

Im Falle shelly hab ich eben auf MQTT umgestellt. Das ging recht schnell und mir schien das der einfachere Weg zu sein. Ich hatte verdrängt das die Shelly Firmware ja auch eine MQTT Funktionalität bietet.

So konnte ich das Shelly Modul löschen.

Eine Meldung weniger !

Vielen Dank für die Starthilfe, mal sehen wie weit ich komme...