Hallo zusammen,
ich krieg es nicht hin ein doif mit Abfragen:
(*[11:30] and ($month >= 5 && $month <= 9) and ReadingsVal(Aussentemperatur:temperature) > 16) (set RolloGWC,RolloBad,RolloCompZ oben) (set RolloErker*,RolloKueche,RolloSchlafZ,RolloBuegelZ Schatten)
Die Fehlermeldung: perl error in condition: *DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ($month >= 5 && $month <= 9) and ReadingsVal(Aussentemperatur:temperature) > 16: syntax error at (eval 4101) line 1, near "*DOIF_time_once("
Was mach ich falsch? Hab schon viele Varianten getestet, && gegen and und viele doif Forumseinträge gelesen
Danke für eure Hilfe
Zitat von: Decki am 21 August 2016, 20:34:07
Hallo zusammen,
ich krieg es nicht hin ein doif mit Abfragen:
(*[11:30] and ($month >= 5 && $month <= 9) and ReadingsVal(Aussentemperatur:temperature) > 16) (set RolloGWC,RolloBad,RolloCompZ oben) (set RolloErker*,RolloKueche,RolloSchlafZ,RolloBuegelZ Schatten)
Die Fehlermeldung: perl error in condition: *DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ($month >= 5 && $month <= 9) and ReadingsVal(Aussentemperatur:temperature) > 16: syntax error at (eval 4101) line 1, near "*DOIF_time_once("
Was mach ich falsch? Hab schon viele Varianten getestet, && gegen and und viele doif Forumseinträge gelesen
Danke für eure Hilfe
Wie kommst du auf diese Syntax?
ReadingsVal(Aussentemperatur:temperature)
ReadingsVal ist eine Perlfunktion, sie erwartet drei Parameter, die man mit Komma trennt.
In der commandref zu DOIF wirst du aber keine ReadingsVal-Funktion finden, da das Modul ohne Perlfunktionen für Readingangaben auskommt. Du brauchst nur eines der ersten Beispiele aus der commandref zu DOIF dir anzuschauen, dann solltest du direkt drauf kommen, wie du die Aussentemperatur abfragst:
Zitat:
ZitatKombinierte Ereignis- und Zeitsteuerung: define di_lamp DOIF ([06:00-09:00] and [sensor:brightness] < 40) (set lamp on) DOELSE (set lamp off)
Gruß
Damian
Hallo Damian,
danke für deinen Hinweis. Ich testete schon alle Varianten, die ich im Forum gefunden habe.
Habe es nun so geändert:
(*[09:26] and ($month >= 5 && $month <= 9) and [Aussentemperatur:temperature] > 16) (set RolloGWC,RolloBad,RolloCompZ oben) (set RolloErker*,RolloKueche,RolloSchlafZ,RolloBuegelZ Schatten)
und bekomme als Meldung:
perl error in condition: *DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ($month >= 5 && $month <= 9) and ReadingValDoIf($hash,'Aussentemperatur','temperature','','',AttrVal($hash->{NAME},'notexist',undef)) > 16: syntax error at (eval 15765) line 1, near "*DOIF_time_once("
Guck dir mal die Klammersetzung im Ausführungsteil nochmal an (und das Beispiel in der commandref dazu)
Edit: und das * am Anfang gehört da auch nicht hin...
Hallo Damian,
danke, hab es nun kapiert:
([13:26] and ($month >= 5 && $month <= 9) and [Aussentemperatur:temperature] > 20) ((set RolloGWC,RolloBad,RolloCompZ oben) (set RolloErker*,RolloKueche,RolloSchlafZ,RolloBuegelZ Schatten))
Für andere Newbies hier die damit auch ein Problem haben.
Die Rolläden der Westseite sollen um 13:26 Uhr und Außentemperatur größer als 20°C und in den Sommermonaten heruntefahren und die der Ostseite wieder hoch
Hast du auch do always gesetzt? Sonst macht er das genau einmal...
Zitat von: Decki am 23 August 2016, 14:27:57
Hallo Damian,
danke, hab es nun kapiert:
([13:26] and ($month >= 5 && $month <= 9) and [Aussentemperatur:temperature] > 20) ((set RolloGWC,RolloBad,RolloCompZ oben) (set RolloErker*,RolloKueche,RolloSchlafZ,RolloBuegelZ Schatten))
Für andere Newbies hier die damit auch ein Problem haben.
Die Rolläden der Westseite sollen um 13:26 Uhr und Außentemperatur größer als 20°C und in den Sommermonaten heruntefahren und die der Ostseite wieder hoch
Ich würde dir empfehlen hierbei mit Zeitintervallen zu arbeiten. Denn, wenn die Temperatur erst nach 13:26 sich auf über 20 Grad erhöht bleiben deine Rollläden oben, daher:
([13:26-18:00] and ($month >= 5 && $month <= 9) and [Aussentemperatur:temperature] > 20) ((set RolloGWC,RolloBad,RolloCompZ oben, set RolloErker*,RolloKueche,RolloSchlafZ,RolloBuegelZ Schatten))
Gruß
Damian