Fhem/Perl-Funktion "Zählewenn" gesucht (2)

Begonnen von Damian, 01 August 2025, 21:43:00

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Marko1976 am 01 August 2025, 20:23:44
Zitat von: Damian am 01 August 2025, 12:56:39Für eine genauere Analyse poste mal das Event, welches nicht zur Berechnung des Eventreadings führt.
2025-08-01 20:16:13.160 DOIF Hausarbeit_counter checkall
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta days: 0
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta e_Aufgabe_Fiesta_days: 0
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta counter: 1
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd_nr: 2
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd_seqnr: 1
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd: 2.1
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd_event: Aufgabe_Fiesta
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta Alert
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd_nr: 2
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd_seqnr: 2
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd: 2.2
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta cmd_event: Aufgabe_Fiesta
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta Alert
2025-08-01 20:17:03.494 DOIF Hausarbeit_counter checkall
2025-08-01 20:17:03.494 DOIF Hausarbeit_counter Hausarbeiten: 4
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld days: 0
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld e_Hausarbeit_Kochfeld_days: 0
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld counter: 1
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd_nr: 2
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd_seqnr: 1
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd: 2.1
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd_event: Hausarbeit_Kochfeld
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld Alert
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd_nr: 2
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd_seqnr: 2
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd: 2.2
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld cmd_event: Hausarbeit_Kochfeld
2025-08-01 20:17:03.503 DOIF Hausarbeit_Kochfeld Alert

List des Rechen-DOIF's:
Internals:
  CFGFN     
  DEF        (["^Hausarbeit.* Alert$"])
    ()
DOELSEIF (["^Aufgabe.* Alert$"])
    ()
  FUUID      688686c7-f33f-7706-90e1-a1f79814bc4c2d1d
  MODEL      FHEM
  NAME      Hausarbeit_counter
  NOTIFYDEV  .*(^Hausarbeit.* Alert$).*,.*(^Aufgabe_.*).*,.*(^Hausarbeit_.*).*,global,.*(^Aufgabe.* Alert$).*
  NR        75618
  NTFY_ORDER 50-Aufgabencounter
  STATE      4 / 0
  TYPE      DOIF
  VERSION    29460 2024-12-29 20:25:48
  eventCount 467
  OLDREADINGS:
  READINGS:
    2025-08-01 20:13:44  Aufgaben        0
    2025-08-01 20:17:03  Hausarbeiten    4
    2025-08-01 20:06:40  cmd            0
    2025-08-01 20:06:40  mode            enabled
    2025-08-01 20:06:40  state          initialized
  Regex:
    accu:
    bar:
    barAvg:
    collect:
    cond:
      :
        0:
          "^Hausarbeit.* Alert$" ^Hausarbeit.* Alert$
        1:
          "^Aufgabe.* Alert$" ^Aufgabe.* Alert$
    event_Readings:
      :
        Aufgaben:
          "^Aufgabe_.*" ^Aufgabe_.*
        Hausarbeiten:
          "^Hausarbeit_.*" ^Hausarbeit_.*
  attr:
    cmdState:
    wait:
    waitdel:
  condition:
    0          ::EventDoIf('^Hausarbeit.* Alert$',$hash,'',0)
    1          ::EventDoIf('^Aufgabe.* Alert$',$hash,'',0)
  do:
    0:
      0         
    1:
      0         
    2:
  event_Readings:
    Aufgaben  ::AggregateDoIf($hash,'#sum:a:','^Aufgabe_.*','counter')
    Hausarbeiten ::AggregateDoIf($hash,'#sum:a:','^Hausarbeit_.*','counter')
  helper:
    NOTIFYDEV  .*(^Hausarbeit.* Alert$).*,.*(^Aufgabe_.*).*,.*(^Hausarbeit_.*).*,global,.*(^Aufgabe.* Alert$).*
    event      checkall
    globalinit 1
    last_timer 0
    sleeptimer -1
    triggerDev Hausarbeit_counter
    triggerEvents:
      checkall
      Hausarbeiten: 4
    triggerEventsState:
      checkall
      Hausarbeiten: 4
  uiState:
  uiTable:
