[gelöst/verstanden] [?HCAutomatik] eq "on" vs. [?"HCAutomatik:on"]

Begonnen von rallye, 22 April 2021, 11:38:12

Vorheriges Thema - Nächstes Thema

rallye

Ich habe da eine Verständnisfrage (siehe auch dieser Beitrag: https://forum.fhem.de/index.php/topic,120572.msg1151084.html#msg1151084):

Wenn ich den o.a. Code
defmod DG_Fenster_Heizung DOIF (["^Fenster.DG:open"] and [?HCAutomatik] eq "on")
...

her nehme wird auf Fenster.DG getriggert und die nachfolgenden Befehle nur dann ausgeführt, wenn HCAutomatik "on" ist (ist also kein Trigger). Wo ist der Unterschied zu folgendem Code:
defmod DG_Fenster_Heizung DOIF (["^Fenster.DG:open"] and [?"HCAutomatik:on"])
...

Wenn ich es richtig verstanden habe wird auch im 2ten Fall nur auf Fenster.DG getriggert und die nachfolgenden Befehle nur dann ausgeführt, wenn HCAutomatik "on" ist (ebenfalls kein Trigger).

Ich verwende beide Notationen erfolgreich doch welches ist die bevorzugte (professionellere) Schreibweise bzw. bei welchem Fall habe ich im System weniger Overhead ? Ich möchte mich mit mir auf nur eine Schreibweise einigen.
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

Damian

Zitat von: rallye am 22 April 2021, 11:38:12
Ich habe da eine Verständnisfrage (siehe auch dieser Beitrag: https://forum.fhem.de/index.php/topic,120572.msg1151084.html#msg1151084):

Wenn ich den o.a. Code
defmod DG_Fenster_Heizung DOIF (["^Fenster.DG:open"] and [?HCAutomatik] eq "on")
...

her nehme wird auf Fenster.DG getriggert und die nachfolgenden Befehle nur dann ausgeführt, wenn HCAutomatik "on" ist (ist also kein Trigger). Wo ist der Unterschied zu folgendem Code:
defmod DG_Fenster_Heizung DOIF (["^Fenster.DG:open"] and [?"HCAutomatik:on"])
...

Wenn ich es richtig verstanden habe wird auch im 2ten Fall nur auf Fenster.DG getriggert und die nachfolgenden Befehle nur dann ausgeführt, wenn HCAutomatik "on" ist (ebenfalls kein Trigger).

Ich verwende beide Notationen erfolgreich doch welches ist die bevorzugte (professionellere) Schreibweise bzw. bei welchem Fall habe ich im System weniger Overhead ? Ich möchte mich mit mir auf nur eine Schreibweise einigen.

Die zweite Abfrage ist nicht sinnvoll, da [?"HCAutomatik:on"] keine sinnvolle Angabe ist. Sie ist immer falsch  - entspricht 0. Sie wäre zum Zeitpunkt des Triggers wahr, wenn sie triggern würde.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rallye

Danke, hilft mir ordentlich weiter !

Zusatzfrage:

wie sieht es mit [?HCAutomatik:"^on$"] aus ? Ist das sinnvoller als [?HCAutomatik] eq "on"] ?
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

Otto123

Irgendwo hatte ich das die Tage schon mal erklärt - das was Du als Schreibweise bezeichnest ist keine - sondern ein genereller Unterschied:
["^Fenster.DG:open"] - wertet diesen Event aus. Es ist also wahr genau in dem Moment wo der Event eintritt, also Fenster.DG von irgendwas nach open wechselt
[?HCAutomatik] eq "on" - fragt den Zustand von HCAutomatik ab wenn irgendetwas das DOIF triggert. Es ist immer wahr wenn HCAutomatik auf on steht.
[HCAutomatik] eq "on" - eine (jede) Änderung von HCAutomatik triggert das DOIF im Gegensatz zum vorhergehenden Satz: dort triggert eine Änderung von HCAutomatik nicht.

Du musst immer abwägen:

  • welchen Auslöser soll es geben?
  • Was soll nicht auslösen sondern nur die Entscheidung beeinflussen.
  • Was soll auslösen und die Entscheidung beeinflussen.

Und auch hier nochmal der Hinweis: eine and Verknüpfung von zwei Eventtriggern funktioniert nicht!
Damian hat das wieder nett gesagt - aber durch die Verknüpfung "and 0" wird der gesamte Ausdruck 0 - also nie wahr!

Edit:
Zitat[?HCAutomatik:"^on$"]
ist mMn auch immer null!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Man könnte als Merkregel (natürlich gibt es Ausnahmen) sagen, Angaben in Anführungszeichen haben etwas mit Ereignistriggern zu tun, diese stellen keinen Zustand dar, den man sinnvoll mit Vergleichen der Art, eq, ne, ... abfragen könnte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rallye

Zitat von: Otto123 am 22 April 2021, 13:09:16
[?HCAutomatik] eq "on" - fragt den Zustand von HCAutomatik ab wenn irgendetwas das DOIF triggert. Es ist immer wahr wenn HCAutomatik auf on steht.


Danke, gute Erklärung (der gesamte Post!). Wo liegt dann der Unterschied zu Value("HCAutomatik") eq "on" ?
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

Otto123

#6
Du fragst jetzt die ganze Doku ab? :)
mMn gibt es da keinen funktionalen Unterschied. Value() ist eine FHEM Perlfunktion die das Internal STATE abfragt -> https://fhem.de/commandref_DE.html#perl
[?Device] tut im DOIF das Gleiche.

Ob es im DOIF einen Unterschied macht (wo und was) kann ich nicht sagen. In FHEM allgemein kannst Du nur Value() im Perlcode verwenden.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rallye

 :) :) :) Nein, ich frage natürlich NICHT die ganze Doku ab !!! Ich will lediglich verstehen was ich da tue und ob es andere (bessere) Wege gibt. Mittlerweile läuft das auch alles bei mir wunderbar und ich verstehe es auch - dank Deiner und Damian's Hilfe
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor