Hallo zusammen,
ich versuche gerade meine Rolladensteuerung, welche bis jetzt statisch per sunrise/sunset läuft etwas zu erweitern.
Es soll folgendes passieren:
ich habe 3 dummys dummyzeit_hoch, dummyzeit_runter und dummy_modus
in den 2 time dummys wird im state die Uhrzeit im Format 16:00 gespeichert. Im dummy Modus die werte "auto,manuell,aus"
mein aktor heisst rollo_wz
nun scheitere ich am DOIF.....es soll folgendes machen: wenn im modus dummy auto gesetzt ist, soll der aktor via sunrise/sunset automatisch auf und zu gehen.
ist der modus zeit gesetzt, sollen die zeiten für auf und zu von den beiden dummys benutzt werden
ist der modus auf aus, soll die steuerung gar nichts machen.
ich habe es bereits geschafft, dass der aktor bei der zeit schaltet, aber wenn ich die and bedingung mit hinzufüge geht nichts mehr.
Die Commandref hilft mir leider auch nicht viel weiter :-(
Vielleicht kann mir hier jemand weiter helfen, damit ich wieder etwas klarer sehe und dazu lerne .
Danke schonmal im voraus
Gruß
Jens
Dann lass uns doch mal Deine Versuche sehen.
Hallo zusammen,
war wohl doch gestern etwas zu spät :-(
hier meine Versuche:
Dummy für Status:
define DU_OG_KA_RO dummy
attr DU_OG_KA_RO room LichtRollo
attr DU_OG_KA_RO setList state:sommer,winter,aus,zeit
Dummy für Zeit:
define du_Rollo_Zeit_ru dummy
attr du_Rollo_Zeit_ru alias Rolo Kammer Zeit hoch:
attr du_Rollo_Zeit_ru devStateIcon .*:rc_BLANK
attr du_Rollo_Zeit_ru fp_test 211,265,2,
attr du_Rollo_Zeit_ru group Rollos_Settings
attr du_Rollo_Zeit_ru icon icoUhr
attr du_Rollo_Zeit_ru room LichtRollo
attr du_Rollo_Zeit_ru setList state:time
attr du_Rollo_Zeit_ru sortby 21
attr du_Rollo_Zeit_ru webCmd state
DOIF: zum testen nur mal mit einem Kommando -- Schaltet einen Dummy on oder off
define di_time DOIF ([du_Rollo_Zeit_ru:state] and [DU_OG_KA_RO:state] eq "zeit")(set lamp on)
attr di_time room LichtRollo
Es tut sich da nichts um die eingestellte Zeit :-(....wenn ich aber den Dummy für den Status umstelle z.b. von zeit auf winter und wieder zurück auf zeit geht die lampe am, obwohl die erste Bedingung mit der Zeit nicht erfüllt ist....
Was mir auch noch ein Rätsel ist, ist was ich bei "Aus" definiere....gibts da so ne Art "do nothing" oder bleibt das einfach leer, weil diese Bedingung nie erfüllt wird?
Danke und Gruß
Jens
Indirekte Zeitangaben brauchen doppelte eckige Klammern im DOIF. Siehe commandref.
Hallo,
super das wars....mit den doppelten Klammern stehe ich irgendwie auf Kriegsfuss :-)
Jetzt muss ich nur noch die anderen 3 Stati hineinbasteln.
Danke nochmal.
Gruß
Jens
Hallo zusammen,
es funktioniert zwar irgenwie, aber nicht zuverlässig :-( der eine Rolladen, welcher nach sunset/sunrise gesteuert wird ist perfekt runtergefahren, der 2. welcher die manuelle zeitsteuerung besitzt hat rein gar nichts gemacht. Setze ich die Zeit manuell im dummy neu und drücke set initialize im DOIF klappt es ein mal dann ist wieder keine Funktion mehr.
Kurzbeschreibung: wenn in Dummy1 der Modus Winter gesetzt ist, soll der Rolladen nach sunrise/sunset auf- bzw. zugehen. wenn im Dummy 1 der Modus Zeit gesetzt ist, soll er zur Uhrzeit in Dummy2 bzw3 auf bzw. zu gehen.
Hier mal mein "Werk:
List vom DOIF:
Internals:
DEF ([[du_og_wz_ro1_closetime:state]] and [du_og_wz_ro1_mode:state] eq "Zeit") (set OG_WZ_RO1 pct 10) DOELSEIF ([{sunrise("CIVIL",0,"16:30","19:00")}] and [du_og_wz_ro1_mode:state] eq "Winter") (set OG_WZ_RO1 pct 10)
NAME di_steuerung_og_wz_ro1_close
NR 260
NTFY_ORDER 50-di_steuerung_og_wz_ro1_close
STATE cmd_1
TYPE DOIF
Readings:
2015-12-02 22:50:38 Device du_og_wz_ro1_mode
2015-12-02 22:57:00 cmd_event timer_1
2015-12-02 22:57:00 cmd_nr 1
2015-12-02 22:50:38 e_du_og_wz_ro1_mode_state Zeit
2015-12-02 22:57:00 state cmd_1
2015-12-02 23:12:00 timer_1_c1 03.12.2015 23:12:00
2015-12-02 22:53:29 timer_2_c2 03.12.2015 16:30:00
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ReadingValDoIf('du_og_wz_ro1_mode','state','') eq "Zeit"
1 DOIF_time_once($hash,$hash->{timer}{1},$wday,"") and ReadingValDoIf('du_og_wz_ro1_mode','state','') eq "Winter"
Days:
Devices:
0 du_og_wz_ro1_mode
1 du_og_wz_ro1_mode
all du_og_wz_ro1_mode
Do:
0:
0 set OG_WZ_RO1 pct 10
1:
0 set OG_WZ_RO1 pct 10
Helper:
globalinit 1
last_timer 2
sleeptimer -1
Internals:
Itimer:
all du_og_wz_ro1_closetime
Readings:
0 du_og_wz_ro1_mode:state
1 du_og_wz_ro1_mode:state
all du_og_wz_ro1_mode:state
Realtime:
0 23:12:00
1 16:30:00
State:
Time:
0 [du_og_wz_ro1_closetime:state]
1 {sunrise("CIVIL",0,"16:30","19:00")}
Timecond:
0 0
1 1
Timer:
0 0
1 0
Timerfunc:
Timers:
0 0
1 1
Attributes:
alias Steuerung Rolladen Wohnzimmer zu
group Rolladen_Wohnzimmer
room LichtRollo
Das DOIF für Rolladen auf: (für Rolladen zu existiert ein weiteres, identisches nur mit den Dummy für die Schliesszeit)
# doif steuerung rolladen Wohnzimmer zu
define di_steuerung_og_wz_ro1_close DOIF ([[du_og_wz_ro1_closetime:state]] and [du_og_wz_ro1_mode:state] eq "Zeit") (set OG_WZ_RO1 pct 10) DOELSEIF ([{sunrise("CIVIL",0,"16:30","19:00")}] and [du_og_wz_ro1_mode:state] eq "Winter") (set OG_WZ_RO1 pct 10)
attr di_steuerung_og_wz_ro1_close alias Steuerung Rolladen Wohnzimmer zu
attr di_steuerung_og_wz_ro1_close group Rolladen_Wohnzimmer
attr di_steuerung_og_wz_ro1_close room LichtRollo
Dummy Schlieszeit:
#Close time Wohnzimmer
define du_og_wz_ro1_closetime dummy
attr du_og_wz_ro1_closetime alias 3-Rolladen Wohnzimmer zu
attr du_og_wz_ro1_closetime group Rolladen_Wohnzimmer
attr du_og_wz_ro1_closetime room LichtRollo
attr du_og_wz_ro1_closetime setList state:16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45
attr du_og_wz_ro1_closetime webCmd state
Dummy für Modus:
#Modus Rolladen Wohnzimmer
define du_og_wz_ro1_mode dummy
attr du_og_wz_ro1_mode alias 1-Rolladen Wohnzimmer Modus
attr du_og_wz_ro1_mode group Rolladen_Wohnzimmer
attr du_og_wz_ro1_mode room LichtRollo
attr du_og_wz_ro1_mode setList state:Aus,Zeit,Winter,Sommer
attr du_og_wz_ro1_mode webCmd state
Ich habe das Gefühl, es fehlt irgendwo der "Trigger" um die Aktion starten zu lassen, aber ich hänge hier etwas fest.
Es wäre super, wenn hier jemand der experten mal einen Blick drüber werfen könnte.
Danke und Gruß
Jens
Moin zusammen,
hat den keiner eine Idee, was hier falsch laufen könnte?
Hab gestern noch etwas dran rumgebastelt, aber leider keine Lösung gefunden. Und der WAF schwindelt allmälig :-(
Gruß
Jens
Mahlzeit,
hat zwar nix mit deinem Problem zu tun, aber mich wundert dieser code etwas:
{sunrise("CIVIL",0,"16:30","19:00")}
Sonnenaufgang ist doch bei uns niemals nach 16:30 Uhr, oder ;)
Oder meintest du {sunset...
Gruß
Andreas
Zu deiner sunrise-Angabe habe ich noch folgendes in der commandref gefunden:
Schalten mit Zeitfunktionen, hier: bei Sonnenaufgang und Sonnenuntergang:
define di_light DOIF ([+{sunrise_rel(900,"06:00","08:00")}]) (set outdoorlight off) DOELSEIF ([+{sunset_rel(900,"17:00","21:00")}]) (set outdoorlight on)
Vielleicht musst du hier auch das "+"-Zeichen setzen, damit es funktioniert?
Das wissen andere aber wahrscheinlich besser...ich konnte nur auf die Schnelle schauen...
Gruß
Andreas
Zitat von: nettiger am 03 Dezember 2015, 11:48:34
Hallo zusammen,
es funktioniert zwar irgenwie, aber nicht zuverlässig :-( der eine Rolladen, welcher nach sunset/sunrise gesteuert wird ist perfekt runtergefahren, der 2. welcher die manuelle zeitsteuerung besitzt hat rein gar nichts gemacht. Setze ich die Zeit manuell im dummy neu und drücke set initialize im DOIF klappt es ein mal dann ist wieder keine Funktion mehr.
Kurzbeschreibung: wenn in Dummy1 der Modus Winter gesetzt ist, soll der Rolladen nach sunrise/sunset auf- bzw. zugehen. wenn im Dummy 1 der Modus Zeit gesetzt ist, soll er zur Uhrzeit in Dummy2 bzw3 auf bzw. zu gehen.
Hier mal mein "Werk:
List vom DOIF:
Internals:
DEF ([[du_og_wz_ro1_closetime:state]] and [du_og_wz_ro1_mode:state] eq "Zeit") (set OG_WZ_RO1 pct 10) DOELSEIF ([{sunrise("CIVIL",0,"16:30","19:00")}] and [du_og_wz_ro1_mode:state] eq "Winter") (set OG_WZ_RO1 pct 10)
NAME di_steuerung_og_wz_ro1_close
NR 260
NTFY_ORDER 50-di_steuerung_og_wz_ro1_close
STATE cmd_1
TYPE DOIF
Readings:
2015-12-02 22:50:38 Device du_og_wz_ro1_mode
2015-12-02 22:57:00 cmd_event timer_1
2015-12-02 22:57:00 cmd_nr 1
2015-12-02 22:50:38 e_du_og_wz_ro1_mode_state Zeit
2015-12-02 22:57:00 state cmd_1
2015-12-02 23:12:00 timer_1_c1 03.12.2015 23:12:00
2015-12-02 22:53:29 timer_2_c2 03.12.2015 16:30:00
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ReadingValDoIf('du_og_wz_ro1_mode','state','') eq "Zeit"
1 DOIF_time_once($hash,$hash->{timer}{1},$wday,"") and ReadingValDoIf('du_og_wz_ro1_mode','state','') eq "Winter"
Days:
Devices:
0 du_og_wz_ro1_mode
1 du_og_wz_ro1_mode
all du_og_wz_ro1_mode
Do:
0:
0 set OG_WZ_RO1 pct 10
1:
0 set OG_WZ_RO1 pct 10
Helper:
globalinit 1
last_timer 2
sleeptimer -1
Internals:
Itimer:
all du_og_wz_ro1_closetime
Readings:
0 du_og_wz_ro1_mode:state
1 du_og_wz_ro1_mode:state
all du_og_wz_ro1_mode:state
Realtime:
0 23:12:00
1 16:30:00
State:
Time:
0 [du_og_wz_ro1_closetime:state]
1 {sunrise("CIVIL",0,"16:30","19:00")}
Timecond:
0 0
1 1
Timer:
0 0
1 0
Timerfunc:
Timers:
0 0
1 1
Attributes:
alias Steuerung Rolladen Wohnzimmer zu
group Rolladen_Wohnzimmer
room LichtRollo
Das DOIF für Rolladen auf: (für Rolladen zu existiert ein weiteres, identisches nur mit den Dummy für die Schliesszeit)
# doif steuerung rolladen Wohnzimmer zu
define di_steuerung_og_wz_ro1_close DOIF ([[du_og_wz_ro1_closetime:state]] and [du_og_wz_ro1_mode:state] eq "Zeit") (set OG_WZ_RO1 pct 10) DOELSEIF ([{sunrise("CIVIL",0,"16:30","19:00")}] and [du_og_wz_ro1_mode:state] eq "Winter") (set OG_WZ_RO1 pct 10)
attr di_steuerung_og_wz_ro1_close alias Steuerung Rolladen Wohnzimmer zu
attr di_steuerung_og_wz_ro1_close group Rolladen_Wohnzimmer
attr di_steuerung_og_wz_ro1_close room LichtRollo
Dummy Schlieszeit:
#Close time Wohnzimmer
define du_og_wz_ro1_closetime dummy
attr du_og_wz_ro1_closetime alias 3-Rolladen Wohnzimmer zu
attr du_og_wz_ro1_closetime group Rolladen_Wohnzimmer
attr du_og_wz_ro1_closetime room LichtRollo
attr du_og_wz_ro1_closetime setList state:16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45
attr du_og_wz_ro1_closetime webCmd state
Dummy für Modus:
#Modus Rolladen Wohnzimmer
define du_og_wz_ro1_mode dummy
attr du_og_wz_ro1_mode alias 1-Rolladen Wohnzimmer Modus
attr du_og_wz_ro1_mode group Rolladen_Wohnzimmer
attr du_og_wz_ro1_mode room LichtRollo
attr du_og_wz_ro1_mode setList state:Aus,Zeit,Winter,Sommer
attr du_og_wz_ro1_mode webCmd state
Ich habe das Gefühl, es fehlt irgendwo der "Trigger" um die Aktion starten zu lassen, aber ich hänge hier etwas fest.
Es wäre super, wenn hier jemand der experten mal einen Blick drüber werfen könnte.
Danke und Gruß
Jens
Die Zeiten sind sauber gesetzt, damit wird dein Modul auf jeden Fall um diese Zeit getriggert. Da du das Attribut do always nicht gesetzt hast, kann das Schalten immer nur im Wechsel stattfinden, es wird also niemals zwei mal cmd_1 nacheinander geschaltet. Bei dir dürfte das Setzen des Attributes do always unkritisch sein, da du keine zyklischen Trigger in der Definition hast.
Gruß
Damian
Halo zusammen,
erstmal Danke für die Hilfe
mit den do always sieht die Sache schonmal ganz gut aus....die Rolladen sind heute andend runter gefahren und ich bin guter Hoffnung, dass sie moirgen früh auch wieder rauf gehen.
Das mit den Uhrzeiten bei Sunset/Sunrise war ein blöder Copy&Paste Fehler......hatte die Zeilen nur immer kopiert und vergessen, aus runrise Sunset zu machen.
Gruß
Jens