Hallo,
nachdem ich jetzt schon einige Jahre mit meiner FHEM-Installation auf einem Raspi super zurecht gekommen bin, gibt es nach einem Update von FHEM und einem Upgrade auf bullseye Probleme mit meinen selbstgebastelten Funktionen in 99_myutils.pm.
Am Perl-Code wurde absolut nichts geändert.
Da ich kein versierter Perl-Programmierer bin (das letzte Mal als ich mich damit abgequält hatte, war bei der Einrichtung meiner Funktionen in FHEM) muss ich hier mal fragen, warum ich auf einmal eine Fehlermeldung bekomme, die da lautet:
return value: Undefined subroutine &main::<Name der jeweiligen Funktion>
egal, was ich da an eigenen Funktionen aufrufe?
IMHO kann das ja nur mit dem Update (FHEM) bzw Upgrade (Perl-Version?) zusammenhängen, dass sich da etwas bei Perl geändert hat.
Bin für jeden Hinweis dankbar
Im Log sollte der Grund stehen, warum Deine 99_myutils(beim FHEM_Start) nicht geladen werden kann.
Moin,
ZitatDebian 11 (Codename ,,Bullseye") wurde am 14. August 2021 veröffentlicht und befindet sich seit dem 14. August 2024 in der Long Term Support (LTS) Phase, die bis zum 31. August 2026 läuft
Zitat von: juergen012 am 23 April 2026, 12:34:39Moin,
ZitatDebian 11 (Codename ,,Bullseye") wurde am 14. August 2021 veröffentlicht und befindet sich seit dem 14. August 2024 in der Long Term Support (LTS) Phase, die bis zum 31. August 2026 läuft
Stimmt, bringt uns aber bei der Ursachenforschung hier im Thread keinen Millimeter weiter.
Zitat von: KölnSolar am 23 April 2026, 11:58:37Im Log sollte der Grund stehen, warum Deine 99_myutils(beim FHEM_Start) nicht geladen werden kann.
Alternativ: in der FHEM Befehlszeile "reload 99_myUtils.pm" eingeben, dann sollte eine Fehlermeldung angezeigt werden, die hoffentlich weiterhilft.
Can't locate XML/Hash/XS.pm in @INC (you may need to install the XML::Hash::XS module) (@INC contains: . ./FHEM ./lib /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/arm-linux-gnueabihf/perl5/5.32 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl ./FHEM/lib) at ./FHEM/99_myUtils.pm line 7.
BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 7.
Aha, da haben wir es ja. Es scheint ein Modul zu fehlen, das ich damals irgendwie installiert hatte.
Ich habe jetzt versucht, das Modul mittels cpan zu installieren, was zur Folge hatte, dass eine ziemlich lange Meldungsliste über den Bildschirm rollte. Es sieht so aus, als wäre die gesamte Perl-Funktionsbibliothek aktualisiert worden.
Das Ergebnis: Es hat sich nichts geändert, die Meldung kommt immer noch.
Wie bereits gesagt, ich bin eher Laie, was Perl betrifft, und konnte mich schon damals nicht so richtig mit dieser Programmiersprache anfreunden. Der Code erinnert mich immer an die Sprechblasen der Comics meiner Jugendzeit, wenn irgendeine der darin enthaltenen Figuren fluchte ;D .
Wenn man ohenhin ein wenig orientierungslos auf Betriebssystem und perl ist, sollte man sich nicht auch noch cpan antun, wenn es dafür ein passendes Debian-package gibt.
Probiere mal:
apt install libxml-hash-xs-perl
und danach FHEM neu starten (besser: den raspi neu starten, falls Du jetzt noch mehr gefrickelt hast)
Deine abwertenden Kommentare kannst Du Dir sparen!
Trotzdem danke, das war es dann auch. Es läuft wieder.
Dass ich bezüglich des Betriebssystems orientierungslos sei, bezeichne ich nun mal als eine unbewiesene Behauptung deinerseits, die ich schon als ziemlich anmaßend bezeichne. Woher willst Du das eigentlich wissen?
Gerade bei Debian gehe ich normalerweise davon aus, dass Bibliotheken, die in der Vorgängerversion installiert waren, auch nach einem Upgrade wieder vorhanden sind. Dass das fehlende Modul dort zu finden ist, dürfte wohl eher Perl-Knowhow sein und hat mit Kenntnissen des Betriebssystem wohl eher weniger zu tun.
Dennoch nochmals vielen Dank für die Hilfe.
Hallo,
ich hänge mich hier einmal dran.
Heute habe ich ein Update von FHEM gemacht, die Funktionen aus der 99_myUtils.pm sind seit dem verschollen.
Die lib habe ich nachinstalliert:
Zitatapt install libxml-hash-xs-perl
Bei einem reload sehe ich im Log, dass die Funktionen bereits definiert sind.
Zitat2026.04.23 16:20:27 1: ERROR evaluating { VerbrauchZwischenZeitenSmooth(0, 24) }: Undefined subroutine &main::VerbrauchZwischenZeitenSmooth called at (eval 7087) line 1.
2026.04.23 16:22:11 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 14.
2026.04.23 16:22:11 1: PERL WARNING: Subroutine myCalendar2Holiday redefined at ./FHEM/99_myUtils.pm line 22.
2026.04.23 16:22:11 1: PERL WARNING: Subroutine RestwertZuZeitSmooth redefined at ./FHEM/99_myUtils.pm line 65.
2026.04.23 16:22:11 1: PERL WARNING: Subroutine VerbrauchZwischenZeitensmooth redefined at ./FHEM/99_myUtils.pm line 83.
2026.04.23 16:22:39 1: ERROR evaluating { VerbrauchZwischenZeitenSmooth(0, 24) }: Undefined subroutine &main::VerbrauchZwischenZeitenSmooth called at (eval 8616) line 1.
Ich habe im global-Device verbose auf 5 gesetzt und neu gestartet. Im Log (das jetzt riesig ist) habe ich nichts gefunden, was ich in Verbindung mit 99_myUtils gebracht hätte.
Hat bitte jemand einen Tip, wie ich vorgehen könnte?
Meine Güte, erst den DAU vorgaukeln, und dann jammern....
@mähschaf: Dass zwischen einem s und S unterschieden werden könnte, ist wohl auch nicht Allgemeingut...