FHEM Forum

FHEM => Automatisierung => Thema gestartet von: mheiker am 11 September 2021, 11:33:41

Titel: IF in notify
Beitrag von: mheiker am 11 September 2021, 11:33:41
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
Titel: Antw:IF in notify
Beitrag von: MadMax-FHEM am 11 September 2021, 12:03:05
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
Titel: Antw:IF in notify
Beitrag von: mheiker am 11 September 2021, 17:12:49
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
)
)
Titel: Antw:IF in notify
Beitrag von: Otto123 am 11 September 2021, 21:30:41
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
Titel: Antw:IF in notify
Beitrag von: mheiker am 12 September 2021, 12:41:49
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)