72_FRITZBOX.pm ab Version 08.20.00

Begonnen von elektron-bbs, 04 September 2025, 17:08:39

Vorheriges Thema - Nächstes Thema

JoWiemann

Hallo,

anbei eine neue "08.20.08a Beta".

Neu:
set <name> smartHome <deviceID> <boost:0..120>
setzt den Heizköperregeler auf boost für 1..120 Minuten. boost:0 deaktiviert den Boost-Modus

Die 120 Minuten als Grenze habe ich aus der Fritz Smart Home App.

neue Readings:shdevice<id>_batteryLow, shdevice<id>_holidayactive, shdevice<id>_uid

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

neobiker

Hallo Jörg,

das hat wunderbar geklappt, der set boost Befehl geht auch.

In der Doku hast Du zu dem boost Befehl den parameter vergessen, bevor Du es veröffentlichst nochmal prüfen.
set <name> smartHome <deviceID>
Turns the temperature limit on|off.

Requires FRITZ!OS 8.00 or higher.
...
set smartHome
sets the radiator thermostat to boost for 1 to 120 minutes. boost:0 deactivates boost mode
Super - Danke Dir.

Gruss
neobiker

JoWiemann

Hallo Neobiker,

da hat der Übersetzer die html Tags verschluckt.

Anbei eine neue "08.20.08b Beta". Ich habe hier noch einen Fehler in der XML Bearbeitung beseitigt und die Log3 bereinigt.

Grüße Jörg

PS: Der boost Befehl wird über webservices/homeautoswitch.lua abgesetzt. Diese lua bildet die in FBDECT abgebildete Fritz AHA API ab.

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

neobiker

#48
Hi Jörg,
diese Version funktioniert bei mir nicht, das Modul wird damit nicht geladen.

JoWiemann

Zitat von: neobiker am 21 November 2025, 17:33:31Hi Jörg,
diese Version funktioniert bei mir nicht, das Modul wird damit nicht geladen.

Hallo Neobiker, kommentier bitte einmal ganz am Anfang das Laden von xmlsimple aus.

Danke und 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

neobiker

Zitat von: JoWiemann am 21 November 2025, 17:50:07
Zitat von: neobiker am 21 November 2025, 17:33:31Hi Jörg,
diese Version funktioniert bei mir nicht, das Modul wird damit nicht geladen.

Hallo Neobiker, kommentier bitte einmal ganz am Anfang das Laden von xmlsimple aus.

Danke und Grüße Jörg

damit startet das Modul wieder

neobiker

#51
Hallo Jörg,

könntest Du noch das Reading desired-temp hinzufügen?
Den Befehl dazu hast Du ja schon mit tmpAdjust, aber das steht in keinem Reading, oder habe ich da was übersehen?

Ab und zu kommt ein Fehler:
2025.11.22 18:03:36 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 16 tmpAdjust:21.0
2025.11.22 18:03:36 2: [fbox | 6660 | 252.08.20 | Helper_retMsg.1854] - SIGNIFICANT:location: 2510 | Msg: ERROR: Unexpected result: $VAR1 = {
          'sidNew' => 0,
          'sid' => '014f549692db2e21',
          'data' => {
                      'mode' => 'TARGET_TEMPERATURE',
                      'done' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                      'temperature' => 21
                    },
          'pid' => 'sh_control',
          'timeTillLogout' => '1200',
          'time' => [],
          'hide' => {
                      'userUp' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                      'shareUsb' => $VAR1->{'hide'}{'userUp'},
                      'autoUp' => $VAR1->{'hide'}{'userUp'},
                      'update' => $VAR1->{'hide'}{'userUp'},
                      'ssoSet' => $VAR1->{'hide'}{'userUp'},
                      'liveTv' => $VAR1->{'hide'}{'userUp'},
                      'rrd' => $VAR1->{'hide'}{'userUp'},
                      'wizUpdate' => $VAR1->{'hide'}{'userUp'},
                      'mobile' => $VAR1->{'hide'}{'userUp'}
                    }
        };
Edit: Ich denke der kommt dann, wenn ich neue Readings angelegt habe, die am Anfang noch leer sind, aber der Notifier initial schon einen Befehl sendete.

