Ich habe mir eine Rollladensteuerung angelehnt an einen Wiki Artikel erstellt.
Die Steuerung mit einem DOIF funktioniert, aber nur teilweise und ich finde den Fehler nicht.
Genutzt werden dazu noch einige Dummys die bezeichnet werden mit
"du_RolloZeit_runter_start" eingestellt auf 18:15 Uhr für die erste Zeit wenn es dunkel ist und der Rolladen runter fahren soll.
"du_RolloZeit_runter_ende" eingestellt auf 18:30 Uhr (nur zum Testen) für die zweite wenn die erste Zeit nicht erfüllt war weil evtl. die Helligkeit noch zu hoch war.
Funktion die OK sind
1. der Rollladen fährt morgens zur eingestellten Zeit (08:15 Uhr) hoch
2. der Rollladen fährt Abends zur zweiten eingestellten Zeit (18:30 Uhr) herunter
3. der Rollladen fährt hoch wenn die Terrassentür über Kontakt geöffnet wird
Funktionen die nicht OK sind
1. der Rollladen ist nicht zur ersten Zeit (mit Dummy "du_RolloZeit_runter_start" 18:15 Uhr) runter gefahren, obwohl die Helligkeit unter dem Wert 0.90 war..!
2. nach dem Öffnen, die Terrassentür wieder geschlossen, die Rollläden sind nicht mehr runter gefahren..!
Also was nicht OK ist, dass runter fahren denn es hat beides mal nicht funktioniert zur Uhrzeit nicht und als ich die Terrassentür geschlossen habe.
Code DOIF:
([RolloWZmodus] eq "FHEM" and [WZ_TerrasseTuer] eq "closed" and ([Aussensensor_Terrasse:luminosity] < [du_Rollo_Luminosity_runter:state]
and [{ReadingsVal("du_RolloZeit_runter_start", "state", "22:00:00")}-{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}])
or [{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}])
({if (ReadingsVal("RollladenWZ", "state", "---") ne "off") {fhem("set RollladenWZ off")}})
DOELSEIF ([RolloWZmodus] eq "FHEM" and ([{ReadingsVal("du_RolloZeit_hoch", "state", "10:00:00")}|8] or
[{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "10:00:00")}|7]) or ([WZ_TerrasseTuer:state] eq "open"))
({if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on")}})
Machmal ein "list DOIF" und poste das Ergebnis
OK hätte ich auch selbst dran denken können... ;)
Internals:
CFGFN ./FHEM/Automation.cfg
DEF ([RolloWZmodus] eq "FHEM" and [WZ_TerrasseTuer] eq "closed" and ([Aussensensor_Terrasse:luminosity] < [du_Rollo_Luminosity_runter:state]
and [{ReadingsVal("du_RolloZeit_runter_start", "state", "22:00:00")}-{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}])
or [{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}])
({if (ReadingsVal("RollladenWZ", "state", "---") ne "off") {fhem("set RollladenWZ off")}})
DOELSEIF ([RolloWZmodus] eq "FHEM" and ([{ReadingsVal("du_RolloZeit_hoch", "state", "10:00:00")}|8] or
[{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "10:00:00")}|7]) or ([WZ_TerrasseTuer:state] eq "open"))
({if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on")}})
NAME di_rollladenWZ_TK_LichtTerrasse
NR 134
NTFY_ORDER 50-di_rollladenWZ_TK_LichtTerrasse
STATE initialized
TYPE DOIF
Readings:
2015-02-23 20:20:17 e_Aussensensor_Terrasse_luminosity 0
2015-02-23 19:51:57 state initialized
2015-02-23 19:51:57 timer_1_c1 24.02.2015 18:20:00
2015-02-23 19:51:57 timer_2_c1 24.02.2015 18:30:00
2015-02-23 19:51:57 timer_3_c1 24.02.2015 18:30:00
2015-02-23 19:51:57 timer_4_c2 24.02.2015 08:15:00|8
2015-02-23 19:51:57 timer_5_c2 24.02.2015 08:40:00|7
Condition:
0 InternalDoIf('RolloWZmodus','STATE','') eq "FHEM" and InternalDoIf('WZ_TerrasseTuer','STATE','') eq "closed" and (ReadingValDoIf('Aussensensor_Terrasse','luminosity','') < ReadingValDoIf('du_Rollo_Luminosity_runter','state','') and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")) or DOIF_time_once($hash->{timer}{2},$wday,"")
1 InternalDoIf('RolloWZmodus','STATE','') eq "FHEM" and (DOIF_time_once($hash->{timer}{3},$wday,"8") or DOIF_time_once($hash->{timer}{4},$wday,"7")) or (ReadingValDoIf('WZ_TerrasseTuer','state','') eq "open")
Days:
3 8
4 7
Devices:
0 RolloWZmodus WZ_TerrasseTuer Aussensensor_Terrasse du_Rollo_Luminosity_runter
1 RolloWZmodus WZ_TerrasseTuer
all RolloWZmodus WZ_TerrasseTuer Aussensensor_Terrasse du_Rollo_Luminosity_runter
Do:
0 {if (ReadingsVal("RollladenWZ", "state", "---") ne "off") {fhem("set RollladenWZ off")}}
1 {if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on")}}
Helper:
last_timer 5
sleeptimer -1
Internals:
0 RolloWZmodus:STATE WZ_TerrasseTuer:STATE
1 RolloWZmodus:STATE
all RolloWZmodus:STATE WZ_TerrasseTuer:STATE
Readings:
0 Aussensensor_Terrasse:luminosity du_Rollo_Luminosity_runter:state
1 WZ_TerrasseTuer:state
all Aussensensor_Terrasse:luminosity du_Rollo_Luminosity_runter:state WZ_TerrasseTuer:state
Realtime:
0 18:20:00
1 18:30:00
2 18:30:00
3 08:15:00
4 08:40:00
State:
Time:
0 {ReadingsVal("du_RolloZeit_runter_start", "state", "22:00:00")}
1 {ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}
2 {ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}
3 {ReadingsVal("du_RolloZeit_hoch", "state", "10:00:00")}
4 {ReadingsVal("du_RolloZeit_hoch_WoE", "state", "10:00:00")}
Timecond:
0 0
1 0
2 0
3 1
4 1
Timer:
0 0
1 0
2 0
3 0
4 0
Timerfunc:
Timers:
0 0 1 2
1 3 4
Trigger:
Attributes:
room Automation
Worauf ich immer noch reinfalle ist die Klammersetzung, sowie and/or.
Hast Du das schon geprüft ?
Ich schreibe bei mir jede Bedingung in eine eigene Zeile, das hilft mir die Übersicht zu bewahren, und geht bei "DOIF" ja simpelst mit einem Zeilenumbruch im DEF. ( Sofern Du das noch nicht wusstest)
Doch ich weiß es... ;)
Hatte das auch schon in Verdacht, aber zwei Versuche scheiterten..! :-\
Ich habe nun 4 Versuche mit Klammern erstellt, davon funktionierten Drei genau wie die hier vorgestellte, der Rollladen fuhr nur hoch, nicht mehr runter.
Bei einem fuhr er gar nicht. :-\
Hi Rene,
was ich an Deiner Stelle jetzt mal machen würde, wäre anstelle der ReadingsVal("...."), welche in den Bedingungen des DOIFs stehen, die Werte statisch, also beispielsweise [22:10:00] einzutragen.
Damit kann man schon mal Unstimmigkeiten mit den "Wertedummys" ausschliessen.
was mich jetzt nur wundert das dies bei dir funktioniert... ich habe ja nur die Geräte auf meine angepaßt und mein Master Dummy heißt anders, alles andere ist identisch.
Die Readingsval stehen ja nach wie vor auf 22:00:00 oder welche meinst du?
Hier mal noch der aktuelle Code aus dem DEF:
([RolloWZmodus] eq "FHEM"
and [WZ_TerrasseTuer] eq "closed"
and ([Aussensensor_Terrasse:luminosity] < [du_Rollo_Luminosity_runter:state]
and [{ReadingsVal("du_RolloZeit_runter_start", "state", "22:00:00")}-{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}])
or [{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}]) ({if (ReadingsVal("RollladenWZ", "state", "---") ne "off") {fhem("set RollladenWZ off")}})
DOELSEIF ([RolloWZmodus] eq "FHEM"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "10:00:00")}|8]
or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "10:00:00")}|7])
or ([WZ_TerrasseTuer:state] eq "open")) ({if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on")}})
das mit der Klammerei halte ich immer noch für denkbar, da ich verschiedene Varianten hatte und bis auf eine liefen die anderen 3 genauso wie die jetzige...
Ich probiere das mit den Klammern immer mit notepad++ da kann man wunderbar sehen welche Klammerpaare zusammen gehören.
Auch schaue ich laufend in die commandref zum DOIF an um die ganzen Beispiele anzuschauen, aber es ist leider kein so verschachteltes dabei... somit ist es für mich erst einmal sehr schwierig die ganzen Bedingungen und Befehle zu klammern ich habe auch schon versucht jede einzelne Bedingung und jeden Befehl zu klammern aber das geht gar nicht...!
Evtl. schaut Damian mal drauf und sieht sofort was falsch ist... Ich sehe zur Zeit nur Klammern ;) :D :-\
Zitatdefine <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Sorry, mit den ReadingsVal(..) scheint ja alles korrekt zu sein. Denn die timer, des DOIFs sind ja korrekt auf den Werten der Eingabedummys eingestellt.
Sieht man ja am list des DOIFs.
Wobei wenn ich mir das List von Deinem DOIF anschaue scheint mir folgendes unklar zu sein bzw erklärt es, dass die Rolländen nach schliessen der Tür nicht runter fahren.
Du hast Deinen Zeitbereich von 18:20:00 bis 18:30:00 definiert (timer_1_c1 ... timer_3_c1).
Deine Readings wurden aber um 19:51:57 aktualisiert.
Damit ist dies ja ausserhalb des Bereichs von 18:20:00 - 18:30:00. Somit wird cmd_1 vom DOIF nicht ausgeführt.
Passt also, wenn Du um 19:15:27 die Tür geschlossen hast und die Rolladen nicht runter gefahren sind.
Da musst du entweder an dem Zeitraum schrauben oder eine andere Logik überlegen ;)
Zitat von: maxritti am 24 Februar 2015, 13:38:05
Wobei wenn ich mir das List von Deinem DOIF anschaue scheint mir folgendes unklar zu sein bzw erklärt es, dass die Rolländen nach schliessen der Tür nicht runter fahren.
Du hast Deinen Zeitbereich von 18:20:00 bis 18:30:00 definiert (timer_1_c1 ... timer_3_c1).
Deine Readings wurden aber um 19:51:57 aktualisiert.
Damit ist dies ja ausserhalb des Bereichs von 18:20:00 - 18:30:00. Somit wird cmd_1 vom DOIF nicht ausgeführt.
Passt also, wenn Du um 19:15:27 die Tür geschlossen hast und die Rolladen nicht runter gefahren sind.
ja das hatte ich nur gemacht damit ich sehe ob die Zeit funktioniert wann er spätestens runter fährt und diese Zeit, also die zweite hat ja auch funktioniert, obwohl er auch schon zur 1.Zeit hätte runter fahren müssen, denn Luminosity war schon unter dem eingestellten Wert von 0.90
Also zum ich sage mal Produktivstatus stelle ich diese auch wieder auf irgendwas um die 22:00 Uhr.
Dazu mal die Frage, wenn ich diese jetzt auf 22 Uhr stelle, dann funktioniert das ganze System also auch nicht mehr nach 22 Uhr, oder wie muss ich das verstehen..?
Nee das wäre ja auch Quatsch, denn vorher ist er ja noch gar nicht unten...
EDITH://
also meine Logik wäre, der Rollladen ist runter gefahren egal welche Zeit auch immer und ich möchte nochmals raus gehen auf die Terrasse weil es eben noch schön ist draußen gerade jetzt wenn der Frühling/Sommer kommt.
Ich mache also auf und der Rollladen fährt hoch (später auch noch das Terrassenlicht auf EIN)
Viel später ich gehe wieder rein mache zu und der Rollladen geht runter und das Licht wieder aus... ;)
Schön wär's :D
Und ja die Zeit 19:51:57 ist zustande gekommen weil ich ewig herum probiert habe...
Mal schauen wie das heute aussieht, die Readings sind ja bis jetzt von 14:13 Uhr da werde ich mal alles in Ruhe lassen..
Das mit den 22:00 ist korrekt.
Nach dem Zeitraum reagiert das DOIF natürlich nicht mehr.
Jetzt könnte man ja sagen, dann nim doch den Zeitraum einfach raus.
Aber dann gab es das Problem, dass morgens die Rolläden am Schalter hoch gefahren wurden, das nächste mal der Lichsensort gemeldet hat, dass es dunkel ist und schon gingen die Rolläden wieder runter. Das war für mich der Grund dieses Zeitintervall einzuführen.
Auch mit dem Punkt, dass es nach 22 Uhr nicht mehr klappt.
Bislang gab es da bei uns noch keinen Einspruch der Regierung :)
Allerdings so richtig schön ist es in der Tat nicht. Denn damit kommt genau das von Dir geschilderte Problem. Dass die nach dem Ende des Zeitbereichs nicht mehr runterfahren.
Irgendwie drehe ich mich da immer im Kreis.
Vielleicht finden wir da ja irgendwann mal eine gemeinsame Lösung ;)
OK, jetzt haben wir auch einen Nenner...! ;) dann habe ich das absolut verkehrt verstanden und somit auch total umsonst herum probiert...
Mir geht es ja darum das der Rollladen Abends (am liebsten nach Sunset) oder eben nach der von Hand eingestellten Zeit so wie bei deinem DOIF runter fährt...!
Ausgangslage der Rollladen ist unten:
Ich kann Abends egal wann die Terrassentür öffnen - der Rollladen geht wieder hoch und bei mir das Terrassenlicht geht an.
Erst wenn ich wieder rein gehe und die Terrassentür wieder schließe geht der Rollladen runter und das Licht wieder aus...
Das wäre die ideale Konstellation welche ich mir vorgestellt habe.
Erklärung dazu, auch im Sommer fährt der Rollladen zwar spät aber auch irgendwann gegen 22 Uhr runter, jetzt bin ich nicht da und komme erst nach Hause nachdem der Rollladen runter gefahren ist, oder wie auch immer und möchte mich noch gern auf die Terrasse setzen... Jetzt kommt mein DOIF ins Spiel und macht alles wie ich es in meiner Vorstellung beschrieben habe ;)
Das wäre super
Dann werde ich zumindest mal für heute Abend, das DOIF testen ob es vor der eingestellten Zeit den Rollladen hoch und runter fährt..
So die erste Erkenntnis ist da... da es 18.15 Uhr war und dieses meine 1. Zeit zum runter fahren ist.
Trotz das der "e_Aussensensor_Terrasse_luminosity 0.07" anzeigt fährt der Rollladen nicht runter, aktualisiert wurde er ja heute Mittag gegen 14 Uhr.
Jetzt habe ich mal die 2. Zeit verändert und zu dieser fährt er auch runter...
Weiter geht es mit dem Test, ich nehme die zweite Zeit wieder hoch und probieren den Fall mit dem Türkontakt.
EDITH://
funktioniert auch nicht also der Rollladen fährt nicht mehr runter... :-\
Ich habe jetzt mal das DOIF abgeändert damit der Rollladen überhaupt mal runter fährt und werde mal schauen, was er morgen früh macht.
Bearbeiten muss ich jetzt erst mal das Problem das der Rollladen nicht bei der ersten Zeit runter fährt wenn der Helligkeitswert erfüllt ist
Fehler gefunden, weiter unten beschrieben
Interessant wäre dann ein list des DOIFs nach 18:15 gewesen, aber bevor du andere Werte geändert hast.
Müsstest du dann vielleicht morgen noch mal machen.
so ich werd doof aber ein kleiner feiner Fehler meinerseits ;)
jetzt geht das auch das er zur 1. Zeit runter fährt
Schau mal auf mein DOIF ganz am Anfang..!!!
Zitat([RolloWZmodus] eq "FHEM"
and [WZ_TerrasseTuer] eq "closed"
und so muss es sein
Zitat([RolloWZmodus] eq "FHEM"
and [WZ_TerrasseTuer:state] eq "closed"
Das war erst mal das eine... :D
Schon komisch.
Meine Türkontakte werden ja korrekt mit [EG_ku_TK_Strasse] eq "closed" ausgewertet. :o
naja auf jeden Fall geht das nur so... ohne "state" geht gar nichts, vllt weil sie relativ neu sind und evtl. von Homematic was geändert wurde in der Firmware (meine haben Firmware 2.4)
Mal ne andere Frage, wenn ich ein Kommando für das Licht dazu setzen möchte
{fhem("set RollladenWZ on,set M3_LichtTerrasse 1")} das macht er nicht, wie muss ich das schreiben in den Klammern..?
Habe auch einige Versuche aber es geht auch nicht so
{fhem("set RollladenWZ on","set M3_LichtTerrasse 1")}
Diesen Fehler bekommen ich
di_rollladenWZ_TK_LichtTerrasse: {if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on,set M3_LichtTerrasse 1")}}: Unknown argument on,set,
Zitat von: moonsorrox am 24 Februar 2015, 20:03:42
naja auf jeden Fall geht das nur so... ohne "state" geht gar nichts, vllt weil sie relativ neu sind und evtl. von Homematic was geändert wurde in der Firmware (meine haben Firmware 2.4)
Meine sind auch mit 2.4 unterwegs ;)
Zitat von: moonsorrox am 24 Februar 2015, 20:03:42
Mal ne andere Frage, wenn ich ein Kommando für das Licht dazu setzen möchte
{fhem("set RollladenWZ on,set M3_LichtTerrasse 1")} das macht er nicht, wie muss ich das schreiben in den Klammern..?
Habe auch einige Versuche aber es geht auch nicht so
{fhem("set RollladenWZ on","set M3_LichtTerrasse 1")}
Diesen Fehler bekommen ich
di_rollladenWZ_TK_LichtTerrasse: {if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on,set M3_LichtTerrasse 1")}}: Unknown argument on,set,
Auch so eine Sache für sich.
Erstellst Du so ein DOIF:
define di_Test DOIF ([du_Schalter:state] eq "on") ({fhem("set du_Eins ein");; fhem("set du_Zwei ein")})
Steht nachher im DEF des DOIFs nur noch ein ; zwischen den beiden fhem(..).
Wird das DOIF getriggert, so kommen in der Tat Fehlermeldung:
Unknown command {fhem("set, try help.
Gehst Du in dem Device in die DEF und machst aus dem einen ; ein doppeltes ;; und speicherst das.
Erscheinen keine Fehlermeldungen mehr und die Befehle werden beide ausgeführt.
Eventuell findet sich hier ein stiller Mitleser, welcher das erklären kann?
ZitatErstellst Du so ein DOIF:
define di_Test DOIF ([du_Schalter:state] eq "on") ({fhem("set du_Eins ein");; fhem("set du_Zwei ein")})
Steht nachher im DEF des DOIFs nur noch ein ; zwischen den beiden fhem(..).
Wird das DOIF getriggert, so kommen in der Tat Fehlermeldung:
Unknown command {fhem("set, try help.
genau so hatte ich es probiert und frage nicht wieviel Varianten noch, aber jetzt habe ich es mit den zwei ;; und es geht...
Ich sage mal jetzt ist das Kind geboren, nun kann es reifen... ;)
Also mein Stand ist jetzt - bis auf morgen früh, dass warte ich ab - es funktioniert
1. der Rollladen fährt zur 1. Zeit runter mit dem Helligkeitswert
2. sobald ich den Terrassengriff "öffene" fährt der Rollladen hoch und das Licht geht an
3. sobald ich den Terrassengriff "schließe" fährt der Rollladen wieder runter und das Terrassenlicht geht aus
mit das "reifen" meine ich...
da es ja jetzt nur solange geht bis zur zweiten Zeit... die man ja jederzeit auf 0 Uhr stellen könnte, aber dann müsste man ewig (besonders im Sommer) die erste Zeit nach stellen da es ja spät dunkel wird und niemand möchte ja das die Rollläden um 0 Uhr erst runter fahren..!
Jetzt müsste es noch die Variante geben (vllt. mit einem weiteren Dummy), da ja das ganze Prozedere nur bis zur zweiten eingestellten Zeit funktioniert, welches diese Zeit vorgibt so das man jeder Zeit Abends um 22 Uhr noch mal auf die Terrasse gehen kann und sich dann eben die Terrassenbeleuchtung einschaltet und der Rollladen hoch fährt.
Vielleicht hat hier jemand (ein Mitleser ;)) einen noch besseren Einfall wie man dieses bewerkstelligen könnte, oder gar noch besser machen kann...
Code Stand jetzt:
([RolloWZmodus] eq "FHEM"
and [WZ_TerrasseTuer:state] eq "closed"
and ([Aussensensor_Terrasse:luminosity] < [du_Rollo_Luminosity_runter:state]
and [{ReadingsVal("du_RolloZeit_runter_start", "state", "22:00:00")}-{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}])
or [{ReadingsVal("du_RolloZeit_runter_ende", "state", "22:00:00")}]) ({if (ReadingsVal("RollladenWZ", "state", "---") ne "off") {fhem("set RollladenWZ off");; fhem("set M3_LichtTerrasse 0")}})
DOELSEIF ([RolloWZmodus] eq "FHEM"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "10:00:00")}|8]
or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "10:00:00")}|7])
or ([WZ_TerrasseTuer:state] eq "open")) ({if (ReadingsVal("RollladenWZ", "state", "---") ne "on") {fhem("set RollladenWZ on");; fhem("set M3_LichtTerrasse 1")}})
Aber ist es jetzt nicht auch so, dass wenn du im hellen die Türe öffnest und dann wieder schließt, der Rollo runter fährt?
Zumindestens meine ich, dass die beiden DOELSEIF bei dir das doch machen müssten oder?
mmh, gute Frage, dass werde ich morgen am Tage mal testen...
Sollte es der Fall sein werde ich die Schaltung komplett auseinander nehmen und dieses mit weiteren DOIF und Dummys machen wo ich dann vorher unterscheide, mit einem Dummy - Manuell,Dämmerung,Aus usw. ob ich eine manuelle Handschaltung (Zeiten so wie jetzt einstellbar mache) oder eben über ein Dummy mit der Variante Dämmerung.
Da lasse ich das Teil bei Dummy - Dämmerung, dann über fest eingestellte Zeit morgens hoch fahren und Abends mit Sunset runter und eben sobald der Türgriff betätigt wird Rollladen hoch oder eben wieder runter usw.
Bei Dummy - Manuell, dann so wie es von dir erstellt wurde...
Muss doch irgendwie gehen... ;)
Hab oben jetzt mal den Code vom jetzigen Stand eingefügt... :D
Der Nachteil an der jetzigen Situation ist, machst du den Türgriff nach der zweiten eingestellten Zeit auf, fährt der Rollladen nach oben, aber nicht wieder runter beim schließen... das war ja die Tage mein Problem... ;) Probier das mal bei dir... sollte so sein.
Reading aus dem list, sieht momentan so aus... weil die Zeiten im Code immer etwas irritieren:
Readings:
2015-02-24 20:48:19 cmd_event WZ_TerrasseTuer
2015-02-24 20:48:19 cmd_nr 1
2015-02-24 21:14:32 e_Aussensensor_Terrasse_luminosity 0
2015-02-24 20:48:19 e_WZ_TerrasseTuer_state closed
2015-02-24 20:48:19 state cmd_1
2015-02-24 20:32:15 timer_1_c1 25.02.2015 18:15:00
2015-02-24 20:32:15 timer_2_c1 24.02.2015 21:20:00
2015-02-24 20:32:15 timer_3_c1 24.02.2015 21:20:00
2015-02-24 20:32:15 timer_4_c2 25.02.2015 08:15:00|8
Zitat von: moonsorrox am 24 Februar 2015, 21:26:09
mmh, gute Frage, dass werde ich morgen am Tage mal testen...
Sollte es der Fall sein werde ich die Schaltung komplett auseinander nehmen und dieses mit weiteren DOIF und Dummys machen wo ich dann vorher unterscheide, mit einem Dummy - Manuell,Dämmerung,Aus usw. ob ich eine manuelle Handschaltung (Zeiten so wie jetzt einstellbar mache) oder eben über ein Dummy mit der Variante Dämmerung.
Da lasse ich das Teil bei Dummy - Dämmerung, dann über fest eingestellte Zeit morgens hoch fahren und Abends mit Sunset runter und eben sobald der Türgriff betätigt wird Rollladen hoch oder eben wieder runter usw.
Bei Dummy - Manuell, dann so wie es von dir erstellt wurde...
Muss doch irgendwie gehen... ;)
Hab oben jetzt mal den Code vom jetzigen Stand eingefügt... :D
Nur mal paar Tipps, ohne mich in die Einzelheiten zu vertiefen:
1. Soll ein Fensterschalter in einer bestimmten Zeit funktionieren, ohne, dass die Zeiten selbst triggern und damit das Hoch- bzw. Runterfahren beeinflussen, kann man Fragezeichen angeben:
...[?20:00-22:00] and [Kontakt] eq "closed"...
zusätzlich kann man mit or Zeiten ohne Fragezeichen kombinieren, die tatsächlich triggern und damit den Rolladen bewegen. Siehe Beispiele in der Commandef zu DOIF.
2. Statt fester Zeiten, kann man Sonnenaufgang- bzw. Sonnenuntergangsfunktionen nutzen. Siehe Beispiele in der Commandref zu DOIF.
3. Im Ausführungsteil von DOIF werden standardmäßig FHEM-Befehle ausgeführt, also
statt umständlich:
({fhem("set du_Eins ein");; fhem("set du_Zwei ein")})
anzugeben, lässt sich so etwas mit
(set du_Eins ein, set du_Zwei ein)
lösen. So etwas steht direkt in den ersten Beispielen der deutschen Commandref zu DOIF.
Diese wird hier offenbar nicht intensiv genug gelesen, ansonsten hätte man sich viel Zeit beim rumprobieren gespart ;)
Gruß
Damian
Naja, sagen wir es mal so.
Das angegebene Konstrukt ist auf meinem Mist gewachsen.
Und ja ich habe die CommandRef mehrfach gelesen. Augenscheinlich noch nicht wirklich richtig verinnerlicht. :(
Allerdings ist es mMn auch nicht so wirklich einfach die Beispiele aus der CommandRef in die produktive Umgebung umzusetzen.
Zumindest bei mir ist der Akzeptanzfaktor der Rolladensteuerung während der umsetzung recht stark gesunken.
Es klappte soweit alles zufriedenstellend, bis ich zu dem Thema gekommen bin, dass es doppelte Schaltungen für die Rolladenaktoren gab.
Da habe ich diverse Versuche (und ja, es waren Ideen aus der CommandRef) versucht umzusetzen.
Folgende Ergebnisse konnte ich berichten:
- Anstatt weniger unnütze Schaltungen, gab es wesentlich mehr
- Ein anderes Mal ging ein Rollo abends runter, morgends aber nicht mehr hoch
- Von den insgesamt 9 Rollos gingen aus meiner Sicht fast eine zufällige Anzahl von Rollos nicht mehr runter, wo sie es hätten tun sollen
- Türkontakte, welche einen geschlossenen Rollo hoch gehen lassen sollten und bei "closed" wieder schliessen sollten, versagten auch ihren Dienst
Also eine vielzahl an Problemen. Wenn ich an einem Rollo rumprobierte und es für gut befunden habe, habe ich dies auf einen weiteren übertragen.
Leider aber immer wieder mit einem der o.a. Probleme.
Und das eben nur, wegen möglicher doppelter Schaltvorgänge.
Daher habe ich dann im Ausführungsteil dieses if-Konstrukt ins Leben gerufen, welches hier genannt wurde.
Finde ich auch nicht wirklich schön, aber funktioniert momentan halt wie gewünscht.
Hast du dazu eine Idee, wie ich das mit den doppelten Schalvorgängen in den Griff bekommen kann?
Hier mal ein Beispiel, wie ich es mit den if in dem Ausführungsteil gelöst habe:
([du_Rollo_Master] eq "an" and ([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru] and
[du_Rollo_Art] ne "Weihnachten" and
[{ReadingsVal("du_Rollo_Zeit_ru_start", "state", "22:00:00")}-{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])
or [{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])
({if (ReadingsVal("EG_ku_RO_StrasseLinks", "state", "---") ne "off") {fhem("set EG_ku_RO_StrasseLinks off")}})
DOELSEIF ([du_Rollo_Master] eq "an" and ([{ReadingsVal("du_Rollo_Zeit_ho", "state", "10:00:00")}|8] or
[{ReadingsVal("du_Rollo_Zeit_ho_WE", "state", "10:00:00")}|7]))
({if (ReadingsVal("EG_ku_RO_StrasseLinks", "state", "---") ne "on") {fhem("set EG_ku_RO_StrasseLinks on")}})
also ich unterstütze auch die Meinung von maxritti...
Das DOIF ein tolles Modul ist, wissen wir ja schon länger, aber das heißt ja nicht das wir es alle verstehen..! ;)
Ich lese ständig in der commandref und lege mir die Beispiele die bei mir passen könnten auch immer gleich ins notepad++ dazu um auch alles möglichst so zu erstellen und richtig zu machen, diesmal habe ich damit meine Probleme, weil diese vielen Klammern verwirren auch.
Nichts desto trotz gefällt mir die Rollladensteuerung von maxritti aus dem Wiki in einigen Ansätzen sehr gut, aber ich muss es eben auf meine Bedürfnisse anpassen... Ok soviel dazu
@maxritti
Jetzt zu den Live Ergebnissen die heute morgen ernüchternd waren...
was vorher funktionierte, geht nicht mehr der Rollladen fuhr heute morgen nicht hoch :-\, soviel also auch zu den Erfahrungen die man sammelt, geht also dir nicht alleine so...
Also heißt es erst mal wieder ran setzen und Fehler suchen...
Ich werde vorallem versuchen die Klammern, welche Damian gestern erwähnte mal etwas auflockern ;)
Mal schauen was ich da hinbekomme.
Das was ich da gestern schon schrieb, das eben Abends nach der zweiten Zeit die Rollläden zwar hoch fahren, aber eben nicht mehr runter...
Hast du das mal gestestet bei dir..?
Wie gesagt für den Fall, gerade jetzt im Sommer wenn man Abends nochmal raus will aber der Rollladen schon unten ist... :D
da ich doch erhebliche oben genannte Probleme habe, nun ein neuer Ansatz.
Als erstes habe ich ein neues DOIF erstellt welches also mit Dummys gesteuert werden soll.
1. Dummy (RolloWZmodus) stellt die Art ein bei mir "FHEM,Beschattung,Aus"
2. Dummy (du_RolloZeit_hoch) mit einstellbare Zeit für die Wochentage
3. Dummy (du_RolloZeit_hoch_WoE) mit einstellbarer Zeit für das Wochenende
4. Dummy (Tageslicht) stellt das Reading als state "hell" oder "dunkel"
5. 2 weitere Dummys die den Status hell oder dunkel setzen
6. ein Türkontakt mit open, close, tilted
Das DOIF sieht bisher so aus:
([RolloWZmodus] eq "FHEM"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "10:00:00")}|12345]
or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "10:00:00")}|06])) (set RollladenWZ on)
DOELSEIF ([RolloWZmodus] =~ "FHEM|Beschattung"
and [WZ_TerrasseTuer:state] eq "closed"
and ([{sunset("CIVIL",-600,"16:35","22:10")}|0123456])) (set RollladenWZ off)
Sollte also so gehen..!?
dass morgens der Rollladen zur eingestellten Zeit hochgefahren wird und Abends, wenn die Tür geschlossen ist auch wieder runter fährt.
Jetzt die zusätzliche Aufgabe. Der Rollladen ist Abends runter gefahren.
Nun möchte ich raus gehen und signalisiere mit dem Türkontakt "open" dem Rollladen jetzt wieder hoch fahren (gleichzeitig Licht Terrasse an) Dummy "dunkel" wird berücksichtigt damit eben das Licht auch nur bei Dunkelheit angeht.
Beim schließen des Türgriffes dann Rollladen runter Licht aus.
Jetzt weiß ich nicht genau wo ich den Ansatz für das Öffnen, nachdem die Rollläden runter gefahren sind einsetzen soll, ob nun als "or" Bedingung oder als DOELSEIF, dass wenn ich jetzt mit dem Dummy bei "dunkel" den Rollladen wieder hoch fahre und beim schließen wieder runter fahre..?
Ich stelle mal folgenden, etwas anderen Denkansatz zur Diskussion. Ist bewusst in "Pseudocode" gehalten, weil nicht getestet und die Perl-Funktionen zum Ermitteln von Uhrzeiten verwende ich so nicht.
DOIF (([Abendsrunter-Morgenhoch|Werktags] or [Abendsrunter-Morgenhoch|Wochenende]) and [Terassentür] eq "zu")
(
fahre Rolladen runter,
IF(Terassenlicht eq "ein")(schalte Terassenlicht aus)
)
DOELSE
(
fahre Rolladen hoch,
IF(Tageslicht eq dunkel)(schalte Terassenlicht ein)
)
Ich will nicht behaupten, dass das jetzt die schlüsselfertige Lösung ist, aber vielleicht bringt sie euch ja voran.
Eine Bedingung zur Behandlung von Dämmerung könnte vermutlich man als zusätzliches DOELSEIF einfügen. Bei Modus "Aus" würde ich das DOIF disablen (ggf. über ein zusätzliches DOIF).
Zitat von: Brockmann am 25 Februar 2015, 18:43:22
Ich stelle mal folgenden, etwas anderen Denkansatz zur Diskussion. Ist bewusst in "Pseudocode" gehalten, weil nicht getestet und die Perl-Funktionen zum Ermitteln von Uhrzeiten verwende ich so nicht.
DOIF (([Abendsrunter-Morgenhoch|Werktags] or [Abendsrunter-Morgenhoch|Wochenende]) and [Terassentür] eq "zu")
(
fahre Rolladen runter,
IF(Terassenlicht eq "ein")(schalte Terassenlicht aus)
)
DOELSE
(
fahre Rolladen hoch,
IF(Tageslicht eq dunkel)(schalte Terassenlicht ein)
)
ja so in etwa, sieht sehr logisch aus ;)
Zitat von: Brockmann am 25 Februar 2015, 18:43:22
Ich will nicht behaupten, dass das jetzt die schlüsselfertige Lösung ist, aber vielleicht bringt sie euch ja voran.
Eine Bedingung zur Behandlung von Dämmerung könnte vermutlich man als zusätzliches DOELSEIF einfügen. Bei Modus "Aus" würde ich das DOIF disablen (ggf. über ein zusätzliches DOIF).
also das mit dem Terrassenlicht, soll nur zusätzlich durch den Türkontakt beim öffnen/schließen statt finden.
Ich bin ja nicht draußen sage ich mal.. ;)
Sonst wird dieses Licht bei mir durch eine eigne Schaltung bearbeitet.
Das mit dem Aus, hätte ich ganz gerne mal näher erklärt (habe ich mir schön öfter mal den Kopf zerbrochen), denn bisher habe ich einfach nur den Dummy "Aus" mode nicht abgefragt, alle Bedingungen waren immer mit einem Status bei mir verknüpft, also FHEM, Dämmerung oder Zufall oder oder
So wie oben dragestellt arbeitet mein DOIF jetzt erst mal... kommt nur die Öffnen Geschichte jetzt mit rein und nur hier soll das Licht eingeschaltet werden aber das mit dem Licht ist eigentlich nicht das Problem das verbinde ich eben mit Rollladen Auf und Zu (set RollladenWZ on, set TerrassenLicht ein) und eben auch aus...
Aber der Denkansatz ist schon OK ich werde mich da mal mit befassen also doch eher DOELSEIF anstatt ein "or"
Achso noch... die Bedingung Dämmerung habe ich in einem extra DOIF, wäre evtl. auch eine Variante die mit rein zu bringen. Die sieht bei mir genauso aus wie die Bedingung FHEM nur das noch eine Temperatur aus der DOIF commandref eingefügt ist, wo die Rollläden morgens bei einer Temperatur ich sage mal >26 Grad nur kurz auf 15% fahren
so ich bin jetzt erst mal weg, bis morgen :D
Zitat von: moonsorrox am 25 Februar 2015, 19:02:30
Das mit dem Aus, hätte ich ganz gerne mal näher erklärt (habe ich mir schön öfter mal den Kopf zerbrochen), denn bisher habe ich einfach nur den Dummy "Aus" mode nicht abgefragt, alle Bedingungen waren immer mit einem Status bei mir verknüpft, also FHEM, Dämmerung oder Zufall oder oder
Ich hatte Dich so verstanden, dass Du die Rolladensteuerung über einen Dummy auf "aus" jederzeit deaktvieren können möchtest. Meiner Meinung nach wäre die sauberste Lösung dafür ein zusätzliches DOIF, das bei Steuermodus eq "aus" das Rolladen-DOIF per Attribut disabled = 1 deaktiviert und bei Steuermodus ne "aus" das Rolladen-DOIF per Attribut disabled = 0 wieder aktiviert. Die Abfrage auf Steuermodus ne "aus" mit ins Rolladen-DOIF reinzunehmen macht es unübersichtlicher und komplexer und man handelt sich damit potenziell einige Seiteneffekte ein.
Generell halte ich es bei Deinem Szenario auch für sinnvoller, die Funktionalität auf verschiedene DOIFs zu verteilen, also etwa die Steuerung des Terassenlichts durch ein eigenes DOIF zu erledigen, das in einem DOELSEIF auf Terassentür eq "open" und Licht eq "dunkel" reagieren kann. Auch die Beschattungssteuerung ist eventuell in ihrem eigenen DOIF besser aufgehoben.
Zitat von: Brockmann am 26 Februar 2015, 10:40:41
Ich hatte Dich so verstanden, dass Du die Rolladensteuerung über einen Dummy auf "aus" jederzeit deaktvieren können möchtest. Meiner Meinung nach wäre die sauberste Lösung dafür ein zusätzliches DOIF, das bei Steuermodus eq "aus" das Rolladen-DOIF per Attribut disabled = 1 deaktiviert und bei Steuermodus ne "aus" das Rolladen-DOIF per Attribut disabled = 0 wieder aktiviert.
ja genau das wäre eine gute Sache, nur so hatte ich es bisher nicht
Werde ich mir mal bauen, denn das mit dem attr <device> disable 1 und 0 hatte ich nicht auf dem Schirm.. ;) gut das ich immer mal erinnert werde :D
So habe ich das jetzt mal gemacht:
([RolloWZmodus] eq "Aus") (attr di_rollladenWZ_TK_LichtTerrasse disable 1)
DOELSEIF
([RolloWZmodus] ne "Aus") (attr di_rollladenWZ_TK_LichtTerrasse disable 0)
Zitat von: Brockmann am 26 Februar 2015, 10:40:41
Die Abfrage auf Steuermodus ne "aus" mit ins Rolladen-DOIF reinzunehmen macht es unübersichtlicher und komplexer und man handelt sich damit potenziell einige Seiteneffekte ein.
sehe ich auch so...! lieber ein kurze Abfrage einbauen wie immer alles voll zu stopfen :) ist für mich auch übersichtlicher
Zitat von: Brockmann am 26 Februar 2015, 10:40:41
Generell halte ich es bei Deinem Szenario auch für sinnvoller, die Funktionalität auf verschiedene DOIFs zu verteilen, also etwa die Steuerung des Terassenlichts durch ein eigenes DOIF zu erledigen, das in einem DOELSEIF auf Terassentür eq "open" und Licht eq "dunkel" reagieren kann. Auch die Beschattungssteuerung ist eventuell in ihrem eigenen DOIF besser aufgehoben.
ja das hatte ich ja auch schon so, die Beschattung und auch das Licht habe schon in einem extra DOIF.
Die Beschattung ist ja eigentlich wie die normale Situation, aber eben jetzt wenn es Sommer wird stelle ich es um und sollte die Temperatur dann eben über dem einstellbaren Wert sein, fahren die Rollläden nur in eine Art Lüftungszustand (15%). Da nutze ich das relativ einfache Beispiel aus der commandref von Damian.
Hier kann man gut die Zeit und auch die Temperatur vorgeben und ich finde das genial einfach und vollkommen ausreichend...
define di_shutters DOIF ([sensor:temperature] > 26 and [11:00-{sunset_abs()}] (set shutters down) DOELSE (set shutters up)
attr di_shutters wait 900:900
Zitat von: Brockmann am 26 Februar 2015, 10:40:41
Meiner Meinung nach wäre die sauberste Lösung dafür ein zusätzliches DOIF, das bei Steuermodus eq "aus" das Rolladen-DOIF per Attribut disabled = 1 deaktiviert und bei Steuermodus ne "aus" das Rolladen-DOIF per Attribut disabled = 0 wieder aktiviert.
für mich noch einmal eine Verständnis Frage... welchen Vorteil hat es ein DOIF zu deaktivieren..?
anstatt es eben so wie ich es bisher gemacht in Konditionen nicht abzufragen, unten stehendes DOIF ist gemeint..
([RolloWZmodus] eq "Aus") (attr di_rollladenWZ_TK_LichtTerrasse disable 1)
DOELSEIF
([RolloWZmodus] ne "Aus") (attr di_rollladenWZ_TK_LichtTerrasse disable 0)
..und ist das so richtig gemacht, weil es ist ja einfach nur ein DOIF zum aktivieren oder deaktivieren.
Zitat von: Brockmann am 26 Februar 2015, 10:40:41
Auch die Beschattungssteuerung ist eventuell in ihrem eigenen DOIF besser aufgehoben.
das hatte ich bevor hier geschrieben wurde auch gedacht und nun gesehen es war ja noch gar nicht fertig..! :-\ Nun habe ich es nochmal bearbeitet und wollte mal fragen ob ihr mal drüber schauen könnt.
Ergibt das ein logisches DOIF, bin mir da grad nicht so sicher..!?
([RolloWZmodus] eq "Beschattung"
and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345]
or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06])) (set RollladenWZ on)
DOELSEIF([RolloWZmodus] eq "Beschattung" and ([Aussensensor_Terrasse:temperature] > 25
and [08:20-{sunset_abs("CIVIL",-600,"16:35","22:10")}])) (set RollladenWZ 15)
DOELSEIF ([WZ_TerrasseTuer:state] eq "closed") (set RollladenWZ off)
hier nochmal der Code in welchen ich den Türkontakt einbauen möchte, was mir grad gar nicht gelingt:
Die Vorgabe sollte sein, wenn ich irgendwann Abends noch einmal auf die Terrasse möchte und die Rollläden sind schon unten, sollen diese sich öffnen und wenn ich später wieder rein gehe schließen, dazu möchte ich ein Dummy nutzen welches den state "hell" und "dunkel" hat, dass dachte ich mir so, weil mir keine bessere Lösung einfiel..!
Diese sollte in meinen Code der durch ein Dummy den state "FHEM" oder "Beschattung" hat..
Der Code funktioniert auch soweit, aber mir fehlt der Ansatz dieses mit dem Türkontakt zu machen..!! :-\ Es funktionierte das hoch fahren der Rollläden, aber nicht mehr das runter fahren...
Nochmals verändert, sollte jetzt gehen..!?
([RolloWZmodus] eq "FHEM" and ([{ReadingsVal("du_RolloZeit_hoch", "state", "08:15:00")}|12345] or [{ReadingsVal("du_RolloZeit_hoch_WoE", "state", "08:45:00")}|06]))
(set RollladenWZ on)
DOELSEIF ([RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TerrasseTuer:state]) eq "closed" and ([{sunset("CIVIL",-600,"16:35","22:10")}|0123456]))
(set RollladenWZ off)
DOELSEIF ([RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TerrasseTuer:state]) eq "open" and ([Tageslicht:state] eq "dunkel"))
(set RollladenWZ on,set M3_LichtTerrasse 1)
DOELSEIF ([RolloWZmodus] =~ "FHEM|Beschattung" and ([WZ_TerrasseTuer:state]) eq "closed" and ([Tageslicht:state] eq "dunkel"))
(set RollladenWZ off,set M3_LichtTerrasse 0)
Hallo in der Runde,
ich brauche auch nochmal eure Hilfe. Sicherlich ist es einfach nur ein nicht gesetztes Attribut...
Ich habe eine DOIF mit diesen Bedingungen erstellt:
Fahre runter wenn
- die Raumtemperatur über 23 Grad ist
- in der Zeit von 10 bis 22 Uhr
- wenn der Türkontakt geschlossen ist
- der Beschattungssensor hell meldet
ZitatInternals:
CFGFN
DEF ([T_Wohnzimmer:temperature]>23 and [wz_Fensterkontakt_Tuer_links:state] eq "closed" and [wz_bs:state] eq "off 2.5" and [?10:00-22:00]) (set wz_gr_Rolladen Ab80) DOELSE (set wz_gr_Rolladen on)
NAME Beschattung_WZ
NR 89781
NTFY_ORDER 50-Beschattung_WZ
STATE cmd_1
TYPE DOIF
Readings:
2015-04-24 16:34:02 cmd_event T_Wohnzimmer
2015-04-24 16:34:02 cmd_nr 1
2015-04-24 16:34:02 e_T_Wohnzimmer_temperature 23.6
2015-04-24 16:33:17 e_wz_bs_state off 2.5
2015-04-24 16:34:02 state cmd_1
2015-04-24 16:20:31 timer_1_c1 25.04.2015 10:00:00
2015-04-24 16:20:31 timer_2_c1 24.04.2015 22:00:00
Condition:
0 ReadingValDoIf('T_Wohnzimmer','temperature','')>23 and ReadingValDoIf('wz_Fensterkontakt_Tuer_links','state','') eq "closed" and ReadingValDoIf('wz_bs','state','') eq "off 2.5" and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
Days:
Devices:
0 T_Wohnzimmer wz_Fensterkontakt_Tuer_links wz_bs
all T_Wohnzimmer wz_Fensterkontakt_Tuer_links wz_bs
Do:
0 set wz_gr_Rolladen Ab80
1 set wz_gr_Rolladen on
Helper:
last_timer 2
sleeptimer -1
Internals:
Itimer:
Readings:
0 T_Wohnzimmer:temperature wz_Fensterkontakt_Tuer_links:state wz_bs:state
all T_Wohnzimmer:temperature wz_Fensterkontakt_Tuer_links:state wz_bs:state
Realtime:
0 10:00:00
1 22:00:00
State:
Time:
0 10:00:00
1 22:00:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timerfunc:
Trigger:
Attributes:
do always
Dies ist die jetzige Definition. Allerdings triggert das DOIF immer jetzt wenn der Laden oben ist und will rauffahren und wenn er zu 80 % unten ist auch fleißig runter.
Zitat von: dieda am 24 April 2015, 16:39:12
Hallo in der Runde,
ich brauche auch nochmal eure Hilfe. Sicherlich ist es einfach nur ein nicht gesetztes Attribut...
Ich habe eine DOIF mit diesen Bedingungen erstellt:
Fahre runter wenn
- die Raumtemperatur über 23 Grad ist
- in der Zeit von 10 bis 22 Uhr
- wenn der Türkontakt geschlossen ist
- der Beschattungssensor hell meldet
Dies ist die jetzige Definition. Allerdings triggert das DOIF immer jetzt wenn der Laden oben ist und will rauffahren und wenn er zu 80 % unten ist auch fleißig runter.
Das sollte dir helfen den Fehler zu finden, Zitat aus der Commandref zu DOIF:
ZitatBei der Angabe von zyklisch sendenden Sensoren (Temperatur, Feuchtigkeit, Helligkeit usw.) wie z. B.:
define di_heating DOIF ([sens:temperature] < 20) (set heating on)
ist die Nutzung des Attributes do always nicht sinnvoll, da das entsprechende Kommando hier: "set heating on" jedes mal ausgeführt wird, wenn der Temperatursensor in regelmäßigen Abständen eine Temperatur unter 20 Grad sendet. Ohne do always wird hier dagegen erst wieder "set heating on" ausgeführt, wenn der Zustand des Moduls gewechselt hat, also die Temperatur zwischendurch größer oder gleich 20 Grad war.
Gruß
Damian
was mir noch auffällt ist dieses Kommando "set wz_gr_Rolladen Ab80" das gibt es so eigentlich nicht, wenn sollte es so aussehen "set wz_gr_Rolladen pct 80" oder "set wz_gr_Rolladen 80"
mal im Wiki geschaut zum Aktor:
Zitatset <name> on -> Schaltet den Aktor ein
set <name> off -> Schaltet den Aktor aus
set <name> toggle -> Ändert den logischen Zustand des Aktors, d.h. ein eingeschalteter Aktor wird ausgeschaltet. Im Falle der 10% geöffneten Jalousie wird diese geschlossen.
set <name> <Zweistellige Zahl> -> Schaltet den Aktor ein und öffnet die Jalousie um <Zweistellige Zahl>%. 100% entspricht dabei einem "on"
set <name> up/down <Prozentangabe[0 bis 100]> -> Öffnet oder schließt die Jalousie um den prozentualen Wert, berechnet aus definierter Laufzeit. Keine Angabe => 10%
Das Komando eigentlich nicht, aber man kann ja Off-for-Timer-x umbenennen...
ZitateventMap /off-for-timer 15:Ab80/off:Ab/on:Auf/
Es war aber simpler. Das Attribut "do always" war zuviel.