[gelöst] Warum funktioniert das wohl ? oder doch nicht

Begonnen von tomspatz, 06 Juni 2021, 17:32:59

Vorheriges Thema - Nächstes Thema

tomspatz

SORRY für die schräge Überschrift. Ich baue gerade ein zweites System für meinen Sohn aus und begebe mich natürlich mit gewohnten DOIF'S sicher aber so im nachhinein wundert es mich das das tatsächlich funktioniert.  ??? Wobei es tatsächlich funktioniert. Zufall, Glück ?

Ich muss leider etwas ausholen. Es geht um eine Lüftungs Steuerung, getriggert wird ein Fenster Kontakt. "Heizungssteuerung" ist ein dummy der je nach "Anwesenheit"gesetzt wird (an, aus, abwesend) "BadLueftenStatus" ebenso, "HeizungsReglerBad" setzt dann die gewünschte Temperatur.
Hier nun die Definition:
defmod LueftungBadAn DOIF ([FensterBad_18] eq "open" and [Heizungssteuerung] ne "aus" and [AussentemperaturDummy:temperature:d] < 37) (set BadLueftenStatus ja, set HeizungReglerBad 12.00)
attr LueftungBadAn alias Lüften Bad an
attr LueftungBadAn eventMap cmd_2:nein cmd_1:ja
attr LueftungBadAn group Fenster Lüften Steuerung
attr LueftungBadAn room Steuerung->Heizung
attr LueftungBadAn wait 10


So tut es allerdings schon seid einigen Jahren, wenn ich allerdings heute drüberschaue sollte es eigentlich eher so sein:
defmod LueftungBadAn DOIF ([FensterBad_18] eq "open" and [?Heizungssteuerung] ne "aus" and [?AussentemperaturDummy:temperature:d] < 37) (set BadLueftenStatus ja, set HeizungReglerBad 12.00)
attr LueftungBadAn alias Lüften Bad an
attr LueftungBadAn eventMap cmd_2:nein cmd_1:ja
attr LueftungBadAn group Fenster Lüften Steuerung
attr LueftungBadAn room Steuerung->Heizung
attr LueftungBadAn wait 10


Könnte das mal jemand zerpflücken  ;)

Damian

Warum sollte es nicht funktionieren? Zuvor wurde öfters getriggert, solange die Temperatur um den Schwellenwert nicht schwankte, hast du auch nichts bemerkt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

tomspatz

hmmm OK
Bedeutet "Heizungssteuerung" und "AussentemperaturDummy" wurden wegen NICHT veränderten Werten "ignoriert".
Wenn ich aber NUR auf "FensterBad_18" auslösen möchte muss bei den anderen das Fragezeichen hinzugefügt.

Und warum habe ich gedacht das alle drei zugleich triggern sollten weil die durch "and" verbunden sind?

Damian

Zitat von: tomspatz am 06 Juni 2021, 21:04:10
hmmm OK
Bedeutet "Heizungssteuerung" und "AussentemperaturDummy" wurden wegen NICHT veränderten Werten "ignoriert".
Wenn ich aber NUR auf "FensterBad_18" auslösen möchte muss bei den anderen das Fragezeichen hinzugefügt.

Und warum habe ich gedacht das alle drei zugleich triggern sollten weil die durch "and" verbunden sind?

Es wird nicht ignoriert, sondern der aktuelle Wert des Readings wird ausgewertet, wenn das Device durch irgendwechen Trigger (von anderen Angaben) getriggert wird.

Wenn du nur auf "FensterBad_18"  triggern willst, dann muss bei allen anderen das Fragezeichen rein - das ist richtig.

Warum du das gedacht hast, weiß ich nicht, in FHEM gibt es zum gleichen Zeitpunkt immer nur ein Trigger.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF