FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: HomeAuto_User am 03 Januar 2024, 19:47:34

Titel: Meta.pm - generiert Meldungen weil es mit Modulname nicht klarkommt
Beitrag von: HomeAuto_User am 03 Januar 2024, 19:47:34
Hallo,
wir haben das Modul 88_SIGNALduino_TOOL.pm (https://github.com/RFD-FHEM/SIGNALduino_TOOL) in der Betreuung.
Als wir das Meta Modul einbinden wollten, so erhalten wir immer die Meldungen.

2024.01.03 19:27:00.050 1: PERL WARNING: Use of uninitialized value in string ne at FHEM/Meta.pm line 1883.
2024.01.03 19:27:00.051 1: stacktrace:
2024.01.03 19:27:00.051 1:     main::__ANON__                      called by FHEM/Meta.pm (1883)
2024.01.03 19:27:00.051 1:     FHEM::Meta::__GetMetadata           called by FHEM/Meta.pm (1117)
2024.01.03 19:27:00.051 1:     FHEM::Meta::__PutMetadata           called by FHEM/Meta.pm (673)
2024.01.03 19:27:00.051 1:     FHEM::Meta::InitMod                 called by ./FHEM/88_SIGNALduino_TOOL.pm (97)
2024.01.03 19:27:00.052 1:     main::SIGNALduino_TOOL_Initialize   called by fhem.pl (2784)
2024.01.03 19:27:00.052 1:     (eval)                              called by fhem.pl (2767)
2024.01.03 19:27:00.052 1:     main::CommandReload                 called by fhem.pl (2069)
2024.01.03 19:27:00.052 1:     main::LoadModule                    called by fhem.pl (2134)
2024.01.03 19:27:00.052 1:     main::CommandDefine                 called by fhem.pl (1282)
2024.01.03 19:27:00.052 1:     main::AnalyzeCommand                called by fhem.pl (1133)
2024.01.03 19:27:00.053 1:     main::AnalyzeCommandChain           called by fhem.pl (1421)
2024.01.03 19:27:00.053 1:     main::CommandInclude                called by fhem.pl (630)
2024.01.03 19:27:00.053 1: PERL WARNING: Use of uninitialized value in string eq at FHEM/Meta.pm line 2123.
2024.01.03 19:27:00.053 1: stacktrace:
2024.01.03 19:27:00.054 1:     main::__ANON__                      called by FHEM/Meta.pm (2123)
2024.01.03 19:27:00.054 1:     FHEM::Meta::__GetMetadata           called by FHEM/Meta.pm (1117)
2024.01.03 19:27:00.054 1:     FHEM::Meta::__PutMetadata           called by FHEM/Meta.pm (673)
2024.01.03 19:27:00.054 1:     FHEM::Meta::InitMod                 called by ./FHEM/88_SIGNALduino_TOOL.pm (97)
2024.01.03 19:27:00.054 1:     main::SIGNALduino_TOOL_Initialize   called by fhem.pl (2784)
2024.01.03 19:27:00.054 1:     (eval)                              called by fhem.pl (2767)
2024.01.03 19:27:00.054 1:     main::CommandReload                 called by fhem.pl (2069)
2024.01.03 19:27:00.055 1:     main::LoadModule                    called by fhem.pl (2134)
2024.01.03 19:27:00.055 1:     main::CommandDefine                 called by fhem.pl (1282)
2024.01.03 19:27:00.055 1:     main::AnalyzeCommand                called by fhem.pl (1133)
2024.01.03 19:27:00.055 1:     main::AnalyzeCommandChain           called by fhem.pl (1421)
2024.01.03 19:27:00.055 1:     main::CommandInclude                called by fhem.pl (630)
2024.01.03 19:27:00.056 1: PERL WARNING: Use of uninitialized value in string eq at FHEM/Meta.pm line 2401.
2024.01.03 19:27:00.056 1: stacktrace:
2024.01.03 19:27:00.056 1:     main::__ANON__                      called by FHEM/Meta.pm (2401)
2024.01.03 19:27:00.056 1:     FHEM::Meta::__GetMetadata           called by FHEM/Meta.pm (1117)
2024.01.03 19:27:00.056 1:     FHEM::Meta::__PutMetadata           called by FHEM/Meta.pm (673)
2024.01.03 19:27:00.056 1:     FHEM::Meta::InitMod                 called by ./FHEM/88_SIGNALduino_TOOL.pm (97)
2024.01.03 19:27:00.057 1:     main::SIGNALduino_TOOL_Initialize   called by fhem.pl (2784)
2024.01.03 19:27:00.057 1:     (eval)                              called by fhem.pl (2767)
2024.01.03 19:27:00.057 1:     main::CommandReload                 called by fhem.pl (2069)
2024.01.03 19:27:00.057 1:     main::LoadModule                    called by fhem.pl (2134)
2024.01.03 19:27:00.057 1:     main::CommandDefine                 called by fhem.pl (1282)
2024.01.03 19:27:00.057 1:     main::AnalyzeCommand                called by fhem.pl (1133)
2024.01.03 19:27:00.058 1:     main::AnalyzeCommandChain           called by fhem.pl (1421)
2024.01.03 19:27:00.058 1:     main::CommandInclude                called by fhem.pl (630)
2024.01.03 19:27:00.058 1: PERL WARNING: Use of uninitialized value in string ne at FHEM/Meta.pm line 2404.
2024.01.03 19:27:00.058 1: stacktrace:
2024.01.03 19:27:00.058 1:     main::__ANON__                      called by FHEM/Meta.pm (2401)
2024.01.03 19:27:00.058 1:     FHEM::Meta::__GetMetadata           called by FHEM/Meta.pm (1117)
2024.01.03 19:27:00.059 1:     FHEM::Meta::__PutMetadata           called by FHEM/Meta.pm (673)
2024.01.03 19:27:00.059 1:     FHEM::Meta::InitMod                 called by ./FHEM/88_SIGNALduino_TOOL.pm (97)
2024.01.03 19:27:00.059 1:     main::SIGNALduino_TOOL_Initialize   called by fhem.pl (2784)
2024.01.03 19:27:00.059 1:     (eval)                              called by fhem.pl (2767)
2024.01.03 19:27:00.059 1:     main::CommandReload                 called by fhem.pl (2069)
2024.01.03 19:27:00.059 1:     main::LoadModule                    called by fhem.pl (2134)
2024.01.03 19:27:00.060 1:     main::CommandDefine                 called by fhem.pl (1282)
2024.01.03 19:27:00.060 1:     main::AnalyzeCommand                called by fhem.pl (1133)
2024.01.03 19:27:00.060 1:     main::AnalyzeCommandChain           called by fhem.pl (1421)
2024.01.03 19:27:00.060 1:     main::CommandInclude                called by fhem.pl (630)

Nachdem ich schonmal auf Fehlersuche ging, entfiehlen die Meldungen wenn mal das Modul komplett umbenennt inklusive seinen Subs.
Hier ist eine Nachbesserung notwending, das wir das Modul, welches schon seit 01/2021 existiert mit kompatibel ist.

Kurzum, das Modul ist nicht mit allen Modulnamen kompatibel.
Wir bitten @loredo dort das Ganze zu beleuchten und anzupassen.

Mfg und ein erfolgreiches Jahr 2024
Titel: Aw: Meta.pm - generiert Meldungen weil es mit Modulname nicht klarkommt
Beitrag von: CoolTux am 03 Januar 2024, 20:21:45
Loredo ist leider nicht mehr aktiv. Konntest Du einen Grund evaluieren wieso es am Modul und/oder Sub Namen liegen sollte?

Eventuell wäre es hilfreich das Modul auf packages um zu schreiben was auch eine Empfehlung für "gute" Modulentwicklung ist.
Titel: Aw: Meta.pm - generiert Meldungen weil es mit Modulname nicht klarkommt
Beitrag von: HomeAuto_User am 03 Januar 2024, 20:59:14
Hallo
Zitat von: CoolTux am 03 Januar 2024, 20:21:45Loredo ist leider nicht mehr aktiv. Konntest Du einen Grund evaluieren wieso es am Modul und/oder Sub Namen liegen sollte?
:P  :'( ...

Ich konnte es soweit schon eingrenzen, das innerhalb der Modules es nicht klar kommt, sobald das Modul welches es integriert inklusive seinen Subs die Namenskonstellation mit einem "_" enthält. Sobald ich diesen aus dem Namen kürze, geht die Integrierung.

Bsp:
- SIGNALduino_TOOL geht nicht
- SIGNALduinoTOOL geht

Es ist nur schwierig vorerst in einem fremden Modul durchzusehen.  8)
Titel: Aw: Meta.pm - generiert Meldungen weil es mit Modulname nicht klarkommt
Beitrag von: betateilchen am 03 Januar 2024, 21:29:38
Das beschriebene Verhalten kann ich bestätigen.

Genauer gesagt geht es darum, dass der Dateiname mehr als einen Unterstrich enthält.

Normalerweise trennt der Unterstrich im Dateinamen den tatsächlichen Namen von der Ordnungsnummer des Moduls (88). Ein zweiter Unterstrich ist in Meta.pm bei der Verarbeitung des filepath nicht vorgesehen.

Es wäre m.E. eine erheblich einfachere Lösung, den Dateinamen entsprechend anzupassen, als zu versuchen, ein nicht mehr wirklich gepflegtes Modul (Meta.pm) anpassen zu wollen, nur weil jetzt zum ersten Mal dieses Problem mit einem eher unüblichen Modulnamen auftritt.



Vielleicht sollte man per pre-commit-hook die Verwendung solcher Namen mit mehreren Unterstrichen einfach unterbinden