Ausserdem landet manchmal der tmpAdjust Wert auch in Reading tempOffset ... das verstehe ich noch nicht, wo das herkommt.

Manchmal "verschluckt" er scheinbar den tmpAdjust Befehl, diesen hier hat er nicht ausgeführt. Als ich den eben nochmal gesendet habe, ging es.
Edit: Hhm, das kann evtl. auch vom Temperatur Tagesprogramm danach verstellt worden sein.

2025.11.23 00:41:50 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 16 tmpAdjust:20.5
2025.11.23 00:41:50 3: nDG_Thermo return value: ID:16 - 20.5 - set adjustment to TARGET_TEMPERATURE: 20.5
...
2025.11.23 03:02:29 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 16 tempOffset:-4.5
2025.11.23 03:02:29 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12767] - BASIC:FRITZBOX_SmartHome_Device_List (Fritz!OS: 08.20)
2025.11.23 03:02:29 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12784] - BASIC:Processing SmartHome_Device_List: read|save|test
2025.11.23 03:02:29 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12806] - BASIC:Processing SmartHome_Device_List: 16
...
2025.11.23 05:49:00 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12767] - BASIC:FRITZBOX_SmartHome_Device_List (Fritz!OS: 08.20)
2025.11.23 05:49:02 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12784] - BASIC:Processing SmartHome_Device_List: read|save|test
2025.11.23 05:49:02 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12806] - BASIC:Processing SmartHome_Device_List: 16
2025.11.23 09:13:21 4: nDG_Thermo exec IF ("$EVTPART0" eq "desired:") (set fbox smartHome 16 tmpAdjust:$EVTPART1) ELSE (
             IF ("$EVTPART0" eq "boostinterval:") (set fbox smartHome 16 boost:$EVTPART1) ELSE (
             IF ("$EVTPART0" eq "boostactive:" && "$EVTPART1" eq "no") (set DG_Thermo off) ELSE (
             IF ("$EVTPART0" eq "on") (set fbox smartHome 16 boost:120) ELSE (
             IF ("$EVTPART0" eq "off") (set fbox smartHome 16 boost:0)
             ))))
2025.11.23 09:13:21 1: ERROR evaluating my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my @MATCHED=@{$evalSpecials->{'%MATCHED'}};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{if("off" eq "boostactive:" && "$EVTPART1" eq "no"){fhem('set DG_Thermo off')}else{fhem('             IF ("off" eq "on") (set fbox smartHome 16 boost:120) ELSE (             IF ("off" eq "off") (set fbox smartHome 16 boost:0)             )')}}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 337271) line 1.

2025.11.23 09:13:21 3: nDG_Thermo return value: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 337271) line 1.

2025.11.23 09:13:50 4: nDG_Thermo exec IF ("$EVTPART0" eq "desired:") (set fbox smartHome 16 tmpAdjust:$EVTPART1) ELSE (
             IF ("$EVTPART0" eq "boostinterval:") (set fbox smartHome 16 boost:$EVTPART1) ELSE (
             IF ("$EVTPART0" eq "boostactive:" && "$EVTPART1" eq "no") (set DG_Thermo off) ELSE (
             IF ("$EVTPART0" eq "on") (set fbox smartHome 16 boost:120) ELSE (
             IF ("$EVTPART0" eq "off") (set fbox smartHome 16 boost:0)
             ))))
2025.11.23 09:13:50 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 16 tmpAdjust:20.5
2025.11.23 09:13:51 3: nDG_Thermo return value: ID:16 - 20.5 - set adjustment to TARGET_TEMPERATURE: 20.5

