[gelöst] Nach Update 01.02. Fehler in 73_GasCalculator.pm & startet Fhem nicht

Begonnen von Mihca, 01 Februar 2021, 17:09:54

Vorheriges Thema - Nächstes Thema

Mihca

Nach dem heutigen Update gibt es im Log folgenden Meldung:

Undefined subroutine &main::timelocal called at ./FHEM/73_GasCalculator.pm line 142.

Danach bricht der Start von Fhem ab und es erfolgt ein Neustart. Das geht dann so weiter bis man mit der Konsole fhem stoppt und dann händisch aus dem Restore die Dateien zurückspielt.

Vielen Dank vorab für Hilfe.
Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Wiesenfreund

Bei mit erfolge der Abbruch lt. Protokoll nach dem Aufruf des Moduls 73_ElectricityCalculator.pm. Nachdem ich dieses auf die bisherige Version zurückgesetzt hatte, der Startabbruch beim GasCalculator. Ich habe dann ein Backup eingespielt und die Module Gas, Electric und Water aus dem Backap ausgeschlossen und siehe da, fhem lässt sich wieder starten.

Grüße Eberhard

Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

Sailor

Ein herzerfrischendes Moin vom achtern Diek vorweg

Also Modulauthor bin ich an diesem Fehler interessiert.
ElectricityCalculator, GasCalculator und WaterCalculator sind im Grunde identische Module.

Die Zeile 142 ruft die Funktion "timelocal" auf.
Diese sollte eigentlich bei jedem Raspi enthalten sein.

Bei mir funktioniert das Modul...
Daher die Frage auf welchem System ihr das fhem betreibt...

Versucht mal mit
sudo cpan Time::Local
die Funktion nachinstalliert zu bekommen...

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

krikan


Mihca

Hallo Sailor,

vielen Dank für die Anregung. Das Modul war bereits installiert. Hier der Auszug aus der Konsole:

sudo cpan Time::Local
Loading internal logger. Log::Log4perl recommended for better logging
Reading '/root/.cpan/Metadata'
  Database was generated on Mon, 01 Feb 2021 15:17:03 GMT
Time::Local is up to date (1.30).


Daher hilft das leider nicht. Wenn ich in der fhem-Konsole eingebe:

{timelocal(1, 0, 0, 1, 2, 2021)}

kommt die Fehlermeldung:

Undefined subroutine &main::timelocal called at (eval 5201) line 1.

Daher versuche ich jetzt mal noch nicht, die Module 73_xxxCalculator.pm wieder aufzuspielen. Da stimmt etwas noch nicht.

VG Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Sailor

Hallo Christian

Zitat von: krikan am 01 Februar 2021, 20:01:03
Fehlt nicht lediglich
use Time::Local;
im Modul?

Gruß, Christian

Eigentlich nicht mehr, da Time::Local als Standard-Module im CORE enthalten ist:
https://perldoc.perl.org/modules

Welche Versionen von Perl verwendet ihr denn?

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

Sailor

Hallo Achim

Zitat von: Mihca am 01 Februar 2021, 20:07:46
Daher versuche ich jetzt mal noch nicht, die Module 73_xxxCalculator.pm wieder aufzuspielen. Da stimmt etwas noch nicht.

Komisch, ich habe die Time::Local bis eben gerade nicht installiert gehabt und es hat dennoch funktioniert.
Wie bei den Meisten im eigentlichen Foren auch, wo ich diese zunächst zum Testen hochgeladen hatte...

Was passiert denn, wenn ihr im neuen Modul oben use Time::Local; eingebt?

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

Wiesenfreund

Hallo zusammen,
ich kann leider zur Fehlersuche nicht viel beitragen.
Als fhem wieder lief konnte ich im Log folgenden Eintrag finden:

2021.02.01 10:23:35.488 1:  Including fhem.cfg
Undefined subroutine &main::timelocal called at ./FHEM/73_ElectricityCalculator.pm line 137.
2021.02.01 10:41:45.571 1:  Including fhem.cfg
2021.02.01 10:41:47.448 1:  CUL868_2 device is none, commands will be echoed only
Undefined subroutine &main::timelocal called at ./FHEM/73_WaterCalculator.pm line 145.


Mit der Modifikation von Modulen kenne ich mich nicht aus. Ich bin einfacher Nutzer von fhem.

Gruß Eberhard
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

Mihca

Hallo Sailor,

Perl-Version ist 5.3. Ich habe in 73_GasCalculator.pm line als Zeile 50 "use Time::Local;" eingefügt. Dann tritt der im ersten Beitrag beschriebene Fehler nicht mehr auf. Fhem startet. Allerdings mit folgender Fehlermeldung beim ersten Restart nach Update in Zeile 709 (708 ohne Zeile 50):

2021.02.02 08:37:07 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/73_GasCalculator.pm line 709.

Beim zweiten Restart nach Update ist dieser Fehler nicht mehr da.

Vielen Dank vorab
Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

krikan

Zitat von: Sailor am 01 Februar 2021, 20:08:36
Eigentlich nicht mehr, da Time::Local als Standard-Module im CORE enthalten ist:
https://perldoc.perl.org/modules
Mein bisheriges Verständnis:
Standardmodule sind Module, die normalerweise mit dem Perl-Interpreter ausgeliefert werden. Sie sind daher fast immer nach der Perl-Installation verfügbar.
Eingebunden werden müssen die Standard-Module mit "use" (oder require), bevor man sie nutzen kann.
Lasse mich aber gerne eines besseren belehren.

Gruß, Christian




Sailor

Hallo Achim

Zitat von: Mihca am 02 Februar 2021, 08:48:16
Perl-Version ist 5.3. Ich habe in 73_GasCalculator.pm line als Zeile 50 "use Time::Local;" eingefügt. Dann tritt der im ersten Beitrag beschriebene Fehler nicht mehr auf. Fhem startet. Allerdings mit folgender Fehlermeldung beim ersten Restart nach Update in Zeile 709 (708 ohne Zeile 50):
2021.02.02 08:37:07 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/73_GasCalculator.pm line 709.
Beim zweiten Restart nach Update ist dieser Fehler nicht mehr da.

Danke, für die Rückmeldung.
Ich check das ein!

Der zweite Fehler ist erstmals nach Umstellung normal!
Der dürfte nie wieder auftauchen.

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

Sailor

Hallo Christian

Zitat von: krikan am 02 Februar 2021, 13:48:39
Standardmodule sind Module, die normalerweise mit dem Perl-Interpreter ausgeliefert werden. Sie sind daher fast immer nach der Perl-Installation verfügbar.
Eingebunden werden müssen die Standard-Module mit "use" (oder require), bevor man sie nutzen kann.
Lasse mich aber gerne eines besseren belehren.
Normalerweise gebe ich dir Recht, aber die Frage die ich mir stelle ist, Warum funktioniert es bei manchen und bei Anderen wieder nicht.

Aber egal -  Das "use Time::Local" kommt jetzt rein und gut ist.

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

CoolTux

Weil einige Module welche vor Deinem geladen werden das use schon gemacht haben. Der eine hat solche Module der andere nicht. Einige Standardmodule werden auch schon durch die Main geladen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Mihca

Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Sailor

Hi CoolTux

Zitat von: CoolTux am 02 Februar 2021, 15:06:35
Weil einige Module welche vor Deinem geladen werden das use schon gemacht haben. Der eine hat solche Module der andere nicht. Einige Standardmodule werden auch schon durch die Main geladen.

Aha, siehste.

Na, dann muss ich in Zukunft mal darauf achten, welche Module ich da verwende, die ich noch aufrufen muss...

Danke!

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