Fhem/Perl-Funktion "Zählewenn" gesucht

Begonnen von Marko1976, 27 Juli 2025, 15:47:06

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Zitat von: Marko1976 am 31 Juli 2025, 11:53:55JEDER versteht unter "dauerhaft aktuell" nicht Nullzeit sondern einfach umgehend danach.
Das ist wieder einmal falsch, denn "umgehend" ist in der Informatik ein sinnloser Begriff.

Zitat von: Marko1976 am 29 Juli 2025, 00:08:02Wenn man einen Fehler findet, einfach mal überlesen und man hat viel mehr Freu(n)de.
Die angebrachte Korrektur bezieht sich nicht auf einen Tippfehler, oder einen Zeichensetzungsfehler - vor mir aus auch bei "Gedankenstrichen"  ;D . Sondern auf die Verwendung eines fehlerhaften technischen Begriffs "Stati".

Das Forum, das Wiki und die Commandref sind technische Dokumentationen. Jeder IT-Profi kennt das aus seiner Praxis: technische Dokumentationen erfordern normierte Sprache. Größere IT-Unternehmen beschäftigen deshalb Technische Redakteure (mit großem "T"), deren Aufgabe auch die Sprachnormierung ist.

LG

pah

P.S.: Wenn der TE "Freunde" sucht, sollte er sich auf einem Dating-Portal umsehen. Quisquis correctionibus contumeliis respondet, in schola attendit non.


Marko1976

@Prof. Dr. Peter Henning

Witzig, wirklich witzig - denn ich bin seit über 20 Jahren gelernter Technischer Redakteur (Tekom). Falls Ihnen die Ergänzung etwas sagt. Wenn Sie wollen, hänge ich gerne das entsprechende Zertifikat hier als Screenshot an.

Und ja, Technische Dokumentationen sollten klar, eindeutig und selbsterklärend sein.
Sie sollten auf jeden Fall aber VERSTÄNDLICH sein.

Technische Dokumentationen geben in einer Schritt für Schritt Anleitung alles wieder, was und wie der Anwender zu tun und wichtiger noch zu lassen hat. Besonderer Wert wird dabei auf Eindeutigkeit gelegt, wie zb. ein "Sie MÜSSEN  " statt einem "Sie KÖNNEN...". Es wird selbst auf die kleinste Aktion verwiesen - und wenn es nur das festziehen einer Schraube dem Drücken der Enter-Taste ist. Eine derartige Präzision und Anleitung ist hier in keinem einzigen Text der Fall - muss es auch gar nicht, denn wie eben gesagt handelt es sich hier um ein FORUM und keine Technische Dokumentation.
Ein Forum ist eine Plattform in der man sich trifft, gegenseitig hilft und Wissen austauscht. Es basiert auf Augenhöhe und Gleichberechtigung. Nicht Besserwisserei und Klübchenbildung. Also all das was Sie eben nicht verkörpern.

Abgesehen davon sind die wenigsten Leser einer technischen Dokumentation Technische oder gar geschulte Anwender, es sind einfach stink normale Menschen. Deshalb werden Technische Dokumentationen inzwischen in Easy Speak und mehr bebildert als mit Text gefüllt geschrieben. Sie wissen was Easy Speak bedeutet?

Beispiel:
"Umgehend" ist in der Informatik sicher ein sinnloser Begriff, das stimmt - aber es ist ein Begriff den JEDER Mensch versteht und sich darunter etwas vorstellen kann.
Mal davon abgesehen, dass die User hier in den wenigsten Fällen IT-Fachleute sind, ist Fhem KEIN IT-Unternehmen und Sie, guter Mann, haben NULL Ahnung wie eine technische Dokumentation wirklich aussieht. Sie leben in Ihrer kleinen IT-Blase und bilden sich ein, dass so die ganze Welt aussieht. Kleiner Hinweis - dem ist nicht so.

Damian

Zitat von: Marko1976 am 31 Juli 2025, 11:53:55Ich habe wie gesagt ein DOIF erstellt bei dem mit "event reading" auch die Summe erstellt wird. Allerdings habe ich jetzt bemerkt, dass dies nur erfolgt wenn das Dev des DOIF's geändert wird und nicht wenn das DOIF getriggertoder ein Fall ausgelöst wird. Das Attribut Always steht schon auf Do. Mehr fällt mir aktuell leider nicht ein.

Es kommt drauf an wie du es getestet hast. In 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_.*".

Für eine genauere Analyse poste mal das Event, welches nicht zur Berechnung des Eventreadings führt.

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

Prof. Dr. Peter Henning

Zitat von: Marko1976 am 01 August 2025, 11:31:55Sie leben in Ihrer kleinen IT-Blase

Udo, kannst Du mir etwas Popcorn abgeben? Ich kann gerade nicht aus meiner Blase raus.

LG

pah

Marko1976

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.

TomLee

Zitat von: Prof. Dr. Peter Henning am 01 August 2025, 09:53:36...

Das Forum, das Wiki und die Commandref sind technische Dokumentationen. ...

Das Forum versteht sich definitiv nicht als technische Dokumentation – und das ist auch gut so. Es lebt vom Dialog, vom Teilen von Erfahrungen und von Fragen, die oft über die reine Dokumentation hinausgehen.


betateilchen

Zitat von: Prof. Dr. Peter Henning am 01 August 2025, 17:51:39Udo, kannst Du mir etwas Popcorn abgeben?

Klar, die Vorräte sind nahezu unerschöpflich 😀
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Thema gesperrt.

https://de.wikipedia.org/wiki/Abklingbecken

Ich hoffe auf eine kurze Halbwertszeit - dann öffne ich das Thema wieder für on-topic-Diskussion.

Achso, und übrigens, Moderatorenschelte in den Meldungen der Beiträge ist wohlfeil, aber wir machen das alles hier freiwillig neben unserem Erwerbs-, Familien-, FHEM- und sonstigen Leben. Also bitte nachsichtig sein oder noch besser selber mitmachen!
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!