Hallo Profis
Nach vielem lesen und immer weniger verstehen, versuche ich mein Problem rasch in Worte zu fassen, vieleicht kann mir da jemand ja einen Tip geben was ich falsch mache?
Ich habe einen 4fach Enocean-Taster der via fhem einen Shelly rgbw2 schalten soll. Bissher hatte ich Enocean-Schaltaktor eingebaut und den mittels 2stk "notify" mit den Befehlen "set on, set off" versehen. Nun möchte ich aber das jeder Taster quasi ein "toggle" macht, aber dem Shelly dann eben doch "set .... on" und "set ... off" sendet.
Dazu habe ich mir ein notify definiert und folgende Regel versucht:
IF (EnO_0015C4C0:B0.* and ([Ursin_LED_Shelly:state] eq "on")) (set Ursin_LED_Shelly off) else (set Ursin_LED_Shelly on)
Aber das geht irgendwie nicht.
Ich möchte nachher zusätzlich zum einschalten eben noch ein weiteres "set ..... rgb ffffff" mitgeben. Darum eben die Taster sowohl als toggle verwenden.
Internals:
CFGFN
DEF IF (EnO_0015C4C0:B0.* and ([Ursin_LED_Shelly:state] eq "on")) (set Ursin_LED_Shelly off) else (set Ursin_LED_Shelly on)
FUUID 5f6f3322-f33f-fbd2-bcce-5597c7f6d2623429
NAME LED_Ursin_Shelly
NR 89359
NTFY_ORDER 50-Deckenlicht_Ursin_off
REGEXP IF
STATE active
TRIGGERTIME 1601125029.56027
TYPE notify
Helper:
DBLOG:
state:
DBLogging:
TIME 1601125530.1469
VALUE active
READINGS:
2020-09-26 15:05:30 state active
Attributes:
room 5_ZiUrsin
Hi,
das ist kein wirkliches notify! Das ist nur ein Ausführungsteil, das Wesentliche, der Trigger, fehlt! :)
Was Du wirklich machen willst ist mir noch nicht klar.
Gruß Otto
Einfach diesen Uralt-Tipp etwas umbauen: https://wiki.fhem.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
LG
pah
Ich möchte eigentlich mit dem betätigen des Tasters (ist eine Enoceantaster mit 4 einzlnen Taster) den LED Streifen am Shelly rgbw2 einschalten und auf eine vordefinierte farbe stellen. Beim nächsten betätigen soll dann einfach ein "....off" gesendet werden usw. Das möchte ich für jeden der 4 Taster einzeln machen, wobei einer das normale Deckenlicht mit dem Enocean-Aktor ist, der bereits eine Schrittschalterfunktion integriert hat.
Ich muss mir die Beschreibung im wiki morgen durchlesen uns ausprobieren, so fürs erste scheint es genau das richtige zu sein.
Vielen Dank
Andi
schwer zu verstehen, aber was Du Dir ausgedacht hast sollte eventuell so aussehen?
EnO_0015C4C0:B0.* IF ([Ursin_LED_Shelly:state] eq "on") (set Ursin_LED_Shelly off) else (set Ursin_LED_Shelly on)
Eventuell hast Du deine vorhandenen notifys ähnlich gemacht?
So wie oben umgestellt, wird bei allen Events die dem regExp EnO_0015C4C0:B0.* entsprechen deine Logik aufgerufen. Ob das gut ist kann ich nicht abschätzen. Das musst Du im Eventmonitor prüfen.
Auf alle Fälle entspricht dies Deiner falsch geschriebenen UND Verknüpfung.
Gruß Otto
Hallo Otto
Zitat von: Otto123 am 26 September 2020, 20:18:05
schwer zu verstehen, aber was Du Dir ausgedacht hast sollte eventuell so aussehen?
Eigentlich ist es ganz einfach, ganz losgelöst von meinen Gedanken mit dem "IF", möchte ich einfach einen Stromstossschalter, Schrittschalter, Flipflop oder wie man es auch nennen will, realisieren.
Aktuell versuche ich gerade die Funktion aus dem wiki zu verstehen, denn ich habe die Variante der indirekten Koppelung (Taster->fhem->Shelly) und eben auch keine Dimmfunktion (ist mit EnoceanTaster auch etwas heikel).
Gruss Andi
Nachtrag: mit dieser Zeile funktioniert es nun
EnO_FEFE1F96:A0.* IF ([EnO_FEFE1F96:channelA] eq "A0" && [Ursin_LED_Shelly:state] eq "off") (set Ursin_LED_Shelly on) ELSE (set Ursin_LED_Shelly off)
Was das gross und kleinschreiben des "ELSE" ausmacht, verstehe ich zwar nicht ganz, aber wichtig ist das es nun geht.
Vielen Dank
Andi
Wenn (Bedingung ist wahr) dann - wird weggelassen (mach das) Alternativ (mach das, also wenn Bedingung nicht wahr ist)
IF()()ELSE() ist FHEM Code - aber analog zum Perlsyntax
{if (){}else{}} ist Perl Code.
Ergo: IF()()else() ist eigentlich falsch, wird aber eventuell vom FHEM Parser ignoriert. ;)