Hauptmenü

Probleme mit IF in Notify

Begonnen von thinman, 19 März 2018, 08:44:11

Vorheriges Thema - Nächstes Thema

Pfriemler

Also: Wenn setreading die Farbe ändert, set aber nicht - ich verstehe's zwar nicht, aber was funktioniert, sollte man nehmen.
Das Komma als Trenner im Ausführungsteil ist korrekt, laut commandref. ; scheint den IF-Befehl zu beenden, so dass das setreading dann immer ausgeführt wird ...
Könnte ein Bug sein.
Und setreading scheint so ziemlich den gesamten Rest des Befehls tumb wegzuschreiben? Keine Ahnung was da schief geht.

Ändern wir in der fhem.cfg oder im DEF-Fenster? Dort hätten doppelte ; sowieso nix verloren, und in der fhem.cgf führen sie zu ganz anderen Effekten...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

thinman

Vielen Dank Euch beiden, wir kommen die Sache schon näher.

IF ([Y_Fire:TEST] eq "on") (sleep 0.1, setreading YeeLight_Fire rgb [Y_Color:rgb] )
alleine, funktioniert.

Ich habe früher sehr viel C-Shell Scripte geschrieben und einiges in C Programmiert, deswegen mag ich eher ein Text File zu editieren... muss ich wohl davon verabschieden.
Die bisherige Code Snippets habe ich aus der fhem.cfg rauskopiert. Ich habe jetzt Eure Vorschläge direkt im DEF Editor eingegeben und so funktioniert es auch... fast ;D
Im WEBInterface ändert sich die Farbe ordnungsgemäß aber die LEDs ändern Ihre Farbe nicht obwohl durch den Sleep Workaround (laut Reference) eigentlich so gehen musste .

Deine Vermutung Priemler mit set und setreading war richtig. In den richtigen IF-Kette funktioniert auch set ordnungsgemäß und damit werden auch die LEDs angesteuert.

Ordnungshalber hier die Definiton aus der DEF Fenster:
Y_Color.*|Y_Color:rgb:.*
IF ([Y_Fire:TEST] eq "on") (sleep 0.1, set YeeLight_Fire rgb [Y_Color:rgb] );
IF ([Y_Water:TEST] eq "on") (sleep 0.1, set YeeLight_Water rgb [Y_Color:rgb] )


Sorry für die Verwirrung durch meine nicht besonders clevere Editierungstechnik und nochmals besten Dank!

Damian

Hinter sleep muss ein Semikolon und kein Komma, sonst gibt es eine Warnung und das System wird blockiert (auch 0.1 Sekunden müssen nicht sein)

hier also im DEF-Editor:

IF ([Y_Fire:TEST] eq "on") (sleep 0.1; setreading YeeLight_Fire rgb [Y_Color:rgb] )
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

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

Damian

Zitat von: Otto123 am 19 März 2018, 20:55:06
Keine Regel ohne Ausnahme  :o :-X :'(

Hat nichts mit DOIF zu tun, sondern mit sleep ;)

Sonderregeln haben sich bald erledigt: keine Kommata, keine doppelte Klammerung, keine Attribute, kein sleep, keine waits, keine internen Abhängigkeiten usw. -> https://forum.fhem.de/index.php/topic,84969.0.html
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

fiedel

Zitat von: Damian am 19 März 2018, 21:14:43
Hat nichts mit DOIF zu tun, sondern mit sleep ;)

Sonderregeln haben sich bald erledigt: keine Kommata, keine doppelte Klammerung, keine Attribute, kein sleep, keine waits, keine internen Abhängigkeiten usw. -> https://forum.fhem.de/index.php/topic,84969.0.html

Ist ja dann wie Alexa nur schriftlich: "DOIF fahre in 10 Minuten die Rolläden auf 50%"  ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Damian

Zitat von: fiedel am 20 März 2018, 06:36:49
Ist ja dann wie Alexa nur schriftlich: "DOIF fahre in 10 Minuten die Rolläden auf 50%"  ;)
Leider nicht ganz, einfache Perlkenntnisse und Programmiererfahrung sind schon von Bedeutung. ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF