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
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
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.
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.
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:
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
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)
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