Folgendes habe ich anhand der Temperatur eingestellt. Allerdings bei 19 Grad max. Temperatur fährt das Rollo dennoch zu. Warum ? Alle 10min, vermutlich wegen dem do always, geht fhem alle 3 doif durch und färt das Rollo jeweils auf 20, 5 oder hoch.
Listauszug...
Internals:
DEF ([SH.Beschattung.OnOff] eq "on" and ([Wetter_Pro:fc0_tempMax] > 22 and [Wetter_Pro:fc0_tempMax] < 25) and [SZ.Jalousie.Links:pct] > 20 or [SZ.Jalousie.Rechts:pct] > 50)
(set SZ.Jalousie.Links 20,set SZ.Jalousie.Rechts 50,set PushMessenger msg 'Sonnenschutz aktiviert' 'Die Jalousien (SZ) wurden auf 20:50 gesetzt.')
DOELSEIF ([SH.Beschattung.OnOff] eq "on" and [Wetter_Pro:fc0_tempMax] >= 25 and [SZ.Jalousie.Links:pct] > 5 or [SZ.Jalousie.Rechts:pct] > 10)
(set SZ.Jalousie.Links 5,set SZ.Jalousie.Rechts 10,set PushMessenger msg 'Sonnenschutz aktiviert' 'Die Jalousien (SZ) wurden auf 5:10 gesetzt.')
DOELSE (set SZ.Jalousie.Links 100,set SZ.Jalousie.Rechts 100,set PushMessenger msg 'Sonnenschutz dektiviert' 'Die Jalousien (SZ) wurden wieder hochgefahren.')
FUUID 5ccbe8a7-f33f-e9d9-4bad-0c2654dcba0bd97d
MODEL FHEM
NAME SH.Beschattung.On
NR 1273
NTFY_ORDER 50-SH.Beschattung.On
STATE cmd_1
TYPE DOIF
VERSION 19303 2019-05-01 08:47:16
Helper:
DBLOG:
cmd:
logdb:
TIME 1562141114.02054
VALUE 1
cmd_event:
logdb:
TIME 1562141114.02054
VALUE Wetter_Pro
cmd_nr:
logdb:
TIME 1562141114.02054
VALUE 1
mode:
logdb:
TIME 1562140903.84434
VALUE enabled
state:
logdb:
TIME 1562141114.02054
VALUE cmd_1
READINGS:
2019-07-03 10:05:33 Device SZ.Jalousie.Links
2019-07-03 10:05:13 cmd 1
2019-07-03 10:05:13 cmd_event Wetter_Pro
2019-07-03 10:05:13 cmd_nr 1
2019-07-03 10:05:13 e_Wetter_Pro_fc0_tempMax 19
2019-07-03 10:01:43 mode enabled
2019-07-03 10:05:13 state cmd_1
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'SH.Beschattung.OnOff','STATE') eq "on" and (::ReadingValDoIf($hash,'Wetter_Pro','fc0_tempMax') > 22 and ::ReadingValDoIf($hash,'Wetter_Pro','fc0_tempMax') < 25) and ::ReadingValDoIf($hash,'SZ.Jalousie.Links','pct') > 20 or ::ReadingValDoIf($hash,'SZ.Jalousie.Rechts','pct') > 50
1 ::InternalDoIf($hash,'SH.Beschattung.OnOff','STATE') eq "on" and ::ReadingValDoIf($hash,'Wetter_Pro','fc0_tempMax') >= 25 and ::ReadingValDoIf($hash,'SZ.Jalousie.Links','pct') > 5 or ::ReadingValDoIf($hash,'SZ.Jalousie.Rechts','pct') > 10
Hi,
ganz einfach: wenn dieser Ausdruck wahr ist or [SZ.Jalousie.Rechts:pct] > 50 ist der gesamte Ausdruck wahr.
Du musst klammern :) und dies beachten https://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity
Also das Verhalten ist nicht willkürlich sondern (un)gewollt. ;)
Gruß Otto
Jo, die klammer habe ich ganz übersehen. Danke.
Ich habe es noch etwas optimiert. Denn gestern hat fhem einfach die Jalousie nach 19 bewegt obwohl Beschattung auf off stand.
([09:00-19:00] and [SH.Beschattung.OnOff] eq "on" and ([Wetter_Pro:fc0_tempMax] > 22 and [Wetter_Pro:fc0_tempMax] < 25) and ([SZ.Jalousie.Links:pct] > 20 or [SZ.Jalousie.Rechts:pct] > 50))
(set SZ.Jalousie.Links 20,set SZ.Jalousie.Rechts 50,set PushMessenger msg 'Sonnenschutz aktiviert' 'Die Jalousien (SZ) wurden auf 20:50 gesetzt.')
DOELSEIF ([09:00-19:00] and [SH.Beschattung.OnOff] eq "on" and [Wetter_Pro:fc0_tempMax] >= 25 and ([SZ.Jalousie.Links:pct] > 5 or [SZ.Jalousie.Rechts:pct] > 10))
(set SZ.Jalousie.Links 5,set SZ.Jalousie.Rechts 10,set PushMessenger msg 'Sonnenschutz aktiviert' 'Die Jalousien (SZ) wurden auf 5:10 gesetzt.')
DOELSEIF ([09:00-19:00] and [SH.Beschattung.OnOff] eq "on" and [Wetter_Pro:fc0_uv] > 7)
(set SZ.Jalousie.Links 50,set SZ.Jalousie.Rechts 65)
DOELSE (set SZ.Jalousie.Links 100,set SZ.Jalousie.Rechts 100,set PushMessenger msg 'Sonnenschutz dektiviert' 'Die Jalousien (SZ) wurden wieder hochgefahren.')
Schau Dir mal AutoShuttersControl an.
https://forum.fhem.de/index.php/topic,99980.0.html
AutoShuttersControl gleicht mir für den ersten Blick nach einer Studienaufgabe ;)
Im Prinzip wären hier dann ja die Befehle ASC_Shading_Angle_Left,... Aber was hat es mit dem Vorlaufwinkel auf sich und wie berechnet man den ?
Vorlauf ist nichts weiter wie der Winkel ab dem die Sonne an fängt ein zu fallen
Also bei 180 Fensterstand fängt die Sonne bei 140 an rein zu scheinen. Wäre also ein Vorlaufwinkel von 40. Beim Nachlauf dann genau so.
Grüße
ZitatAutoShuttersControl gleicht mir für den ersten Blick nach einer Studienaufgabe
Nicht doch. Die sind schon noch etwas fortgeschrittener...
LG
pah