Hauptmenü

Notify IF set ELSE set

Begonnen von RobertWerner, 26 November 2017, 23:35:18

Vorheriges Thema - Nächstes Thema

RobertWerner

Bitte um Hilfe
Das funktioniert:
define n_DashButton1 notify DashButton:xx-xx-xx-xx-xx-xx..short set ESPEasy_Sonoff_1_PUMP1  off
und das auch
define n_DashButton1 notify DashButton:xx-xx-xx-xx-xx-xx..short set ESPEasy_Sonoff_1_PUMP1  on

ABER HIER KOMME ich zu keinem Ergebnis
define n_DashButton1 notify DashButton:xx-xx-xx-xx-xx-xx..short   IF { ([ESPEasy_Sonoff_1_PUMP1.relays] eq "on")  { set ESPEasy_Sonoff_1_PUMP1  off } ELSE { set ESPEasy_Sonoff_1_PUMP1 on } }

Auch wenn das IF nicht richtig wäre bzw. nicht aufgeht, dann müsste doch der ELSE Zweig immer eintreffen wenn das NOTIFY getriggert wird, oder ?
Tut es aber nicht ?

Vielen Dank für die Hilfe

Otto123

Hi,

schon mal die Doku gelesen? https://fhem.de/commandref_DE.html#IF

Wo stehen da diese Klammern wie in deinem Konstrukt?  :-X :'(
So könnte es was werden:
IF ([ESPEasy_Sonoff_1_PUMP1.relays] eq "on") (set ESPEasy_Sonoff_1_PUMP1  off ) ELSE (set ESPEasy_Sonoff_1_PUMP1 on)

Bitte nicht FHEM IF mit Perl if verwechseln!!!

Gruß Otto
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

RobertWerner

#2
Vielen Dank für die rasche Antwort,
die Klammern hatte ich aus FHEM-für Einsteiger
...
Der vermutlich am häufigsten verwendete Befehl ist der if-Befehl. Seine Syntax lautet: { if (Bedingung) {Befehl1} else {Befehl2}}
...
Ich habe jetzt deine Version ausprobiert:
IF ([ESPEasy_Sonoff_1_PUMP1.relays] eq "off") (set ESPEasy_Sonoff_1_PUMP1  on) ELSE (set ESPEasy_Sonoff_1_PUMP1 off)

Leider half sie mir nicht weiter, trotz trigger passiert nichts :-(
Das muss an etwas Anderem liegen, aber wie geschrieben wenigstens im ELSE Zweig sollte ich landen.

CoolTux

Es gibt einen Unterschied zwischen dem FHEM Befehl IF und Perl Bedingungen if. Bitte nicht verwechseln.
Gib mal bitte ein list vom FHEM Device was abgefragt und was geschalten werden soll.
list ist ein FHEM Befehl.
Ergebnis bitte hier in Codetags einstellen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

RobertWerner

#4
Die 2 betroffenen devices:
Internals:
   DEF        192.xxx.1.183 80 espBridge Sonoff_1_PUMP1
   ESP_BUILD  147
   ESP_SLEEP  0
   ESP_UNIT   0
   ESP_VERSION 9
   HOST       192.xxx.1.183
   IDENT      Sonoff_1_PUMP1
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     15
   NAME       ESPEasy_Sonoff_1_PUMP1
   NOTIFYDEV  global
   NR         25
   NTFY_ORDER 50-ESPEasy_Sonoff_1_PUMP1
   PORT       80
   STATE      absent
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.33
   espBridge_MSGCNT 15
   espBridge_TIME 2017-11-27 02:16:45
   READINGS:
     2017-11-27 02:16:44   Key             off
     2017-11-27 02:16:45   Relay           off
     2017-11-27 21:42:07   presence        absent
     2017-11-26 18:05:38   state           opened
   helper:
     fpc        1511715946
     pm:
       Encode     1
       JSON       1
     received:
       Key        1511745404
       Relay      1511745405
Attributes:
   IODev      espBridge
   Interval   300
   alias      Drucker
   devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off
   eventMap   /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/
   group      ESPEasy Device
   icon       hue_filled_outlet
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy
   setState   0
   stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Relay","")}


Internals:
   DEF        DashButton:xx-xx-xx-xx-xx-xx..short   IF ([ESPEasy_Sonoff_1_PUMP1] eq "off")  ( set ESPEasy_Sonoff_1_PUMP1  on ) ELSE ( set ESPEasy_Sonoff_1_PUMP1 off )
   NAME       n_DashButton1
   NOTIFYDEV  DashButton
   NR         35
   NTFY_ORDER 50-n_DashButton1
   REGEXP     DashButton:xx-xx-xx-xx-xx-xx..short
   STATE      2017-11-27 21:42:20
   TYPE       notify
   READINGS:
     2017-11-27 21:36:46   state           active
Attributes:



Otto123

Dies hier IF ([ESPEasy_Sonoff_1_PUMP1] eq "off") fragt state ab.
Der ist aber   2017-11-26 18:05:38   state           opened

Du könntest es so machen ([ESPEasy_Sonoff_1_PUMP1:Relay] eq "off")

Das notify hat getriggert    STATE      2017-11-27 21:42:20
Die ELSE macht set ... off aber  das Relay    2017-11-27 02:16:45   Relay           off  ist schon lange off. Da passiert also nix  ;D

Gruß Otto
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

RobertWerner

#6
Juhuu
Ich hatte das Relay auch schon ausprobiert, hatte aber anscheinend einen Syntax Fehler.

Ich habe zwische Device und Relay einen PUNKT statt einem DOPPELPUNKT  :-(

Vielen Dank  :-)

Wird  die Syntax nicht nach gültigen Device gecheckt ?
Oder könnte man das irgendwo prüfen/einstellen ?

Habe jetzt aber noch etwas gelernt:
>>Dies hier IF ([ESPEasy_Sonoff_1_PUMP1] eq "off") fragt state ab. <<  -> Danke :-)
und komischer Weise ist das Status immer open

Aber die Geschichte mit dem ELSE-Zweig läßt mir trotzdem keine Ruhe.
Es war nämlich egal, ob das Gerät vorher eingeschaltet oder ausgeschaltet war, es hat nie umgeschaltet (ich habe mehrfach beides ausprobiert)

Otto123

Mal ein Antwort Versuch, ob der stimmt bin ich nicht sicher.
Aus der Doku
ZitatReadingangabe [<Device>:<Reading>]
<Device> ist wahrscheinlich ein devspec -> https://fhem.de/commandref_DE.html#devspec
Und devspec ist ein regulärer Ausdruck. Damit kannst Du so ziemlich alles dahin schreiben, der reguläre Ausdruck trifft dann einfach nicht (oder das regEx matched nicht  :D)

Gruß Otto
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