72_FRITZBOX.pm wird zu 72_Fritz.pm

Begonnen von JoWiemann, 02 März 2026, 16:29:49

Vorheriges Thema - Nächstes Thema

elektron-bbs

#15
Mir sind zwei Sachen aufgefallen:
08.20.20 Beta
Undefined subroutine &main::localtime called at ./FHEM/72_Fritz.pm line 15983.
2026.03.03 15:57:41 2: [FritzBox_7590_Test | 7590 | 154.08.21 | Readout_Aborted.9472] - SIGNIFICANT:Error: [144 | BlockingStart]
Ich habe "main::localtime" durch "localtime" ersetzt. Das kommt im Code 4 mal vor. Ob es an allen Stellen so ersetzt werden kann, weiß ich nicht.

08.20.10 Beta
2026.03.03 12:57:29 3: [FritzBox_7590_Test | 7590 | 154.08.21 | Attr_Modul.2086] - BASIC:Attr set disableFonInfo -> Neustart internal Timer - APICHECKED = 1
Can't use string ("</UPnPError>") as an ARRAY ref while "strict refs" in use at ./FHEM/72_Fritz.pm line 10218.
2026.03.03 12:57:43 2: [FritzBox_7590_Test | 7590 | 154.08.21 | Readout_Aborted.9421] - SIGNIFICANT:Error: [144 | BlockingStart] Timeout during API check.
Die Zeile hatte ich auskommentiert, da ich nicht nachvollziehen konnte, wodurch es hervorgerufen wird.

EDIT:
Ich vermute mal, das "main::time" auch falsch ist:
            my $RebootTime = main::strftime("%H:%M",main::localtime(main::time() + ($val[0] * 60)));
Intel(R) Atom(TM) CPU N270 mit 2 SIGNALduino nanoCC1101 + ESPEasy 2x serial server SIGNALduino nanoCC1101, Raspberry Pi 2 mit 2 CUL Stackable CC1101, Raspberry Pi 3 mit SIGNALduino radino + nano328 + 2 x SIGNAL-ESP CC1101 + 1 x rf_Gateway + 1 x SIGNAL-STM

JoWiemann

#16
Hallo elektron-bbs,

vielen dank für die Hinweise.

anbei eine neue "08.20.20b Beta".

Ich bin nochmal alle main:: Referenzen durchgegangen. Ich hatte wirklich fast alle Zeit/Datum Funktionen auf main:: referenziert.

08.20.10 Beta
2026.03.03 12:57:29 3: [FritzBox_7590_Test | 7590 | 154.08.21 | Attr_Modul.2086] - BASIC:Attr set disableFonInfo -> Neustart internal Timer - APICHECKED = 1
Can't use string ("</UPnPError>") as an ARRAY ref while "strict refs" in use at ./FHEM/72_Fritz.pm line 10218.
2026.03.03 12:57:43 2: [FritzBox_7590_Test | 7590 | 154.08.21 | Readout_Aborted.9421] - SIGNIFICANT:Error: [144 | BlockingStart] Timeout during API check.

war noch eine falsche Array Referenz.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

betateilchen

Zitat von: rabehd am 03 März 2026, 15:08:58
Zitat von: JoWiemann am 03 März 2026, 14:52:22aber man beachte Groß/Klein-Schreibung: 72_Fritz.pm

Cannot load module Fritz

Es kommt darauf an, was Du HIER schreibst:

defmod FritzBox_n FRITZ 192.168.xx.xx
An der Stelle kommt es auf Groß-/Kleinschreibung an.

defmod FritzBox_n Fritz 192.168.xx.xx
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

elektron-bbs

Jetzt hast du aber zu viel geändert:
           Fritz_Readout_Add_Reading $hash, $roReadings, $rName . "_last_negotiation", (strftime "%d-%m-%Y %H:%M:%S", localtime($_->{connected_since}));
sollte schon so bleiben:
           Fritz_Readout_Add_Reading $hash, $roReadings, $rName . "_last_negotiation", (main::strftime "%d-%m-%Y %H:%M:%S", localtime($_->{connected_since}));
Das dürfte auch wieder alle "strftime" betreffen.
Intel(R) Atom(TM) CPU N270 mit 2 SIGNALduino nanoCC1101 + ESPEasy 2x serial server SIGNALduino nanoCC1101, Raspberry Pi 2 mit 2 CUL Stackable CC1101, Raspberry Pi 3 mit SIGNALduino radino + nano328 + 2 x SIGNAL-ESP CC1101 + 1 x rf_Gateway + 1 x SIGNAL-STM

elektron-bbs

Zitat von: betateilchen am 03 März 2026, 17:30:42An der Stelle kommt es auf Groß-/Kleinschreibung an.

