FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Ranseyer am 02 Juni 2018, 13:12:02

Titel: at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Ranseyer am 02 Juni 2018, 13:12:02
Hi,

dumme Frage, aber ich komme trotzdem gerade nicht weiter...

Das funktioniert:

Funktion: Wenn Brightness über 100 wird die percentage2 auf 100 gesetzt und somit die Markise ausgefahren.
Internals:
   CFGFN     
   COMMAND    {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100) {fhem("set WG_Steuerung percentage2 100")} }
   DEF        +*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100) {fhem("set WG_Steuerung percentage2 100")} }
   NAME       Markise_runter_bei_Sonne
   NR         691
   NTM        13:27:57
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 13:27:57
   TIMESPEC   00:30:00
   TRIGGERTIME 1527938877.67079
   TRIGGERTIME_FMT 2018-06-02 13:27:57
   TYPE       at
   READINGS:
     2018-06-02 12:57:57   state           Next: 13:27:57
Attributes:
   DbLogExclude .*
   room       0.03_Wintergarten



Nun möchte ich aber dass das percentage2 nur auf 100 gesetzt wird wenn percentage 2 gerade <100 ist.
Das funktioniert nicht (syntax Error):
Zitat+*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100) {{if(ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  fhem("set WG_Steuerung percentage2 100")} } }


Würde mich über einen Tipp dazu freuen.
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: CoolTux am 02 Juni 2018, 13:20:20

{fhem("set WG_Steuerung:FILTER=percentage2<100 percentage2 100")} }
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Ranseyer am 02 Juni 2018, 14:03:41
Danke, das funktioniert.

Denke ich werde mir mal doif genauer ansehen ob ich damit auch zyklisch alle 30 Minuten dieses Thema testen kann.
Bei etwas Langeweile würde ich mal vergleichen was besser für mich geeignet ist. Denke das wäre eher mein Niveau...
(und ich könnte leichter weitere Bedingungen hinzufügen wie die Außentemperatur muss größer 20 Grad sein, ...)

Danke dass es schon mal funktioniert!
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Byte09 am 02 Juni 2018, 14:20:49
Zitat von: Ranseyer am 02 Juni 2018, 14:03:41
Danke, das funktioniert.

Denke ich werde mir mal doif genauer ansehen ob ich damit auch zyklisch alle 30 Minuten dieses Thema testen kann.
Bei etwas Langeweile würde ich mal vergleichen was besser für mich geeignet ist. Denke das wäre eher mein Niveau...
(und ich könnte leichter weitere Bedingungen hinzufügen wie die Außentemperatur muss größer 20 Grad sein, ...)

Danke dass es schon mal funktioniert!


hast du dir mal MSwitch angeschaut ?

Zitat(und ich könnte leichter weitere Bedingungen hinzufügen wie die Außentemperatur muss größer 20 Grad sein, ...)

Könnte genau das richtige sein .

gruss Byte09
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Ranseyer am 02 Juni 2018, 21:48:06
Danke MSwitch hab ich mir angeschaut und kann mir vorstellen (es vermutlich für anderes als die Markise) einzusetzen. Ich antworte dazu mal im MSwitch-Thread den ich sicher gleich finde.
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Beta-User am 03 Juni 2018, 08:23:03
Warum nicht über ein simples "and" im "at"?
+*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100 and ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  fhem("set WG_Steuerung percentage2 100")}}Kann man ebenfalls ausweiten. Bei Verwendung eines "or" (was genauso funktioniert) bitte Klammersetzung beachten.

Aber eigentlich sollte es auch so ähnlich gehen, wie du das hattest (für den Fall, dass da oder woanders mal noch ein "else" dazukommen soll):+*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100) {if(ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  fhem("set WG_Steuerung percentage2 100")}}
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Ranseyer am 03 Juni 2018, 13:39:15
ZitatWarum nicht über ein simples "and" im "at"?
+*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100 and ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  fhem("set WG_Steuerung percentage2 100")}}
Das gefällt mir bisher am besten (lesbar und einfach)

:+*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100) {if(ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  fhem("set WG_Steuerung percentage2 100")}}
[/quote]
Leider nicht:
Zitatsyntax error at (eval 29211) line 1, near ")  fhem "

Danke!
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Ranseyer am 03 Juni 2018, 13:43:07
Das ober geht auchg nicht:
Ich hab mal ne Klammer weggelassen und somit nur noch einen statt zwei Fehler:
+*00:30:00 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100 and ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  fhem("set WG_Steuerung percentage2 100")}

Trotzdem noch:
Zitatsyntax error at (eval 29345) line 1, near ")  fhem"
Obwohl für mich die Klammern passen...
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Beta-User am 03 Juni 2018, 17:12:55
Habe eben mal folgendes in meinem FHEM definiert, da hatte wohl noch eine Klammer an der richtigen Stelle gefehlt (zur Umklammerung des auszuführenden Codeblocks nach dem if):
define test at +00:01 {if(ReadingsVal('WG_Steuerung', 'brightness', 0) > 100 and ReadingsVal('WG_Steuerung', 'percentage2', 0) < 100)  {fhem("set WG_Steuerung percentage2 100")}}Kam jedenfalls keine Fehlermeldung, aber ich habe kein passendes WG_Steuerung-Device, um das abschließend testen zu können...
Titel: Antw:at bei zwei eingehaltenen Bedingungen ausführen
Beitrag von: Ranseyer am 03 Juni 2018, 20:28:52
...das ist zwar scheinbar einfach, aber...

Danke.