Hallo,
ich habe folgendes Problem: Ich möchte innerhalb eines IF ein at definieren, welches wiederum eine IF-Auswertung beinhaltet:
define OG.ez.WS.Durchgang_1.not.long notify OG.ez.WS.Durchgang_1.*press_long.* IF ([OG.fk.AL.Kinder] eq 'deaktiviert') (...) ELSE (..., define OG.fk.AL.Kinder.at.Aktivieren at +00:10:00 IF ([OG.fk.AL.Kinder] eq 'traege') (set OG.fk.AL.Kinder aktiviert))
(stark gekürzt)
Das Problem ist nun, dass das at statt so
+00:10:00 IF ([OG.fk.AL.Kinder] eq 'traege') (set OG.fk.AL.Kinder aktiviert)
so
+00:10:00 IF (aktiviert eq 'traege') (set OG.fk.AL.Kinder aktiviert)
aussieht. Das heißt, zur Ausführung des notify werden alle Vorkommen von [OG.fk.AL.Kinder] durch den aktuellen Status des Dummies ersetzt - so auch das im definierten at.
Wie kann ich das verhindern und dafür sorgen, dass das at korrekt erzeugt wird?
Vielen Dank
Ronny
Zitat von: RoBra81 am 12 August 2014, 14:14:19
Hallo,
ich habe folgendes Problem: Ich möchte innerhalb eines IF ein at definieren, welches wiederum eine IF-Auswertung beinhaltet:
define OG.ez.WS.Durchgang_1.not.long notify OG.ez.WS.Durchgang_1.*press_long.* IF ([OG.fk.AL.Kinder] eq 'deaktiviert') (...) ELSE (..., define OG.fk.AL.Kinder.at.Aktivieren at +00:10:00 IF ([OG.fk.AL.Kinder] eq 'traege') (set OG.fk.AL.Kinder aktiviert))
(stark gekürzt)
Das Problem ist nun, dass das at statt so
+00:10:00 IF ([OG.fk.AL.Kinder] eq 'traege') (set OG.fk.AL.Kinder aktiviert)
so
+00:10:00 IF (aktiviert eq 'traege') (set OG.fk.AL.Kinder aktiviert)
aussieht. Das heißt, zur Ausführung des notify werden alle Vorkommen von [OG.fk.AL.Kinder] durch den aktuellen Status des Dummies ersetzt - so auch das im definierten at.
Wie kann ich das verhindern und dafür sorgen, dass das at korrekt erzeugt wird?
Vielen Dank
Ronny
Das ist ein Problem des IF-Befehls, wurde heute hier: http://forum.fhem.de/index.php/topic,23833.msg191049.html#msg191049 diskutiert.
Du musst beim zweiten IF mit ReadingsVal(OG.fk.AL.Kinder,"state","") statt [OG.fk.AL.Kinder] arbeiten.
Ansonsten, schau dir mal DOIF an, dann wirst du wohl für deinen Zweck ohne notify, at und IF auskommen.
Gruß
Damian
Wie muss ich das dann schreiben? Wenn ich das [OG.fk.AL.Kinder] einfach durch ReadingsVal(OG.fk.AL.Kinder,"state","") ersetze endet der Befehl vom at beim ersten Komma von ReadingsVal(OG.fk.AL.Kinder,"state",""):
+00:10:00 IF (ReadingsVal(OG.fk.AL.Kinder
Zitat von: RoBra81 am 12 August 2014, 15:10:45
Wie muss ich das dann schreiben? Wenn ich das [OG.fk.AL.Kinder] einfach durch ReadingsVal(OG.fk.AL.Kinder,"state","") ersetze endet der Befehl vom at beim ersten Komma von ReadingsVal(OG.fk.AL.Kinder,"state",""):
+00:10:00 IF (ReadingsVal(OG.fk.AL.Kinder
Den at-Define musst du zusätzlich wegen der Kommas in Klammern setzen
define OG.ez.WS.Durchgang_1.not.long notify OG.ez.WS.Durchgang_1.*press_long.* IF ([OG.fk.AL.Kinder] eq 'deaktiviert') (...) ELSE (...,(define OG.fk.AL.Kinder.at.Aktivieren at +00:10:00 IF (ReadingsVal("OG.fk.AL.Kinder","state","") eq 'traege') (set OG.fk.AL.Kinder aktiviert)))
Gruß
Damian
@Damian:
kann das sein, dass mein aktuelles Problem die gleiche Ursache hat, also fehlende Klammern um das geschachtelte IF nach anderen Befehlen?
https://forum.fhem.de/index.php/topic,62367.msg537680.html#msg537680
VG Yil