So, eben kam aber noch was rein:
2025.11.23 17:05:49 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 16 tempOffset:-4
2025.11.23 17:05:49 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12767] - BASIC:FRITZBOX_SmartHome_Device_List (Fritz!OS: 08.20)
2025.11.23 17:05:50 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12784] - BASIC:Processing SmartHome_Device_List: read|save|test
2025.11.23 17:05:50 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12806] - BASIC:Processing SmartHome_Device_List: 16
2025.11.23 17:05:51 3: nDG_Thermo return value: ID:16 - set offset to:-4
2025.11.23 17:05:51 1: readingsUpdate(fbox,updateSHdevices,3) missed to call readingsBeginUpdate first.
2025.11.23 17:05:51 1: stacktrace:
2025.11.23 17:05:51 1:     main::readingsBulkUpdate            called by fhem.pl (5008)
2025.11.23 17:05:51 1:     main::readingsEndUpdate             called by ./FHEM/72_FRITZBOX.pm (8790)
2025.11.23 17:05:51 1:     main::FRITZBOX_Readout_Process      called by ./FHEM/72_FRITZBOX.pm (8483)
2025.11.23 17:05:51 1:     main::FRITZBOX_Readout_Done         called by (eval 11116) (1)
2025.11.23 17:05:51 1:     (eval)                              called by fhem.pl (1180)
2025.11.23 17:05:51 1:     main::AnalyzePerlCommand            called by fhem.pl (1209)
2025.11.23 17:05:51 1:     main::AnalyzeCommand                called by fhem.pl (1136)
2025.11.23 17:05:51 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2025.11.23 17:05:51 1:     main::telnet_Read                   called by fhem.pl (3994)
2025.11.23 17:05:51 1:     main::CallFn                        called by fhem.pl (789)

Gruss
Neobiker

neobiker

#52
Falls es jemanden interessiert:
Ich habe für den Thermostaten ein DUMMY Device angelegt, das die relevanten Readings von der Fritzbox list.
Ein Notify Object sendet die Befehle für desired-Temp (tmpAdjust), tempOffset und boost an die Fritzbox.

DG_Thermo
verwendet in UserReadings einen externen Temperatursensor DG_Temperatur
defmod DG_Thermo dummy
attr DG_Thermo cmdIcon on:Heizung_Hauptschalter.on off:Heizung_Hauptschalter.off
attr DG_Thermo event-on-change-reading boostactive,newOffset,tempDevice
attr DG_Thermo event-on-update-reading state,tempAdjust,boostinterval
attr DG_Thermo group Heizung
attr DG_Thermo icon hc_wht_regler
attr DG_Thermo readingList tempAdjust temperature boostinterval readValues
attr DG_Thermo room Haus,Heizung
attr DG_Thermo setList tempAdjust:slider,15,0.5,25,1 boostinterval:slider,0,15,120 on off readValues
attr DG_Thermo stateFormat [DG_Thermo:tempExtern:d]°C   (set:[DG_Thermo:tempDevice:d]° sensor:[DG_Thermo:temperature:d]° offset:[DG_Thermo:tempOffset:d]° boost:[DG_Thermo:boostEnd]min)
attr DG_Thermo useSetExtensions 1
attr DG_Thermo userReadings tempExtern { ReadingsNum("DG_Temperatur","temperature", 0) },\
tempDevice { ReadingsNum("fbox","shdevice16_targetTemp", 0) },\
temperature { ReadingsNum("fbox","shdevice16_temperature", 0) },\
tempOffset { ReadingsNum("fbox","shdevice16_tempOffset", 0) },\
boostactive { ReadingsVal("fbox","shdevice16_currentState", "") eq "TEMPERATURE_BOOST" ? "yes" : "no" },\
boostEnd { ReadingsVal('fbox','shdevice16_currentState','') ne "TEMPERATURE_BOOST" ? 0 : int((time_str2num(ReadingsVal('fbox','shdevice16_currentStateEndTime','')) - time) / 60) },\
summeractive { ReadingsVal("fbox","shdevice16_summerTimeAction", "n/a") eq "SET_OFF" ? "no" : "yes" },\
newOffset {int((ReadingsNum("DG_Thermo","tempExtern",20.5) - ReadingsNum("DG_Thermo","temperature",20.5) + ReadingsNum("DG_Thermo","tempOffset",-2.5) - 0.2) * 2.0) / 2.0}
attr DG_Thermo verbose 3
attr DG_Thermo webCmd tempAdjust:on:off
attr DG_Thermo webCmdLabel Thermostat set:Boost On:Off

nDG_Thermo
defmod nDG_Thermo notify DG_Thermo:.* IF ("$EVTPART0" eq "on") (set fbox smartHome 16 boost:120) ELSE (\
 IF ("$EVTPART0" eq "off") (set fbox smartHome 16 boost:0) ELSE (\
 IF ("$EVTPART0" eq "boostinterval:") (set fbox smartHome 16 boost:$EVTPART1) ELSE (\
 IF ("$EVTPART0" eq "boostactive:" && "$EVTPART1" eq "no") (set DG_Thermo off) ELSE (\
 IF ("$EVTPART0" eq "tempAdjust:") (set fbox smartHome 16 tmpAdjust:$EVTPART1) ELSE (\
 IF ("$EVTPART0" eq "tempDevice:" && "$EVTPART1" ne ReadingsNum("DG_Thermo","tempAdjust",0)) (setreading DG_Thermo tempAdjust $EVTPART1) ELSE (\
 IF ("$EVTPART0" eq "newOffset:") (set fbox smartHome 16 tempOffset:$EVTPART1)\
))))))


nfbox
 triggert zyklisch einen update der Readings sobald fbox seine Readings aktualisiert.
defmod nfbox notify fbox:retStat_lastReadout.* { fhem "setreading DG_Thermo readValues fbox ;;;; setreading Wz_Thermo readValues fbox" }
Das funktioniert jetzt wunderbar (solved: bis auf das fehlende Reading desired-temp).

Gruss
Neobiker

neobiker

Also, es kommt so ein Fehler ab und zu, kann das gerade nicht einordnen:
2025.11.23 21:33:59 0: Server shutdown
2025.11.23 21:34:00 1: Including fhem.cfg
2025.11.23 21:34:01 1: Including ./log/fhem.save
2025.11.23 21:34:01 1: Messages collected while initializing FHEM:SecurityCheck:
  WEB is not password protected
  FHEM_MQTT is not password protected

Protect this FHEM installation by configuring the allowed device allowedWEB
You can disable this message with attr global motd none

2025.11.23 21:34:01 0: Featurelevel: 6.4
2025.11.23 21:34:01 0: Server started with 147 defined entities (fhem.pl:30311/2025-09-20 perl:5.036000 os:linux user:fhem pid:3583796)
2025.11.23 21:34:05 3: [fbox | 6660 | 252.08.20 | Set_check_APIs.9688] - BASIC:Response -> luaQuery:200 luaData:200 TR064:200
2025.11.23 21:39:11 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 17 tempOffset:-2
2025.11.23 21:39:11 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12767] - BASIC:FRITZBOX_SmartHome_Device_List (Fritz!OS: 08.20)
2025.11.23 21:39:12 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12784] - BASIC:Processing SmartHome_Device_List: read|save|test
2025.11.23 21:39:12 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12806] - BASIC:Processing SmartHome_Device_List: 17
2025.11.23 21:39:12 3: nWz_Thermo return value: ID:17 - set offset to:-2
2025.11.23 21:39:12 1: readingsUpdate(fbox,updateSHdevices,done) missed to call readingsBeginUpdate first.
2025.11.23 21:39:12 1: stacktrace:
2025.11.23 21:39:12 1:     main::readingsBulkUpdate            called by fhem.pl (5008)
2025.11.23 21:39:12 1:     main::readingsEndUpdate             called by ./FHEM/72_FRITZBOX.pm (8790)
2025.11.23 21:39:12 1:     main::FRITZBOX_Readout_Process      called by ./FHEM/72_FRITZBOX.pm (8483)
2025.11.23 21:39:12 1:     main::FRITZBOX_Readout_Done         called by (eval 2679) (1)
2025.11.23 21:39:12 1:     (eval)                              called by fhem.pl (1180)
2025.11.23 21:39:12 1:     main::AnalyzePerlCommand            called by fhem.pl (1209)
2025.11.23 21:39:12 1:     main::AnalyzeCommand                called by fhem.pl (1136)
2025.11.23 21:39:12 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2025.11.23 21:39:12 1:     main::telnet_Read                   called by fhem.pl (3994)
2025.11.23 21:39:12 1:     main::CallFn                        called by fhem.pl (789)

JoWiemann

#54
Zitat von: neobiker am 23 November 2025, 21:42:00Also, es kommt so ein Fehler ab und zu, kann das gerade nicht einordnen:

2025.11.23 21:33:59 0: Server shutdown
2025.11.23 21:34:00 1: Including fhem.cfg
2025.11.23 21:34:01 1: Including ./log/fhem.save
2025.11.23 21:34:01 1: Messages collected while initializing FHEM:SecurityCheck:
  WEB is not password protected
  FHEM_MQTT is not password protected

