Perl-Funktionen liefern Fehlermeldung nach update u. upgrade

Begonnen von bitgulli, 23 April 2026, 11:26:31

Vorheriges Thema - Nächstes Thema

bitgulli

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

KölnSolar

Im Log sollte der Grund stehen, warum Deine 99_myutils(beim FHEM_Start) nicht geladen werden kann.
RPi5/3/2 Trixie-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-ecovacs(mqtt2)-zigbee2mqtt

juergen012

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

Fhem unter Proxmox

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

bitgulli

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 .

betateilchen

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)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

bitgulli

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.

mähschaf

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?

Beta-User

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...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

mähschaf

Argh! Danke!

Ich habe keine Ahnung, warum (mir) der Fehler vorher nicht aufgefallen ist. Wenn ich das nicht selber für völligen Blödsinn halten würde, dann würde ich jetzt spekulieren, dass FHEM in Bezug auf die Namen der Subroutinen vorher nicht case sensitiv war. Aber wie gesagt: das halte ich für Blödsinn.

Jedenfalls: DANKE! Ich war inzwischen betriebsblind und hätte den Fehler in diesem Leben nicht mehr gefunden...

betateilchen

Zitat von: bitgulli am 23 April 2026, 16:10:01Deine abwertenden Kommentare kannst Du Dir sparen!

?

Ist heute schon wieder Vollmond?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!