Hallo,
jetzt, wo es doch wieder warme Tage gibt, fällt mir auf, das meine Schaltung doch nicht so läuft.
Wieso werden die Jalousien heruntergefahren? Bis auf die Helligkeit ist keine weitere Bedingung wahr.
Hier einmal mein Code:
([Aussentemperatur:temperature] => 23 and [Temp_Schlafzi:temperature] => 24 and [Helligkeit:state] > 1700 and [?13:45 - 18:30]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ_Seite 40)) DOELSE ((set Jalo_SchlafZi:FILTER=pct=40,Jalo_Bad:FILTER=pct=40,Jalo_WZ_Seite:FILTER=pct=40 on))
um 13:55Uhr wurden die Jalousien runter gefahren. Unwahrscheinlich, das es im SchlafZi wärmer war, doch warum werden die jetzt nicht hoch gefahren? Alles ist Kühler.
Anbei die List vom DoIf:
DEF ([Aussentemperatur:temperature] => 23 and [Temp_Schlafzi:temperature] => 24 and [Helligkeit:state] > 1700 and [?13:45 - 18:30]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ_Seite 40)) DOELSE ((set Jalo_SchlafZi:FILTER=pct=40,Jalo_Bad:FILTER=pct=40,Jalo_WZ_Seite:FILTER=pct=40 on))
NAME di_Beschattung_seite
NR 179
NTFY_ORDER 50-di_Beschattung_seite
STATE cmd_1
TYPE DOIF
Readings:
2017-06-23 15:24:42 Device Helligkeit
2017-06-23 13:55:39 cmd 1
2017-06-23 13:55:39 cmd_event Aussentemperatur
2017-06-23 13:55:39 cmd_nr 1
2017-06-23 15:24:05 e_Aussentemperatur_temperature 20.0
2017-06-23 15:24:42 e_Helligkeit_state 2269.0
2017-06-23 15:21:57 e_Temp_Schlafzi_temperature 22.6
2017-06-23 13:55:39 state cmd_1
2017-06-22 18:30:00 timer_01_c01 23.06.2017 13:45:00
2017-06-22 18:30:00 timer_02_c01 23.06.2017 18:30:00
2017-06-23 13:55:39 wait_timer no timer
Condition:
0 ReadingValDoIf($hash,'Aussentemperatur','temperature') => 23 and ReadingValDoIf($hash,'Temp_Schlafzi','temperature') => 24 and ReadingValDoIf($hash,'Helligkeit','state') > 1700 and DOIF_time($hash,0,1,$wday,$hms)
Days:
Devices:
0 Aussentemperatur Temp_Schlafzi Helligkeit
all Aussentemperatur Temp_Schlafzi Helligkeit
Do:
0:
0 (set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ_Seite 40)
1:
0 (set Jalo_SchlafZi:FILTER=pct=40,Jalo_Bad:FILTER=pct=40,Jalo_WZ_Seite:FILTER=pct=40 on)
Helper:
event 2269.0
globalinit 1
last_timer 2
sleepdevice Aussentemperatur
sleepsubtimer -1
sleeptimer -1
timerdev Helligkeit
timerevent 2269.0
triggerDev Helligkeit
timerevents:
2269.0
timereventsState:
state: 2269.0
triggerEvents:
2269.0
triggerEventsState:
state: 2269.0
Internals:
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1498218300
1 1498235400
Readings:
0 Aussentemperatur:temperature Temp_Schlafzi:temperature Helligkeit:state
all Aussentemperatur:temperature Temp_Schlafzi:temperature Helligkeit:state
Realtime:
0 13:45:00
1 18:30:00
Regexp:
0:
All:
State:
State:
Time:
0 13:45:00
1 18:30:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timers:
Trigger:
Triggertime:
1498235400:
localtime 1498235400
Hash:
Attributes:
group Jalousien_seite
room Jalousien Di´s
wait 600:1200
Vielen Dank
Torsten
Sind deine Jalousie mittlerweile wirklich auf 40 geblieben?
Aussentemperatur:temperature] => 23
Soll das ne Richtungsanzeige sein ;D
>=
Hallo,
@amenomade: Ja, die Jalousien werden erst um 18:30Uhr wieder hochgefahren.
@CoolTux: aaah :-) Also nicht "gleich größer" sondern "größer gleich".
Doch wieso löst das DoIf aus, obwohl die Angabe falsch ist?
Vielen Dank
Torsten
Kann ich Dir nicht sagen. Eventuell hat er die => anders interpretiert
Wenn Du sowas schreibst:[Aussentemperatur:temperature] => 23
wird jede Änderung des Readings "temperature" vom Device "Aussentemperatur" das DOIF triggern. Triggern heisst aber nicht, dass die Bedingung dann wahr ist.
Zitat von: CoolTux am 24 Juni 2017, 21:04:10
Aussentemperatur:temperature] => 23
Soll das ne Richtungsanzeige sein ;D
>=
neee, das bedeutet "näher sich den 23 Grad" :)
spaß beiseite!
evtl. hat er nen hash gebaut.
vielleicht kann aber damian was dazu sagen wie das im DOIF "wirkt"
Zitat von: nils_ am 26 Juni 2017, 08:19:23
neee, das bedeutet "näher sich den 23 Grad" :)
spaß beiseite!
evtl. hat er nen hash gebaut.
vielleicht kann aber damian was dazu sagen wie das im DOIF "wirkt"
Die Operatoren gehören zu Perl, deswegen >= angeben.
Zitatvielleicht kann aber damian was dazu sagen wie das im DOIF "wirkt"
Tja... ich bin nicht Damian, aber "=>" ist in Perl ein Operator, der nichts mit "<=" zu tun hat. Ich würde dann an deiner Stelle auf jeden Fall mein DOIF korrigieren und weiter testen.
http://perldoc.perl.org/perlop.html#Comma-Operator