Neueste Beiträge

#91
FHEM Code changes / Revision 31301: 55_MiniSIP.pm:...
Letzter Beitrag von System - 27 Mai 2026, 13:01:03
Revision 31301: 55_MiniSIP.pm: commandref update

55_MiniSIP.pm: commandref update

Source: Revision 31301: 55_MiniSIP.pm: commandref update
#92
DOIF / Aw: DOIF reagiert verzögert au...
Letzter Beitrag von Damian - 27 Mai 2026, 12:39:02
Du hast or-Bedingungen. e_Quadbox_STATE off reicht nicht, wenn Bewohner_STATE present gilt. Da musst du noch mal über deine Bedingung nachdenken.
#93
DOIF / Aw: DOIF reagiert verzögert au...
Letzter Beitrag von satprofi - 27 Mai 2026, 12:30:13
warum schaltet er nicht verzögert aus ? bis vor einfügen des {anwesend_off} klappte es ja.
#94
ESP Familie / Aw: BoseFix32 — lokaler SoundT...
Letzter Beitrag von fred_feuerstein - 27 Mai 2026, 12:13:01
Hallo Dirk,

Update erfolgreich :)

Habe gerade mal mit einem Lautsprecher Spotify getestet. Das klappt soweit. Konnte eine Playlist testweise erfolgreich in die Library einfügen und dann sowohl per Drag/Drop oder Long-Press auf eine Preset-Taste entsprechend auf der Box speichern.
Hier ist auch interessant, dass man diese "laufende" Spotify Playlist/Song/Album dann in fhem wieder auf die Speicher 7 - 20 speichern kann. Auch das funktioniert prima.
Dann diese Box mal rebootet. In SixBack musste ich nichts machen. Nur in der Spotify App kam eine Meldung, ob der Lautsprecher wieder verbunden werden soll (oder so ähnlich). Die Speicher waren noch belegt und auch der test-Channel Nr. 7 in fhem konnte einfach wieder abgespielt werden.
Das genaue Handling etc. muss ich mir nochmal genauer anschauen. Aber es funktioniert erstmal ! Super.

Ansonsten das generelle Handling im WebIf von SixBack. Hier und da kommen als Einblendung rechts unten in rot Fehlermeldungen (diverse, bsp beim Setzen eines Presets: "Set failed: NVS save failed (partition full/fragmented) — try POST /api/nvs/cleanup"). Meist muss man mal entweder die komplette Seite aktualisieren oder oben auf Refresh Status gehen. Teilweise kommt es vor, dass man nach Drag/Drop bspw. eines Radiosenders das Ergebnis nicht direkt auf der Speichertaste sieht (also diese Ansicht: alt / neu, wo man dann pushen kann). Auch hier muss man manchmal einfach mal einen Reload der Seite oder Refresh-Status machen.

Andere Dingen funktionieren denke ich soweit.

Hier noch ein paar Fragen:
Nochmal wegen DLNA. Klar, über die Leiste Links kann man noch nicht Browsen. Soweit verstanden, auch dass das ein separates Projekt wird. Aber Du meintest, man könnte das manuell irgendwie machen:
- wie kann ich bei einer "neuen" Box, wo die STORAGE_MUSIC noch fehlt, die Quelle setzen? (ich mache das aktuell über das Einspielen der Sources.xml einer eingerichtete Box über USB)
- Wie kann ich über SixBack aktuell eine Audioquelle (mp3 oder Internetradio etc.) vom Medienserver als Preset setzen? Oder geht das noch gar nicht (also er zeigt gespeicherte Presets von einer Box an, kann aber noch gar keine selbst setzen).


Aktuell teste ich von meinen 9 Geräten mit 2 Boxen das SixBack Handling (migriert). Wenn ich das mit dem Setzen von DLNA Inhalten noch irgendwie hinbekomme, dann kann ich eigentlich komplett alle Lautsprecher auf SixBack migrieren.
Aber kann es sein, dass man anfangs die Lautsprecher wieder auf "original" zurücksetzen konnte und das aktuell in SixBack nicht mehr per "Knopf" geht?
#95
FHEMWEB / Timeout bei umfangreicher SVG ...
Letzter Beitrag von quartz - 27 Mai 2026, 11:43:52
Ich habe ein Problem "mit Timeouts", dass ich hier darstellen möchte und das ich mit zwei "Hacks" in Perl "abgemildert" und schließlich tatsächlich über eine einzeilige Anpassung in 01_FHEMWEB.pm beheben konnte.

