checkReadingEvent - was mache ich falsch?

Begonnen von der_oBi, 20 Oktober 2018, 23:11:53

Vorheriges Thema - Nächstes Thema

Damian

Es liegt am Attribut checkall, ich muss noch prüfen, ob es ein Bug oder ein Feature ist :)

Wozu brauchst du checkall?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der_oBi

Wie gesagt, ich weiß es nicht mehr. Die DOIFs gibts schon länger, nur die Abfrage nach dem Fensterkontakt ist relativ neu und hat mich auf den ,,Bug" aufmerksam gemacht.
Ich denke ohne checkall sollte das Verhalten erstmal wieder iO sein.
Trotzdem wäre es für das nächste Mal gut zu wissen, ob es nun ein Bug ist oder ein Feature ;-)
Laut commandref hätte ich eben ein anderes Verhalten erwartet.

Danke schonmal für deine Bemühungen. Ich hoffe du hältst uns auf dem Laufenden :-)

Damian

Zitat von: der_oBi am 22 Oktober 2018, 10:23:48
Wie gesagt, ich weiß es nicht mehr. Die DOIFs gibts schon länger, nur die Abfrage nach dem Fensterkontakt ist relativ neu und hat mich auf den ,,Bug" aufmerksam gemacht.
Ich denke ohne checkall sollte das Verhalten erstmal wieder iO sein.
Trotzdem wäre es für das nächste Mal gut zu wissen, ob es nun ein Bug ist oder ein Feature ;-)
Laut commandref hätte ich eben ein anderes Verhalten erwartet.

Danke schonmal für deine Bemühungen. Ich hoffe du hältst uns auf dem Laufenden :-)

Normalerweise braucht man checkall nicht. Es ist in diesem Falle eher ein Bug, allerdings ist die Ursache dafür etwas tiefer begraben. checkReadingEvent ist jetzt default, allerdings sind die Check-Mechanismen dazu schon ziemlich alt - sie greifen eigentlich zu spät. Die Umstellung auf effizientere Vorgehensweise (und gleichzeitig fehlerfreies Verhalten bei checkall) wird aber etwas aufwändiger und muss gut getestet sein, weil es an zentraler Stelle im Modul ist. Wenn ich eine Umstellung vorgenommen habe, werde ich das natürlich hier publik machen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der_oBi

Super, herzlichen Dank! Auch an die anderen Beteiligten.
Solange lösche ich dann mal mein checkall :-)

der_oBi

Hi Damian,

hast Du Dir das Thema mal ansehen können?
Ich bin leider diese Woche an anderer Stelle schon wieder darüber gestolpert.

Gruß

Damian

Zitat von: der_oBi am 24 August 2019, 06:08:20
Hi Damian,

hast Du Dir das Thema mal ansehen können?
Ich bin leider diese Woche an anderer Stelle schon wieder darüber gestolpert.

Gruß

Leider habe ich es bisher nicht geschafft das Problem zu lösen, weil es mit größerem Umbau verbunden ist.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#21
Ich habe versucht bei mir das Problem nachzustellen. Mit einem Dummy namens bla und zwei Readings test und test2

Beide Readings sind auf 1 gesetzt.

getriggert wird über

setreading bla test2 1


folgende Definition mit checkall all funktioniert allerdings entgegen meiner ursprünglichen Annahme korrekt:

ZitatInternals:
   CFGFN     
   DEF        ([bla:test] == 1) () DOELSEIF ([bla:test2] ==1) ()
   MODEL      FHEM
   NAME       checkall
   NR         2859
   NTFY_ORDER 50-checkall
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2019-08-25 17:04:43   Device          bla
     2019-08-25 17:04:43   cmd             1
     2019-08-25 17:04:43   cmd_event       bla
     2019-08-25 17:04:43   cmd_nr          1
     2019-08-25 17:04:43   e_bla_test2     1
     2019-08-25 17:04:30   mode            enabled
     2019-08-25 17:04:43   state           cmd_1
  ..
Attributes:
   checkall   all
   do         always
   room       DOIF

es wird hier der erste Zweig ausgeführt aufgrund der Tatsache, dass checkall gesetzt ist und bla:test auf 1 gesetzt ist. Getriggert wurde über bla test2 1.

Ohne checkall-Attribut funktioniert die Definition ebenfalls korrekt, dann wird logischerweise cmd_2 ausgeführt.

Also, ich kann ein Problem mit checkall nicht erkennen.

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

der_oBi

und was passiert, wenn du ein drittes reading (test3) deines bla dummys beschreibst?
Ich erwarte dann zumindest, dass ebenfalls das DOIF getriggert wird, obwohl du keine Bedingung für test3 drinne hast.

In meinem konkreten Fall möchte ich bspw. bei aktiviertem checkall auf den Status eines THRESHOLD triggern. Leider erzeugen die THRESHOLDS auch immer events zB für den sensor_value. Und event-on-... Attribute gibt es beim THRESHOLD leider nicht (mehr???).
Das führt dazu, dass mein DOIF dauernd getriggert wird, auch wenn sich der Status des THRESHOLD schon ewig nicht mehr geändert hat.

Damian

Zitat von: der_oBi am 27 August 2019, 18:16:21
und was passiert, wenn du ein drittes reading (test3) deines bla dummys beschreibst?
Ich erwarte dann zumindest, dass ebenfalls das DOIF getriggert wird, obwohl du keine Bedingung für test3 drinne hast.

ja, es war der DOELSE-Fall, den ich nicht mehr vor Augen hatte. Ich denke, dass ich bis zum Wochenende eine Lösung finde.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der_oBi


Damian

#25
Neue Version im Anhang, du kannst testen.

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

der_oBi

Hey Damian,

dake für die schnelle Rückmeldung.
Leider verhält es sich bei mir immer noch so wie zuvor (ich nutze dein test-DOIF mit den test:bla Readings).

Ich muss doch nur die neue DOIF.pm in den FHEM Ordner kopieren und dann ein "reload 98_DOIF.pm" ausführen, oder habe ich irgendwas vergessen?

Damian

Zitat von: der_oBi am 01 September 2019, 06:56:45
Hey Damian,

dake für die schnelle Rückmeldung.
Leider verhält es sich bei mir immer noch so wie zuvor (ich nutze dein test-DOIF mit den test:bla Readings).

Ich muss doch nur die neue DOIF.pm in den FHEM Ordner kopieren und dann ein "reload 98_DOIF.pm" ausführen, oder habe ich irgendwas vergessen?
Ja, du musst das System durchstarten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der_oBi

Ein shutdown restart hat leider auch nichts geändert?  :-[

Hast Du es denn mit Deinem test-DOIF geprüft?

Damian

Zitat von: der_oBi am 01 September 2019, 10:12:54
Ein shutdown restart hat leider auch nichts geändert?  :-[

Hast Du es denn mit Deinem test-DOIF geprüft?

ja, poste mal list vom DOIF vom vermeintlich falschen Zustand.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF