Hallo zusammen,
ich bin ein wenig am Verzweifeln, denn ich bekomme eine IF-Verzweigung im notify nicht umgesetzt.
Aktuell sieht mein Code so aus:
Mathias:absent
IF ([du_Heizungen] eq "on")
(set FBDECT_fritzbox_grpD3E581_3C5AAA62E desired-temp 16.5,
set FBDECT_fritzbox_grpD3E581_3C5AAAB30 desired-temp 16.5,
set FBDECT_fritzbox_11960_0669120 desired-temp 16.0,
set FBDECT_fritzbox_11960_0701984 desired-temp 16.0)
ELSE
(set FBDECT_fritzbox_grpD3E581_3C5AAA62E desired-temp 7.5,
set FBDECT_fritzbox_grpD3E581_3C5AAAB30 desired-temp 7.5,
set FBDECT_fritzbox_11960_0669120 desired-temp 7.5,
set FBDECT_fritzbox_11960_0701984 desired-temp 7.5)
Wenn sich der Resident "Mathias" (das bin ich ;) ) auf absent ändert, sollen Thermostate (FBDECT...) umgestellt werden und das je nach Zustand der Heizung (dummy-device du_Heizungen).
In der CommandRef steht, dass IF mehrere Komma-getrente Befehle ausführt. Das scheint aber gar nicht zu klappen, kein Thermostat ändert seinen Zustand.
Mit Semikolon getrennt versuchte ich es auch bereits, dann wird aber das erste Device (FBDECT_fritzbox_grpD3E581_3C5AAA62E) nicht angesteuert.
Kann man mir da helfen?
Vielen Dank bereits im Voraus!
Mathias
Ich persönlich löse sowas ja mit Perl und damit Perl if ;)
...und meist auch "ausgelagert" in eine Sub...
(jaja, ich weiß: unnötiger Wechsel nach Perl und dann wieder "zurück" mittels fhem(" ")... Aber meistens mache ich ja mehr in so einer Sub 8) )
Aber ich hab mal die commandref zu IF bemüht und da steht folgendes:
Zitat von: commandref
Falls ein Komma im FHEM-Ausdruck vorkommt, muss dieser zusätzlich geklammert werden, damit das Komma nicht als Trennzeichen erkannt wird:
define check at +00:10 IF ([outdoor:humidity] > 10) ((set switch1,switch2 off))
Schon mit "Doppelklammer" versucht?
Gruß, Joachim
Hallo Joachim,
besten Dank für deine schnelle Antwort!
Leider hat es mit zwei Klammern auch nicht geklappt...nach viel hin- und hertesten habe ich das notifiy jetzt weggeworfen (mit der Syntax komme ich nicht so recht klar ;)) und das in ein DOIF geändert...und: klappt :)
([Mathias] eq "absent" and [Hannah] eq "absent") (
IF ([du_Heizungen] eq "on") (
set FBDECT_fritzbox_grpD3E581_3C5AAA62E desired-temp 16.5,
set FBDECT_fritzbox_grpD3E581_3C5AAAB30 desired-temp 16.5,
set FBDECT_fritzbox_11960_0669120 desired-temp 16.0,
set FBDECT_fritzbox_11960_0701984 desired-temp 16.0
)
ELSE (
set FBDECT_fritzbox_grpD3E581_3C5AAA62E desired-temp 7.5,
set FBDECT_fritzbox_grpD3E581_3C5AAAB30 desired-temp 7.5,
set FBDECT_fritzbox_11960_0669120 desired-temp 7.5,
set FBDECT_fritzbox_11960_0701984 desired-temp 7.5
)
)
Hi,
dein DOIF ist jetzt aber ein doppelt gemoppeltes IF :) im DOIF steckt ja das IF schon drin.
Falls Du in Zukunft nochmal notify probieren willst: generell ist es gut als Ausgangspunkt den Eventmonitor zu nutzen! Zur normalen Doku (commandref) gibt es noch diese Anleitung: https://wiki.fhem.de/wiki/Notify
Gruß Otto
Das stimmt wohl :) Aber das DOIF soll nur auslösen und verzweigen, wenn die erste Bedingung passt...
Ich werd mich mal daran machen und beim nächsten Mal ein notify basteln! 8)