Zum Problem:
Bei der Abfrage eines SVG Plot's bekomme ich Timeouts. Log Datei ist ca. 7 MB mit ca. 140.000 Zeilen, davon etwa 26.000 Zeilen relevant.
Bei den ersten Analyse-Versuchen mit curl habe ich nach ca. 90 Sekunden trotz --max-time 3600 --speed-limit 1 --speed-time 3000 den Fehler curl: (52) Empty reply from server bekommen. Ich hatte es ursprünglich als eigenes Problem meiner Umgebung erachtet, denn mit dem Browser FireFox dauert es länger. Die Erhöhung von network.http.response.timeout auf 1800 Sekunden führt trotzdem (nach ca. 20 Minuten) auch im Browser zum Fehler Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde.: Das Diagramm wird einfach nicht erzeugt.

Eine genauere Analyse mit Wireshark ergab, dass tatsächlich von *FHEM* die Verbindung abgebaut wurde. Der Browser hat das auch erkannt und die Anfrage nach ca. 2 Minuten / alle 2 Minuten einfach erneut gesendet: Vmtl. das Problem von https://heinz-otto.blogspot.com/2015/03/browser-timeout-und-fhem.html / http://forum.fhem.de/index.php/topic,28511.msg213591.html#msg213591.

Zu Timeouts habe ich nichts rechtes im Forum gefunden, im Log bei normaler Einstellung verbose=3) war auch nichts erkennbar. Mit verbose=5 taucht ein sehr unscheinbares Closing inactive connection WEB_127.0.0.1_48334 auf: Demnach wird in FW_closeInactiveClients im Modul 01_FHEMWEB.pm die Verbindung geschlossen, die eigentlich auf Daten warten würde / zu sendende Daten hat.

Es scheint also ein Problem zu geben: Wenn die Antwort zu lange dauert, wird der Socket noch vor der Rückmeldung geschlossen.

Über das Forum bin ich darauf gestoßen, dass
  • evtl. schon die Werte "dünner" hätten sein sollen: Ich hatte die Werte periodisch eingerichtet, damit ich einen Anhaltspunkt habe, wenn Werte "fehlen" und diese nicht nur bei Änderung gespeichert, außerdem habe ich ein paar Werte mehr erfasst, als ich aktuell auswerte.
  • evtl. DBLog besser wäre - vgl. auch jahresübergreifende Logs
  • evtl. LogProxy auch noch einen Versuch wert wäre
  • es auch Caching gibt - was aber hier nichts brachte, da das Diagramm nie komplett erstellt werden konnte

Auch ist mir klar, dass ein Pi Zero Leistungsgrenzen hat.

Ursprünglich habe ich versucht, die Antwortzeit zu reduzieren. Vielleicht hilft es ja mal irgendwem, daher habe ich das im nachfolgenden Teil 1 skizziert:

Lösungsteil 1:

Ich wollte das Problem der Laufzeit besser verstehen und habe mich dazu etwas im Code umgesehen. Im Modul 98-SVG.pm über SVG_getData bin ich darauf gestoßen, dass wohl FileLog_Get aus 92_FileLog.pm aufgerufen wird.

Darin ist der Zweig sichtbar, in dem ggf. eine temporäre Datei (bei Dateiwechsel mit createGluedFile=1) erzeugt wird. Das hat mich auf die folgende Idee gebracht:

Work-Around Idee:
Ich wollte prüfen, ob der Timeout verschwindet, wenn ich die Log-Daten "verkleinere": Dazu wollte ich die Daten per grep über eine (neue) temporäre Datei "vorfiltern".