Protect this FHEM installation by configuring the allowed device allowedWEB
You can disable this message with attr global motd none

2025.11.23 21:34:01 0: Featurelevel: 6.4
2025.11.23 21:34:01 0: Server started with 147 defined entities (fhem.pl:30311/2025-09-20 perl:5.036000 os:linux user:fhem pid:3583796)
2025.11.23 21:34:05 3: [fbox | 6660 | 252.08.20 | Set_check_APIs.9688] - BASIC:Response -> luaQuery:200 luaData:200 TR064:200
2025.11.23 21:39:11 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 17 tempOffset:-2
2025.11.23 21:39:11 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12767] - BASIC:FRITZBOX_SmartHome_Device_List (Fritz!OS: 08.20)
2025.11.23 21:39:12 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12784] - BASIC:Processing SmartHome_Device_List: read|save|test
2025.11.23 21:39:12 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12806] - BASIC:Processing SmartHome_Device_List: 17
2025.11.23 21:39:12 3: nWz_Thermo return value: ID:17 - set offset to:-2
2025.11.23 21:39:12 1: readingsUpdate(fbox,updateSHdevices,done) missed to call readingsBeginUpdate first.
2025.11.23 21:39:12 1: stacktrace:
2025.11.23 21:39:12 1:     main::readingsBulkUpdate            called by fhem.pl (5008)
...

Hallo Neonbiker,

für mich sieht das so aus:

in einer Deiner Routinen wird
readingsUpdate(fbox,updateSHdevices,done)
aufgerufen. Ich vermute mal, dass es sich hier eher um ein:
readingsSingleUpdate(fbox,updateSHdevices,done)
handeln soll.

Kommt dieser Aufruf nun während die Updates der Readings für Deine Box gerade im 72_FRITZBOX Modul laufen, dann kommt es hier wohl zu einer "Interessenskollision".

Anders kann ich mir das im Moment nicht erklären.

Grüße Jörg

[/quote]
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

bertl

Hallo Jörg,

mir ist in meinem Log seit 08.10.2025 (Modul-Update) folgende Perl Warnung beim Start von FHEM aufgefallen.
2025.11.24 10:42:43 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($;$) vs ($) at /usr/local/share/perl/5.36.0/Exporter.pm line 63, <$fh> line 2962.
2025.11.24 10:42:43 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($) vs ($;$) at (eval 473) line 1.

Nach etwas Recherche habe ich herausgefunden, dass die Warnung auftritt, seit du folgenden Code eingefügt hast:
sub FRITZBOX_encode_json {
  use JSON::PP 'encode_json'; # no encode_json
  state $encoder = JSON::PP->new->utf8->canonical->pretty;
  return $encoder->encode($_[0]);
}

Wenn ich diese Funktion und dessen Aufruf auskommentiere, ist die Warnung weg.

Vielleicht kannst du dir das mal bei Gelegenheit ansehen.

Danke, Robert

JoWiemann

Hallo,

anbei eine neue 08.20.08c Beta

Neues Reading:
shdevice<ID>_targetTemp

