Hallo,
nachdem bei mir jetzt alle Grundfunktionen laufen, wollte ich meine Rolladensteuerung realisieren.
Dazu habe ich mir einen Dummy gebastelt, damit die Rolläden nur hoch und runterfahren, wenn dieser Dummy auf "on" steht...
Mein aus diversen Anleitungen zusammengeschnippseltes DoIf sieht so aus:
define di_RolladenSteuerung DOIF ##Rolladen sind zwischen Sonnenuntergang und Sonnenaufgang geschlossen, sonst auf\
(([du_RolloAutomatik:"on"]) and ([{sunset(-1500, "16:00", "22:00")}]-[{sunrise(+1800, "07:00", "9:00")}])) (set du_RolloStatus Geschlossen)\
DOELSE (set du_RolloStatus Offen)
attr di_RolladenSteuerung do always
du_RolloAutomatik ist der Schalter, du_RolloStatus wollte ich erstmal verwenden um zu testen ob es geht... Ich kann beide Dummies von hand mit set ... steuern
Aber irgendwie ist der Status nachts nicht geschlossen...
Was mache ich falsch ?
Schau dir mal die eckigen Klammern an. Sollte so aussehen [von-bis]
Ansonsten wäre ein list des DOIFs gut.
Edit: do always brauchst du nicht.
ZitatDazu habe ich mir einen Dummy gebastelt, damit die Rolläden nur hoch und runterfahren, wenn dieser Dummy auf "on" steht...
Dann solltest du den Zustand des Dummys abfragen und nicht nur das Ereignis:
[du_RolloAutomatik] eq "on"
Das war ein guter Tipp.. jetzt schaltet es tagsüber wenigstens mal von gesschlossen auf offen...
Ich warte mal heute Nacht ab..
Also... Der DoIf schaltet, aber nicht so wie ich will....
So wie es aussieht, schaltet er genau zu dem Zeitpunkt, an dem er soll.. Sonnenaufgang oder Untergang...
Aber: Angenommen, mein Schalter du_RolloAutomatik ist aus, ich komme abend heim und sehe: oh.. alle Rollos noch offen, dann schalte ich den du_RolloAutomatik auf on, dann soll er das runterfahren nachholen ...
Mach er nicht, er schaltet den Status auf offen...
Wenn ich es provoziere, Tagsüber den Status auf geschlossen schalte, dann den Dummy du_RolloAutomatik auf off, und dann wieder auf on , dann sollte er doch den Status wieder auf offen setzen, da 1.) Tagsüber und 2. ) du_Rolloautomatik auf on steht ??
Oder wie könnte ich das bauen ?
hier mal ein list:
Internals:
DEF ##Rolladen sind zwischen Sonnenuntergang und Sonnenaufgang geschlossen, sonst auf
((([du_RolloAutomatik] eq "on") and ([{sunset(-1500, "16:00", "22:00")}]-[{sunrise(+1800, "07:00", "9:00")}]))) (set du_RolloStatus Geschlossen)
DOELSE (set du_RolloStatus Offen)
NAME di_RolladenSteuerung
NR 257
NTFY_ORDER 50-di_RolladenSteuerung
STATE cmd_2
TYPE DOIF
Readings:
2017-05-02 07:23:57 Device du_RolloAutomatik
2017-05-02 07:23:37 cmd 2
2017-05-02 07:23:37 cmd_event du_RolloAutomatik
2017-05-02 07:23:37 cmd_nr 2
2017-05-02 07:23:57 e_du_RolloAutomatik_STATE on
2017-05-02 07:23:37 state cmd_2
2017-05-02 07:23:30 timer_01_c01 02.05.2017 20:51:02
2017-05-02 07:23:30 timer_02_c01 03.05.2017 07:00:00
Condition:
0 ((InternalDoIf($hash,'du_RolloAutomatik','STATE') eq "on") and (DOIF_time_once($hash,0,$wday)-DOIF_time_once($hash,1,$wday)))
Days:
Devices:
0 du_RolloAutomatik
all du_RolloAutomatik
Do:
0:
0 set du_RolloStatus Geschlossen
1:
0 set du_RolloStatus Offen
Helper:
event on
globalinit 1
last_timer 2
sleeptimer -1
timerdev du_RolloAutomatik
timerevent on
triggerDev du_RolloAutomatik
timerevents:
on
timereventsState:
state: on
triggerEvents:
on
triggerEventsState:
state: on
Internals:
0 du_RolloAutomatik:STATE
all du_RolloAutomatik:STATE
Itimer:
Localtime:
0 1493751062
1 1493787600
Readings:
Realtime:
0 20:51:02
1 07:00:00
Regexp:
0:
All:
State:
State:
Time:
0 {sunset(-1500,"16:00","22:00")}
1 {sunrise(+1800,"07:00","9:00")}
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timers:
0 0 1
Trigger:
Triggertime:
1493751062:
localtime 1493751062
Hash:
1493787600:
localtime 1493787600
Hash:
Attributes:
room Haus