Tatsächlich hat das funktioniert, die Verarbeitung war erheblich schneller. Nachteilig wäre - gerade bei kleinen Systemen mit SD oder USB-Speicher - die Schreiblast. Daher habe ich mich an einer "Abwandlung" mit Pipe versucht, die als Proof of Concept funktioniert. Allerdings habe ich für den "RESCAN"-Fall wieder die Datei geöffnet. Es ist ein bisschen ein Hack...

Work-Around:
Für das Filtern benötige ich die regulären Ausdrücke "column_specs". Ich erstelle mir daraus einen Suchstring der ein paar Sonderfälle escaped/quoted und das (mir unverständliche) \\x3a entfernt:
  my $eFun = sub {  my ($s) = @_;  $s =~ s/\\/\\\\/g; $s =~ s/\\\\x3a//g; $s =~ s/"/\\"/g; $s; };
  my $grpStr = join "|", map { $eFun->($_->{re}) } grep { defined $_->{re} } @d;

Danach lege ich den Input File Handle auf eine Pipe um:
  $ifh->close() if($ifh);
  open($ifh, "grep -E \"" . $grpStr . "\" " . $inf . " |");
  binmode($ifh, ":encoding(UTF-8)") if($ifh && $unicodeEncoding);

Falls das goto RESCAN zum Zuge kommt, schließe ich den Handle und öffne wieder die "original" Datei. Für meinen einfachen Testfall war das ausreichend (bzw. wurde nicht durchlaufen). Eine Erweiterung auf mehrere Eingabedateien (ohne "Glue" Attribut) wäre recht überschaubar.

Der Ansatz mit der externen Abhängigkeit zu grep (Plattformneutralität!) ist aber von vorn herein nicht ideal (eben "Hack").

Allerdings ist die Laufzeit damit soweit gesunken, dass ich keinen Timeout mehr hatte.

Lösungsteil 2:

Das eigentliche Problem ist, dass die Verbindung geschlossen wird, obwohl sie noch wartet / Daten zu senden hätte. Mein "Hack" hat dazu in FW_closeInactiveClients einfach die Zeitdifferenz zum letzten Zugriff von "60" auf "300" erhöht. Damit ist das Problem auch "umgangen".
Vielleicht könnte es für Fehlersuche hilfreich sein, wenn man das parametrisieren könnte.

Schließlich noch meine Lösung:

Die Verbindung wird abgebaut, wenn eigentlich Daten zurückgegeben werden sollen. Daher habe ich die LASTACCESS Zeit aktualisiert, wenn Daten in FW_addToWritebuffergeschrieben werden. Dazu habe ich in der Funktion am Ende ergänzt:
$hash->{LASTACCESS} = time();
Damit funktioniert es jetzt auch ohne die anderen Work-Arounds, selbst wenn ich mit einem Sleep die Dauer sehr ausdehne.
#96
Homematic / Aw: Frage zum HM-ES-TX-WM, Bat...
Letzter Beitrag von noansi - 27 Mai 2026, 11:42:09
PowerOn wird nur erkannt, wenn
- eine entsprechende message empfangen wurde
- eine Zählerstandsmessage mit message counter < 3 und Zählerstand 0 empfangen wurde
- beim Batteriewechsel die Versorgungspannung über Pufferelkos so weit abgesunken ist, dass das device einen Reset ausführt und damit "PowerOn" überhaupt eingetreten ist

Ich vermute letzteres ist durch zu schnellen Batteriewechsel nicht eingetreten. Und damit wurde PowerOn nicht erkannt.

Also Batterie nochmal raus, mindestens 20s warten und Batterie wieder rein. Schauen, was sich tut, eventuell noch länger warten vor erneutem einlegen der Batterie.

battery? Steckt wohl in Ack_Status oder Info_status message. Wie bei dem device auszulösen, weiss ich nicht.
#97
DOIF / Aw: DOIF reagiert verzögert au...
Letzter Beitrag von Damian - 27 Mai 2026, 11:35:41
ja, das Beispiel sollte aber das Fehlverhalten demonstrieren.

Wo siehst du das Problem im zweiten Beispiel?


Ich kann auch dort kein Fehlverhalten sehen.
#98
DOIF / Aw: DOIF reagiert verzögert au...
Letzter Beitrag von satprofi - 27 Mai 2026, 11:28:25
Zitat von: Damian am 27 Mai 2026, 10:32:12Zeitpunkte werden normalerweise auch nicht verzögert.

siehe: https://fhem.de/commandref_DE.html#DOIF_timerWithWait


das war ja nur beispiel. bei diesem hier ist es mir aufgefallen, nachdem ich Ergänzung hinzugefügt hatte

DEF        (([Bewohner] eq "present" and ([08:00-21:00] or [20:00])) or (([Quadbox] eq "on" or [VSX1131:stateAV] eq "on") and [19:00-08:00]) or [FS20_7010f0] eq "on") (set tuya_smartlife_bffee61d5656c19f0e6zas on)
DOELSE (({anwesend_off}) , (set tuya_smartlife_bfb727311ed41a0cc8ycsq off))
   FUUID      65cf39e1-f33f-3579-8889-597fdac1da3b48f3
   FVERSION   98_DOIF.pm:0.277400/2023-07-10
   MODEL      FHEM
   NAME       Anwesend
   NOTIFYDEV  global,Bewohner,Quadbox,FS20_7010f0,VSX1131
   NR         489
   NTFY_ORDER 50-Anwesend
   STATE      cmd_1
   TYPE       DOIF
   VERSION    27740 2023-07-10 09:31:11
   eventCount 86
   READINGS:
     2026-05-27 11:25:06   Device          Bewohner
     2026-05-27 10:45:04   cmd             1
     2026-05-27 10:45:04   cmd_event       Bewohner
     2026-05-27 10:45:04   cmd_nr          1
     2026-05-27 11:25:06   e_Bewohner_STATE present
     2026-05-27 11:25:06   e_Quadbox_STATE off
     2026-05-27 10:44:48   mode            enabled
     2026-05-27 10:45:04   state           cmd_1
     2026-05-27 10:44:48   timer_01_c01    28.05.2026 08:00:00
     2026-05-27 10:44:48   timer_02_c01    27.05.2026 21:00:00
     2026-05-27 10:44:48   timer_03_c01    27.05.2026 20:00:00
     2026-05-27 10:44:48   timer_04_c01    27.05.2026 19:00:00
     2026-05-27 10:44:48   timer_05_c01    28.05.2026 08:00:00
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Bewohner:
         0:
           &STATE     ^Bewohner$
       FS20_7010f0:
         0:
           &STATE     ^FS20_7010f0$
       Quadbox:
         0:
           &STATE     ^Quadbox$
       VSX1131:
         0:
           stateAV    ^VSX1131$:^stateAV:
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         5
         300
     waitdel:
   condition:
     0          (::InternalDoIf($hash,'Bewohner','STATE') eq "present" and (::DOIF_time($hash,0,1,$wday,$hms) or ::DOIF_time_once($hash,2,$wday))) or ((::InternalDoIf($hash,'Quadbox','STATE') eq "on" or ::ReadingValDoIf($hash,'VSX1131','stateAV') eq "on") and ::DOIF_time($hash,3,4,$wday,$hms)) or ::InternalDoIf($hash,'FS20_7010f0','STATE') eq "on"
   days:
   devices:
   do:
     0:
       0          set tuya_smartlife_bffee61d5656c19f0e6zas on
     1:
       0          ({anwesend_off}) , (set tuya_smartlife_bfb727311ed41a0cc8ycsq countdown_usb1 300)
   helper:
     NOTIFYDEV  global,Bewohner,Quadbox,FS20_7010f0,VSX1131
     event      present
     globalinit 1
     last_timer 5
     sleeptimer -1
     timerdev   Bewohner
     timerevent present
     triggerDev Bewohner
     timerevents:
       present
     timereventsState:
       state: present
     triggerEvents:
       present
     triggerEventsState:
       state: present
   internals:
     all         Bewohner:STATE Quadbox:STATE FS20_7010f0:STATE
   interval:
     0          -1
     1          0
     3          -1
     4          3
   intervalfunc:
   localtime:
     0          1779948000
     1          1779908400
     2          1779904800
     3          1779901200
     4          1779948000
   readings:
     all         VSX1131:stateAV
   realtime:
     0          08:00:00
     1          21:00:00
     2          20:00:00
     3          19:00:00
     4          08:00:00
   time:
     0          08:00:00
     1          21:00:00
     2          20:00:00
     3          19:00:00
     4          08:00:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          0
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0  1  2  3  4
   trigger:
   triggertime:
     1779901200:
       localtime  1779901200
       hash:
     1779904800:
       localtime  1779904800
       hash:
     1779908400:
       localtime  1779908400
       hash:
     1779948000:
       localtime  1779948000
       hash:
   uiState:
   uiTable:
Attributes:
   group      Beleuchtung
   room       DOIF
   wait       0:5,300
#99
DOIF / Aw: DOIF reagiert verzögert au...
Letzter Beitrag von Damian - 27 Mai 2026, 10:32:12
Zeitpunkte werden normalerweise auch nicht verzögert.

siehe: https://fhem.de/commandref_DE.html#DOIF_timerWithWait

#100
DOIF / Aw: DOIF reagiert verzögert au...
Letzter Beitrag von satprofi - 27 Mai 2026, 10:12:07
CFGFN     
   DEF        ([08:00]) (set MQTT2_DVES_8AF3E9 on)
DOELSEIF ([09:33]) (set MQTT2_DVES_8AF3E9 off)
   FUUID      6a169543-f33f-3579-c9d9-f42b692f544c391a
   MODEL      FHEM
   NAME       Licht_test
   NOTIFYDEV  global
   NR         1012
   NTFY_ORDER 50-Licht_test
   STATE      cmd_1
   TYPE       DOIF
   VERSION    27740 2023-07-10 09:31:11
   eventCount 25
   READINGS:
     2026-05-27 09:33:30   cmd             1
     2026-05-27 09:33:30   cmd_event       set_cmd_1
     2026-05-27 09:33:30   cmd_nr          1
     2026-05-27 09:32:25   mode            enabled
     2026-05-27 09:33:30   state           cmd_1
     2026-05-27 09:32:25   timer_01_c01    28.05.2026 08:00:00
     2026-05-27 09:33:00   timer_02_c02    28.05.2026 09:33:00
VERSION    27740 2023-07-10 09:31:11
   eventCount 25
   READINGS:
     2026-05-27 09:33:30   cmd             1
     2026-05-27 09:33:30   cmd_event       set_cmd_1
     2026-05-27 09:33:30   cmd_nr          1
     2026-05-27 09:32:25   mode            enabled
     2026-05-27 09:33:30   state           cmd_1
     2026-05-27 09:32:25   timer_01_c01    28.05.2026 08:00:00
     2026-05-27 09:33:00   timer_02_c02    28.05.2026 09:33:00
   Regex:
     accu:
     bar:
     barAvg:
     collect:
   attr:
     cmdState:
     wait:
       0:
         10
       1:
         60
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
     1          ::DOIF_time_once($hash,1,$wday)
   days:
   do:
     0:
       0          set MQTT2_DVES_8AF3E9 on
     1:
       0          set MQTT2_DVES_8AF3E9 off
     2:
   helper:
     NOTIFYDEV  global
     event      timer_2
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   
     timerevent timer_2
     triggerDev
     DOIF_eventa:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_cmd_1
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_cmd_1
       state: cmd_1
     timerevents:
       timer_2
     timereventsState:
       timer_2
     triggerEvents:
       timer_2
     triggerEventsState:
       timer_2
   interval:
   intervalfunc:
   localtime:
     0          1779948000
     1          1779953580
   realtime:
     0          08:00:00
     1          09:33:00
   time:
     0          08:00:00
     1          09:33:00
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   triggertime:
     1779948000:
       localtime  1779948000
       hash:
     1779953580:
       localtime  1779953580
       hash:
   uiState:
   uiTable:
Attributes:
   room       test
   wait       10:60

hier , ein test. schlatet sofort,nix verzögert