Vielleicht hängt der Fehler ja auch damit zusammmen, das im Modul überall noch "FRITZBOX" steht:
     return "FRITZBOX-define: define <name> FRITZBOX <IP address | DNS name>" if(@args != 3);
     $hash->{INFO_DEFINE} = "Please redefine Device: defmod <name> FRITZBOX <IP address | DNS name>" if @args == 2;
     return "FRITZBOX-define: define <name> FRITZBOX <IP address | DNS name>" if(@args < 2 || @args > 3);
Das geht dann in der Hilfe weiter:
<a name="FRITZBOX"></a>
<h3>FRITZBOX</h3>
      <code>define &lt;name&gt; FRITZBOX &lt;host&gt;</code>

Ein
define FritzBox_7590_Test FRITZ 192.168.178.1
hat bei mir übrigens funktioniert.


Intel(R) Atom(TM) CPU N270 mit 2 SIGNALduino nanoCC1101 + ESPEasy 2x serial server SIGNALduino nanoCC1101, Raspberry Pi 2 mit 2 CUL Stackable CC1101, Raspberry Pi 3 mit SIGNALduino radino + nano328 + 2 x SIGNAL-ESP CC1101 + 1 x rf_Gateway + 1 x SIGNAL-STM

JoWiemann

Hallo,

anbei eine neue Beta "08.20.20c Beta".

Ich habe jetzt:
use POSIX qw(strftime);
mit ins Package aufgenommen.

Die textlichen Bezüge zu FRITZBOX habe ich jetzt auf Fritz geändert.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

rabehd

#21
Zitat von: betateilchen am 03 März 2026, 17:30:42An der Stelle kommt es auf Groß-/Kleinschreibung an.

Code Auswählen Erweitern
defmod FritzBox_n Fritz 192.168.xx.xx
Alles schon probiert, auch mit der neusten Version. Ohne Erfolg.  :-\

auch mal ins Log geschaut
2026.03.03 21:24:19.741 1: reload: Error:Modul 72_Fritz deactivated:
 Can't locate Devel/Size.pm in @INC (you may need to install the Devel::Size module) (@INC contains: ./FHEM/lib ./lib . ./FHEM /usr/src/app/core/lib/perl5/5.36.3/aarch64-linux-gnu /usr/src/app/core/lib/perl5/5.36.3 /usr/src/app/core/lib/perl5/aarch64-linux-gnu /usr/src/app/core/lib/perl5 /usr/src/app/3rdparty/lib/perl5/5.36.3/aarch64-linux-gnu /usr/src/app/3rdparty/lib/perl5/5.36.3 /usr/src/app/3rdparty/lib/perl5/aarch64-linux-gnu /usr/src/app/3rdparty/lib/perl5 /usr/local/lib/perl5/site_perl/5.36.3/aarch64-linux-gnu /usr/local/lib/perl5/site_perl/5.36.3 /usr/local/lib/perl5/vendor_perl/5.36.3/aarch64-linux-gnu /usr/local/lib/perl5/vendor_perl/5.36.3 /usr/local/lib/perl5/5.36.3/aarch64-linux-gnu /usr/local/lib/perl5/5.36.3) at ./FHEM/72_Fritz.pm line 5373.
BEGIN failed--compilation aborted at ./FHEM/72_Fritz.pm line 5373.
Auch funktionierende Lösungen kann man hinterfragen.

JoWiemann

Hallo rabehd,

hast Du den Hinweis beachtet:

Bitte beachten: Um die Größe des hash zu überwachen nutze ich Devel::Size. Bitte nachinstallieren oder die Codezeilen:

5321   use Devel::Size qw(total_size);
5322   my $size = total_size($hash);

5324   Fritz_Readout_Add_Reading $hash, \@roReadings, "retStat_HashSize", $size;

auskommentieren. Ansonsten kann das Modul nicht geladen werden, da die Lib nicht vorhanden ist.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

binford6000

Hallo Jörg,
mit der letzten Version ist auch das retMsgbySet Attribut aufgetaucht.

VG Sebastian

rabehd

#24
Zitat von: JoWiemann am 03 März 2026, 21:32:41Hallo rabehd,

hast Du den Hinweis beachtet:

Bitte beachten: Um die Größe des hash zu überwachen nutze ich Devel::Size. Bitte nachinstallieren oder die Codezeilen:

5321  use Devel::Size qw(total_size);
5322  my $size = total_size($hash);

5324  Fritz_Readout_Add_Reading $hash, \@roReadings, "retStat_HashSize", $size;

auskommentieren. Ansonsten kann das Modul nicht geladen werden, da die Lib nicht vorhanden ist.

Grüße Jörg
Das habe ich nicht als relevant angesehen. Wenn ich es auskommentiere dann wird das Device angelegt.
Es hat noch eine Fehlermeldung, die schaue ich mir aber erst an.

Die Zeilennummern haben sich aber geändert.
Nicht 5321, 5322 und 5324, sondern 5373, 5374 und 5376.
 
Auch funktionierende Lösungen kann man hinterfragen.