Behoben:
2025.11.22 18:03:36 2: [fbox | 6660 | 252.08.20 | Helper_retMsg.1854] - SIGNIFICANT:location: 2510 | Msg: ERROR: Unexpected result: $VAR1 = {
          'sidNew' => 0,
          'sid' => '014f549692db2e21',
          'data' => {
                      'mode' => 'TARGET_TEMPERATURE',
...
und

ZitatAusserdem landet manchmal der tmpAdjust Wert auch in Reading tempOffset ...

Dank an neonbiker fürs Testen.

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

JoWiemann

#57
Zitat von: bertl am 24 November 2025, 11:12:21Hallo Jörg,

mir ist in meinem Log seit 08.10.2025 (Modul-Update) folgende Perl Warnung beim Start von FHEM aufgefallen.
2025.11.24 10:42:43 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($;$) vs ($) at
Nach etwas Recherche habe ich herausgefunden, dass die Warnung auftritt, seit du folgenden Code eingefügt hast:
sub FRITZBOX_encode_json {
  use JSON::PP 'encode_json'; # no encode_json
  state $encoder = JSON::PP->new->utf8->canonical->pretty;
  return $encoder->encode($_[0]);
}

Hallo Robert,

zunächst. Es ist nur ein Warning und behindert die Funktion nicht. Ich habe das Warning nicht. Ggf. hängt es mit der Perl Version zusammen. Da muss ich dann mal recherchieren.

Wenn Du die Sub entfernst, dann laufen neuere Funktionen, wie "get <name> luaData pretty ..."  auf einen Fehler, ggf. kommt es zu einem unerwarteten Beenden von Fhem.

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

bertl

Hallo Jörg,

danke für die schnelle Rückmeldung.
Die Sub habe ich nur für Testzwecke entfernt und dann wieder eingefügt, da ich wissen wollte was/wer die Warnung verursacht ;)
Selbstverständlich hast du recht, dass es sich nur um eine Warnung handelt, aber ich kann die Auswirkung auf mögliche andere Module nicht abschätzen und Warnungen habe ja auch einen Grund.
Danke nochmals, Robert

neobiker

Hi Jörg,

Zitat von: JoWiemann am 24 November 2025, 10:53:49
Zitat von: neobiker am 23 November 2025, 21:42:00Also, es kommt so ein Fehler ab und zu, kann das gerade nicht einordnen:

2025.11.23 21:33:59 0: Server shutdown
2025.11.23 21:34:00 1: Including fhem.cfg
2025.11.23 21:34:01 1: Including ./log/fhem.save
2025.11.23 21:34:01 1: Messages collected while initializing FHEM:SecurityCheck:
  WEB is not password protected
  FHEM_MQTT is not password protected

Protect this FHEM installation by configuring the allowed device allowedWEB
You can disable this message with attr global motd none

2025.11.23 21:34:01 0: Featurelevel: 6.4
2025.11.23 21:34:01 0: Server started with 147 defined entities (fhem.pl:30311/2025-09-20 perl:5.036000 os:linux user:fhem pid:3583796)
2025.11.23 21:34:05 3: [fbox | 6660 | 252.08.20 | Set_check_APIs.9688] - BASIC:Response -> luaQuery:200 luaData:200 TR064:200
2025.11.23 21:39:11 3: [fbox | 6660 | 252.08.20 | Set.1883] - BASIC:set fbox smartHome - 17 tempOffset:-2
2025.11.23 21:39:11 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12767] - BASIC:FRITZBOX_SmartHome_Device_List (Fritz!OS: 08.20)
2025.11.23 21:39:12 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12784] - BASIC:Processing SmartHome_Device_List: read|save|test
2025.11.23 21:39:12 3: [fbox | 6660 | 252.08.20 | Get_SmartHome_Devices_List.12806] - BASIC:Processing SmartHome_Device_List: 17
2025.11.23 21:39:12 3: nWz_Thermo return value: ID:17 - set offset to:-2
2025.11.23 21:39:12 1: readingsUpdate(fbox,updateSHdevices,done) missed to call readingsBeginUpdate first.
2025.11.23 21:39:12 1: stacktrace:
2025.11.23 21:39:12 1:    main::readingsBulkUpdate            called by fhem.pl (5008)
...

Hallo Neonbiker,

für mich sieht das so aus:

in einer Deiner Routinen wird
readingsUpdate(fbox,updateSHdevices,done)
aufgerufen. Ich vermute mal, dass es sich hier eher um ein:
readingsSingleUpdate(fbox,updateSHdevices,done)
handeln soll.

Kommt dieser Aufruf nun während die Updates der Readings für Deine Box gerade im 72_FRITZBOX Modul laufen, dann kommt es hier wohl zu einer "Interessenskollision".

Anders kann ich mir das im Moment nicht erklären.

Grüße Jörg


Ich denke das ist eine Art von "Race-Condition".
Das Dummy-Device DG_Thermo liest als User-Readings die Werte von fbox aus. Dabei wird ein Event erzeugt, wenn z.B. der tempOffset aktualisiert werden muss. Der Event sendet den Befehl tempOffset an fbox zurück.

Ich habe mal ein sleep 5 in den Notifier für den Event eingebaut, das ging bisher besser.

Mal sehen ...

Gruss Neobiker