Attributes:
  alias      Zähler für Hausarbeiten
  do        always
  event-on-change-reading .*
  event_Readings Hausarbeiten:[#sum:a:"^Hausarbeit_.*":counter],
Aufgaben:[#sum:a:"^Aufgabe_.*":counter],
  room      Dummy
  stateFormat Hausarbeiten / Aufgaben
  timestamp-on-change-reading .*
  verbose    5

Ich habe in dem DOIF in dem gerechnet wird noch die zweite Gruppe (Aufgabe) hinzugefügt und sowohl für die Hausarbeiten als auch die Aufgabe jeweils ein Event ausgelöst wie es auch von der automatik passieren würde. Interessanterweise funktoniert es bei den Hausarbeiten mit dem Checkall, bei den Aufgaben nicht mal das.
Habe auch noch mal ein aktualisiertes List des Rechen-DOIF's angehangen.

Vielleicht kann ja hier jemand was daraus herauslesen.

So wie ich das commandref zu den eventReadings verstehe, erfolgt die Berechnung automatisch sobald eines der überwachten Devices/Readings sich ändert, egal was im DEF steht oder ob das DOIF irgendwie getriggert wird.


Warum reagieren die anderen DOIF-Devices auf Checkall DOIF-Device Hausarbeit_counter? Hier gibt es offenbar Abhängigkeiten, die ich nicht kenne.

Ich habe Folgendes definiert:


defmod Aufgabe_Fiesta dummy

setstate Aufgabe_Fiesta 2025-08-01 21:25:59 counter 2

und

defmod aggregat DOIF (["^Aufgabe_.*"])
attr aggregat event-on-change-reading .*
attr aggregat event_Readings Hausarbeiten:[#sum:a:"^Hausarbeit_.*":counter],\
Aufgaben:[#sum:a:"^Aufgabe_.*":counter],

setstate aggregat cmd_2
setstate aggregat 2025-08-01 21:25:59 Aufgaben 2
setstate aggregat 2025-08-01 21:25:59 Device Aufgabe_Fiesta
setstate aggregat 2025-08-01 21:24:36 Hausarbeiten 0
setstate aggregat 2025-08-01 21:30:14 cmd 2
setstate aggregat 2025-08-01 21:30:14 cmd_event aggregat
setstate aggregat 2025-08-01 21:30:14 cmd_nr 2
setstate aggregat 2025-08-01 21:24:36 mode enabled
setstate aggregat 2025-08-01 21:30:14 state cmd_2


Ein "setreading Aufgabe_Fiesta counter 2" führt zum obigen Ergebnis. Es funktioniert bei mir, wie programmiert.

Übrigens .* kann man sich am Ende einer Regex-Angabe im DOIF sparen.

PS. Offtopic-Posts werden in diesem Thread von mir sofort gelöscht.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Marko1976

Zitat von: Damian am 01 August 2025, 21:43:00Offtopic-Posts werden in diesem Thread von mir sofort gelöscht.
Dafür wäre ich dankbar, das verhindert jede Menge Ärger. Die zwei verfolgen mich regelrecht und tauchen früher oder später in allen meinen Beiträgen auf.

Zitat von: Damian am 01 August 2025, 21:43:00defmod Aufgabe_Fiesta dummy
Da habe ich ehrlich gesagt ein Problem mit, da von der Definition als DOIF andere Sachen abhängen. Es wird ja z.B. abhängig vom Reading days der Fall und damit der STATE unterschieden. Mir ist nicht bekannt, dass etwas ähnliches mit einem Dummy funktionieren würde ohne wieder ein zusätzliches notify zu nutzen.

Was mich wundert ist der Punkt, dass mein Counter-Device, was ja per eventReading lediglich die Summe aller counter-Readings der Hausarbeiten/Aufgaben-Devices berechnen soll, diese Berechnung nicht durchführt bzw. nur ausführt wenn das DEF aktualisiert wird. Ein solches Verhalten habe ich ehrlich gesagt noch nie gesehen.
Ist es falsch, dass die Berechnung bei Änderung einer der einzelnen Quellen reagiert? Ich habe es immer so verstanden, dass wenn sich irgendein überwachtes Reading ändert, das eventReading automatisch neu berechnet wird.

Hier mal zur Vollständigkeit ein List eines der Auslöser-DOIF's (sind alle gleich, bis auf den Punkt, dass einige statt mit Hausarbeit_... mit Aufgabe_... benannt sind. Funktionsschema ist aber bei allen gleich):
Internals:
  DEF        ## Kein Alarm
([Aufgabe_Fiesta:days] > 0)
    (setreading Aufgabe_Fiesta days [settings_hausarbeit:array_autocheck_marion]) (setreading Aufgabe_Fiesta counter 0)

## Alarm
DOELSEIF ([Aufgabe_Fiesta:days] eq 0)
    (setreading Aufgabe_Fiesta counter 1) (set Hausarbeit_counter checkall)

## Überfällig
DOELSEIF ([Aufgabe_Fiesta:days] < [settings_hausarbeit:array_autocheck_marion_overdue])
    (setreading Aufgabe_Fiesta counter 1)
  FUUID      687b7cb5-f33f-7706-71d4-0827295c0b1526b5
  FVERSION  98_DOIF.pm:0.294600/2024-12-29
  MODEL      FHEM
  NAME      Aufgabe_Fiesta
  NOTIFYDEV  global,settings_hausarbeit,Aufgabe_Fiesta
  NR        569
  NTFY_ORDER 50-Hausarbeit_Fiesta
  STATE      Alert
  TYPE      DOIF
  VERSION    29460 2024-12-29 20:25:48
  eventCount 38
  READINGS:
    2025-08-01 20:41:48  cmd            2.2
    2025-08-01 20:41:48  cmd_event      Aufgabe_Fiesta
    2025-08-01 20:41:48  cmd_nr          2
    2025-08-01 20:41:48  cmd_seqnr      2
    2025-08-01 20:41:48  counter        1
    2025-08-01 20:41:48  days            0
    2025-08-01 20:41:48  e_Aufgabe_Fiesta_days 0
    2025-08-01 19:47:31  mode            enabled
    2025-08-01 20:41:48  state          Alert
  Regex:
    accu:
    bar:
    barAvg:
    collect:
    cond:
      Aufgabe_Fiesta:
        0:
          days      ^Aufgabe_Fiesta$:^days:
        1:
          days      ^Aufgabe_Fiesta$:^days:
        2:
          days      ^Aufgabe_Fiesta$:^days:
      settings_hausarbeit:
        2:
          array_autocheck_marion_overdue ^settings_hausarbeit$:^array_autocheck_marion_overdue:
  attr:
    cmdState:
      0:
        None
      1:
        Alert
      2:
        Priority
    wait:
    waitdel:
  condition:
    0          ::ReadingValDoIf($hash,'Aufgabe_Fiesta','days') > 0
    1          ::ReadingValDoIf($hash,'Aufgabe_Fiesta','days') eq 0
    2          ::ReadingValDoIf($hash,'Aufgabe_Fiesta','days') < ::ReadingValDoIf($hash,'settings_hausarbeit','array_autocheck_marion_overdue')
  do:
    0:
      0          setreading Aufgabe_Fiesta days [settings_hausarbeit:array_autocheck_marion]
      1          setreading Aufgabe_Fiesta counter 0
    1:
      0          setreading Aufgabe_Fiesta counter 1
      1          set Hausarbeit_counter checkall
    2:
      0          setreading Aufgabe_Fiesta counter 1
    3:
  helper:
    NOTIFYDEV  global,settings_hausarbeit,Aufgabe_Fiesta
    event      days: 0
    globalinit 1
    last_timer 0
    sleeptimer -1
    timerdev  Aufgabe_Fiesta
    timerevent days: 0
    triggerDev Aufgabe_Fiesta
    timerevents:
      days: 0
      e_Aufgabe_Fiesta_days: 0
      counter: 1
      cmd_nr: 2
      cmd_seqnr: 1
      cmd: 2.1
      cmd_event: Aufgabe_Fiesta
      Alert
      cmd_nr: 2
      cmd_seqnr: 2
      cmd: 2.2
      cmd_event: Aufgabe_Fiesta
      Alert
    timereventsState:
      days: 0
      e_Aufgabe_Fiesta_days: 0
      counter: 1
      cmd_nr: 2
      cmd_seqnr: 1
      cmd: 2.1
      cmd_event: Aufgabe_Fiesta
      Alert
      cmd_nr: 2
      cmd_seqnr: 2
      cmd: 2.2
      cmd_event: Aufgabe_Fiesta
      Alert
    triggerEvents:
      days: 0
      e_Aufgabe_Fiesta_days: 0
      counter: 1
      cmd_nr: 2
      cmd_seqnr: 1
      cmd: 2.1
      cmd_event: Aufgabe_Fiesta
      Alert
      cmd_nr: 2
      cmd_seqnr: 2
      cmd: 2.2
      cmd_event: Aufgabe_Fiesta
      Alert
    triggerEventsState:
      days: 0
      e_Aufgabe_Fiesta_days: 0
      counter: 1
      cmd_nr: 2
      cmd_seqnr: 1
      cmd: 2.1
      cmd_event: Aufgabe_Fiesta
      Alert
      cmd_nr: 2
      cmd_seqnr: 2
      cmd: 2.2
      cmd_event: Aufgabe_Fiesta
      Alert
  internals:
  readings:
    all        Aufgabe_Fiesta:days settings_hausarbeit:array_autocheck_marion_overdue
  trigger:
  uiState:
  uiTable:
Attributes:
  alias      Wartung Fiesta
  cmdState  None|Alert|Priority
  group      Aufgaben
  room      Steuerung->Hausarbeiten
  verbose    0


Ich kann ehrlicherweise auch nie auseinanderhalten ob es sich um ein Fhem-DOIF handelt oder ein Perl-DOIF bzw. wann das Device dazwischen wechselt. Hatte schon häufiger Probleme das die Perl-Variante nicht funktionierte und es dann als neues Fhem-DOIF-Device lief. Gibt es da eine eindeutige Erkennbarkeit?

Damian

#2
Ich gehe davon aus, dass du dir Schleifen/Rekursionen eingebaut hast. So etwas wird vom FHEM-System unterbunden bevor es zu einer Endlosschleife wird.

([Aufgabe_Fiesta:days] > 0)
    (setreading Aufgabe_Fiesta days [settings_hausarbeit:array_autocheck_marion]) (setreading Aufgabe_Fiesta counter 0)


Hier reagierst du auf ein Reading "days", welches du selbst setzt - das kann nicht gutgehen. So etwas kann auch über mehrere DOIF passieren:

DOIF1 triggert DOIF2 triggert DOIF1

Das musst du verhindern. Ob man in einem dummy ein counter-Reading setzt oder in einem DOIF ist hier unerheblich. Wichtig ist nur, dass es immer nur in eine Richtung geht und keine Schleife entsteht, sprich dein Hausarbeit_counter-Device darf auf andere DOIF-Devices reagieren, diese dürfen aber nicht direkt oder indirekt auf Änderungen von Hausarbeit_counter-Device regieren.

In welchem DOIF-Modus sich ein DOIF-Device befindet siehst du am Internal Model, die Syntax ist unterschiedlich und in der Dokumentation genau beschrieben.

Du kannst dein Hausarbeit_counter-Device erst mal mit einem dummy-Device testen und dann Schritt für Schritt das Problem einkreisen. Dass es grundsätzlich funktioniert habe ich bei mir ja gezeigt.


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Marko1976

Also die DOIF's für die Aufgaben werden lediglich durch das Reading days getriggert, welches wiederrum einfach nur in myUtils99 für jedes Device jeden Tag um Mitternacht um eins heruntergezählt wird. Eine andere Triggerung ist ausgeschlossen - außer zu manuellen Testzwecken per setreading. Das counter-Device wird durch ein frei setzbare Bedingung getriggert die von mir aus rein gar nichts mit den Aufgaben zu tun haben muss.

Somit verstehe ich nicht ganz wo eine Schleife entstehene könnte. Auch wenn das mit der Schleife nachvollziehbar klingt. Es scheint, als das in diesem speziellen Fall etwas unterbunden wird, was gar nicht eintritt.

Da wie gesagt an der Definition als DOIF in den Aufgaben-Devices noch anderes hängt wie zb Auswertungen für Statistiken und Benachrichtigungen (ebenfalls DOIF's) wäre eine alternative Zählmöglichkeit in meinem Fall die sinnvollere Wahl - sofern es eine Möglichkeit gibt. Wäre dir da etwas bekannt?

Dennoch habe ich immer noch nicht verstanden wann und ob DOIF_Readings und event_Readings innerhalb eines DOIF's ausgelöst/neuberechnet werden. Muss zur Neuberechnung das DOIF selbst getriggert werden oder reicht es wenn sich eins der überwachten Readings ändert? Bitte klär mich diesbezüglich mal genauer auf, die commandref ist da für mein Verständnis zu unspezifisch - vielleicht ist da ja schon ein Denkfehler meinerseits.

passibe

#4
Zitat von: Marko1976 am 03 August 2025, 11:45:39Somit verstehe ich nicht ganz wo eine Schleife entstehene könnte.
Naja.

1a. Irgendwie wird Aufgabe_Fiesta:days > 0 getriggert.
1b. Im gleichen Atemzug setzt du Aufgabe_Fiesta:days.
2a. Dadurch wird Aufgabe_Fiesta:days > 0 getriggert.
2b. Im gleichen Atemzug setzt du Aufgabe_Fiesta:days.
3a. Dadurch wird Aufgabe_Fiesta:days > 0 getriggert.
3b. Im gleichen Atemzug setzt du Aufgabe_Fiesta:days.
4a. Dadurch wird Aufgabe_Fiesta:days > 0 getriggert.
4b. Im gleichen Atemzug setzt du Aufgabe_Fiesta:days.
...

Verstehst du, was ich meine?

---

Zitat von: Marko1976 am 03 August 2025, 11:45:39Muss zur Neuberechnung das DOIF selbst getriggert werden oder reicht es wenn sich eins der überwachten Readings ändert?
Nein! Das DOIF selbst muss nicht getriggert werden. Hatte Damian im alten Thread auch schon geschrieben (Hervorhebung hinzugefügt):

ZitatIn der Bedingung hast du einen Trigger ohne eine Ausführungsanweisung, hier: "^Hausarbeit_.* counter:.*$". Diese ist für die Triggerung und damit Berechnung der Event_Readings unerheblich. Jedes Event_Reading hat seinen eigenen Trigger. Entscheidend ist also, dass das Event zum Trigger des Event_Reading passt, hier "^Hausarbeit_.*" bzw. "^Tasks_.*".

Siehe auch mein Beispiel mit dem state-Attribut, das DEF des DOIF ist dort "leer". Hat das DOIF allein den Zweck, eine Berechnung über die Attribute state oder event_Readings oder DOIF_Readings durchzuführen, kann das DEF leer bleiben.

Damian

Im FHEM-Modus werden die eigenen Trigger im DOIF unterbunden, daher ist dieser Fall hier vermutlich nicht das Problem. Was mir allerdings vorhin aufgefallen war, war das hier:

2025-08-01 20:16:13.160 DOIF Hausarbeit_counter checkall
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta days: 0
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta e_Aufgabe_Fiesta_days: 0
2025-08-01 20:16:13.168 DOIF Aufgabe_Fiesta counter: 1

Hier hat ein checkall Hausarbeit_counter offenbar Aufgabe_Fiesta getriggert, das sollte nicht passieren. In meinem Beispiel passiert das nicht. Daher definiere mal Aufgabe_bla als dummy und schreibe "setreading Aufgabe_bla counter 10" und dann schaust du mal, ob dein Hausarbeit_counter unter Aufgaben gezählt hat. Dann schauen wir weiter.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Marko1976

@Damian
Das Checkall steht ja im Ausführungsbereich des 2. Falls (Alert) drin. Den habe ich manuell ausgelöst indem ich das Reading days mit setreading auf 0 gesetzt habe. Also im Prinzip nur immitiert was um Mitternacht automatisch ausgelöst wird wenn der Wert runtergezählt wird.

Aber dein Kommentar hat mich auf eine andere Idee gebracht.
Ich habe das Counter-DOIF aufgesplittet, also aus dem einen DOIF indem ein event_Reading für Hausarbeiten udn eins für Aufgabe existierte jeweils ein DOIF mit einem event_Reading für Hausarbeiten und ein DOIF mit einem event_Reading für Aufgaben erstellt. Siehe da, plötzlich funktionieren beide mit dem checkall-Aufruf aus den jeweiligen Hausarbeiten/Aufgaben-DOIF's.

Somit wäre das Problem theoretisch gelöst. Letzte Frage wäre ob es vielleicht besser wäre statt event_Reading DOIF_Readings zu verwenden. Das dürfte ja keinen eigenes Event erzeugen - was ich ja auch nicht brauche.

@passibe
Das ist mir schon klar, mir ist nur nicht klar was der Trigger sein könnte.
Wenn das Reading days (egal ob automatisch oder manuell) geändert wird, wird das jeweilige Hausarbeiten/Aufgaben-DOIF getriggert und der Fall entsprechend des Wertes des Readings gesetzt (>0 = Fall_1, 0-Wert x = Fall_2 und < Wert x = Fall_3 - Wert x entspricht einem berechneten Wert abhängig vom Ursprungswert).
Bei Eintritt des Fall_1 wird das Counter-DOIF per checkall getriggert.
Mehr passiert nicht, darum die Frage wo sich da eine Schleife bilden könnte.

@All
Das einzige was ich jetzt noch zusätzlich einbauen will ist ein Schalter im 99myUtils-Script um das Herunterzählen für eine bestimmte Hausarbeit/Aufgabe zu unterbinden. Aber das ist eine Schönheitskorrektur, damit es aus ftui3 besser steuerbar ist.


Damian

DOIF_Readings erzeugen keine Events nach außen, sondern triggern nur das eigene DOIF-Device.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Marko1976

Hab jetzt beide Counter-DOIF's auf DOIF_Readings umgestellt. Somit sollte das Schleifenproblem - wenn es eins gab - ja auch eleminiert sein, da es kein Event mehr gibt auf den die Ausgangsdevices reagieren könnten (wobie wie oben geschrieben mir nicht klar ist worauf das denn sein sollte).

Frage ist wohl eher warum es als ein kombiniertes DOIF nicht funktioniert und als zwei getrennte DOIF schon? Das event_Reading oder eben jetzt das DOIF_Reading ist das gleiche, nur einmal als kombi 2 Abfragen in einem DOIF ud jetzt jeweils 1 Abfrage in einem DOIF.
Wen es interessiert, hier noch mal die Lists zu den counter-DOIF's
Internals:
   CFGFN     
   DEF        (["^Hausarbeit$"])
()
   FUUID      688686c7-f33f-7706-90e1-a1f79814bc4c2d1d
   MODEL      FHEM
   NAME       Hausarbeit_counter
   NOTIFYDEV  global,.*(^Hausarbeit_.*$).*,Hausarbeit
   NR         75618
   NTFY_ORDER 50-Aufgabencounter
   STATE      2
   TYPE       DOIF
   VERSION    29460 2024-12-29 20:25:48
   eventCount 557
   DOIF_Readings:
     Hausarbeiten ::AggregateDoIf($hash,'#sum:a:','^Hausarbeit_.*$','counter')
   OLDREADINGS:
   READINGS:
     2025-08-04 10:31:11   Hausarbeiten    2
     2025-08-04 10:23:39   cmd             0
     2025-08-04 10:23:39   mode            enabled
     2025-08-04 10:23:39   state           initialized
   Regex:
     DOIF_Readings:
       :
         Hausarbeiten:
           "^Hausarbeit_.*$" ^Hausarbeit_.*$
     accu:
     bar:
     barAvg:
     collect:
     cond:
       :
         0:
           "^Hausarbeit$" ^Hausarbeit$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('^Hausarbeit$',$hash,'',0)
   do:
     0:
       0         
     1:
   helper:
     NOTIFYDEV  global,.*(^Hausarbeit_.*$).*,Hausarbeit
     event      cmd_nr: 1,cmd_seqnr: 2,cmd: 1.2,cmd_event: set_cmd_1,None
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev
     triggerEvents
     triggerEventsState
   uiState:
   uiTable:
Attributes:
   DOIF_Readings Hausarbeiten:[#sum:a:"^Hausarbeit_.*$":counter]
   alias      Zähler für Hausarbeiten
   do         always
   event-on-change-reading .*
   room       Dummy
   stateFormat Hausarbeiten
Internals:
   CFGFN     
   DEF        (["^Aufgabe$"])
()
   FUUID      68906e31-f33f-7706-3be7-703242b3e1bdf99c
   MODEL      FHEM
   NAME       Aufgabe_counter
   NOTIFYDEV  Aufgabe,global,.*(^Aufgabe_.*$).*
   NR         192859
   NTFY_ORDER 50-Aufgabe_counter
   STATE      0
   TYPE       DOIF
   VERSION    29460 2024-12-29 20:25:48
   eventCount 17
   CHANGED:
     Aufgaben: 0
   CHANGEDWITHSTATE:
     Aufgaben: 0
   DOIF_Readings:
     Aufgaben   ::AggregateDoIf($hash,'#sum:a:','^Aufgabe_.*$','counter')
   OLDREADINGS:
   READINGS:
     2025-08-04 11:00:37   Aufgaben        0
     2025-08-04 10:24:31   cmd             0
     2025-08-04 10:24:31   mode            enabled
     2025-08-04 10:24:31   state           initialized
   Regex:
     DOIF_Readings:
       :
         Aufgaben:
           "^Aufgabe_.*$" ^Aufgabe_.*$
     accu:
     bar:
     barAvg:
     collect:
     cond:
       :
         0:
           "^Aufgabe$" ^Aufgabe$
   condition:
     0          ::EventDoIf('^Aufgabe$',$hash,'',0)
   do:
     0:
       0         
     1:
   helper:
     NOTIFYDEV  Aufgabe,global,.*(^Aufgabe_.*$).*
     event      cmd_nr: 1,cmd_seqnr: 2,cmd: 1.2,cmd_event: set_cmd_1,None
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Aufgabe_Fiesta
     triggerEvents:
       cmd_nr: 1
       cmd_seqnr: 2
       cmd: 1.2
       cmd_event: set_cmd_1
       None
     triggerEventsState:
       cmd_nr: 1
       cmd_seqnr: 2
       cmd: 1.2
       cmd_event: set_cmd_1
       state: None
   uiState:
   uiTable:
Attributes:
   DOIF_Readings Aufgaben:[#sum:a:"^Aufgabe_.*$":counter]
   alias      Zähler für Aufgaben
   do         always
   event-on-change-reading .*
   room       Dummy
   stateFormat Aufgaben

Damian

Ich kann die Probleme bei mir nicht nachvollziehen. Mit dieser banalen Definition, die lediglich aus einem Attribut besteht, werden verschiedene Counter von mehreren Devices zuverlässig summiert, sobald irgendein Counter sich verändert.

defmod aggregat DOIF ##
attr aggregat event_Readings Hausarbeiten:[#sum:a:"^Hausarbeit":counter],\
Aufgaben:[#sum:a:"^Aufgabe":counter]

setstate aggregat initialized
setstate aggregat 2025-08-04 20:36:27 Aufgaben 5
setstate aggregat 2025-08-04 20:35:15 Hausarbeiten 4
setstate aggregat 2025-08-04 20:34:09 cmd 0
setstate aggregat 2025-08-04 20:34:09 mode enabled
setstate aggregat 2025-08-04 20:34:09 state initialized
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Marko1976

Keine Ahnung, wer weiß was genau los ist. Vielleicht liegt es an ganz was anderem.
Hatte schon oft beispielsweise ungewöhnliche Probleme weil ich Fhem auf einem NAS im Docker-Container betreibe statt auf einem Pi.

Lösung ist ja vorhanden, in so fern Danke für die Hilfe.
Wie gesagt will ich jetzt nur noch die automatische Zählung in der myUtils Schalterabhängig machen.