Hallo liebe Gemeinde,
ich habe, ein für mich unüberwindbares Problem. Ich würde gerne ganz einfach realisieren wenn ich das Fenster auf mache, Der Rolladen hoch geht und wenn das Fenster geschlossen wird der Rolladen wieder in die alte Position fährt.
Ich habe mittlerweile das gaaaanze Internet leer gelesen ;-) jedoch versteh ich leider nicht genug Perl um das umzusetzen.
Ich hoffe mir kann jemand helfen. Damit ich es beim nächsten mal selbst machen kann. Ne ganz einfache Steuerung und ich raffs nicht :-((
Bitte helft mir. Daaanke im vorraus
Grob gezeichnet:
am Fenster ein Sensor, der auf und zu erkennt
Rollladensteuerung, welche, durch den Sensor den Befehl hochfahren bekommt
Sensor in Ausgangslage ( also zu ) Befehl an Rollladensteuerung runterfahren bis x.
Dazu muß die Rollladensteuerung : wissen wo der Rolladen im Moment steht und
den auch wieder an genau den Punkt zurückfahren können.
Danke für die Antwort :-)
hab mich vielleicht ein bisschen falsch ausgdrückt. Der Kontakt und der Aktor sind schon in Betrieb. Ich bräuchte ein DOIF oder ein Notify der das regelt. Alles was ich bisher gefunden habe, hatte mir zuviele Variablen. Ich bin leider noch nicht wirklich in der Lage alles rauf zu filtern was für mich nicht passt /Hell, Dunkel, Zeitgesteuert etc). Ich hab zwar bereits ein Notify laufen, was aber nicht wirklich zuverlässig läuft.
Danke :-)
Du bist hier in FHEM. Dafür muss man prinzipiell nichts von Perl verstehen, auch wenn das hilfreich ist an vielen Ecken.
Wie Neuhier schon sagte: Du brauchst neben dem Sensor eine Rolladensteuerung, mit der FHEM umgehen kann. Entweder weiß FHEM durch seine eigene Steuerung wo der Rolladen steht, oder - besser - die Rolladensteuerung weiß (oder schätzt) die Position selbst und übermittelt sie an FHEM. Hast Du offenbar schon, ok.
Der Sensor erzeugt eins von zwei Events in FHEM: Das Fenster ist gerade auf- oder zugegangen.
Wenn aufgegangen: Merke Dir den aktuellen Positionswert und fahre den Rolladen hoch.
Wenn zugegangen: Rufe den gespeicherten Wert ab und fahre den Rollladen in diese Position.
Das sind zwei einzeilige "Notify" oder ein zweizeiliges DOIF.
Gib uns doch mal das Progrämmchen was Dir zu kompliziert ist in Code-Tags und die Bezeichnungen oder noch besser lists von Sensor und Rolladenaktor. Und erkläre wo genau das Problem ist und was Du gern hättest.
Würde ich so anfangen:
define Fenster_auf DOIF ([Fenster_Kontakt] eq "offen")(set Rolladen aufwärts)
define Fenster_zu DOIF ([Fenster_Kontakt] eq "zu")(set Rolladen abwärts)
Hallo Doomer,
Für "auf" mache ich das so hier:
defmod nty_RolloLueftungSZ notify FensterSZ:open set RolloSZ:FILTER=STATE!=95 95
Was Du willst könnte so gehen:
defmod nty_RolloAufZu notify Fenster:(open|closed) set Rollo $EVENT
attr Rollo eventMap on:open off:closed
attr Fenster event-on-change-reading state
Edit: das hier überlesen
Zitatwieder in die alte Position fährt.
Schade dann muss man noch mehr machen ;D
Gruß Otto
Hui....das geht hier ja echt schnell :-)
define Wz_Tueroffen dummy
define Wz_TueroffenTemp dummy
define TuerAuf notify Wz_Tuer:open { my $WzRolloBalkonTemp=ReadingsVal("Wz_Rolladen_Links","pct",0);; fhem ("set Wz_Rolladen_Links 100;; set Wz_Tueroffen on;; set Wz_TueroffenTemp $WzRolloBalkonTemp") }
define TuerZu notify Wz_Tuer:closed { my $WzRolloBalkonBefore=Value("Wz_TueroffenTemp");; if (Value("Wz_Tueroffen") eq "on") { fhem ("set Wz_Rolladen_Links $WzRolloBalkonBefore;; set Wz_Tueroffen off") } }
So habe ich es in meiner Fhem.cfg stehen.
Das Problem an der Sache ist, das es zwar macht was es machen soll..... aaaber....
sobald ich den Rolladen runter mache, wenn das Fenster offen ist, fährt der Rolladen immer wieder sporadisch nach oben. Aber nicht bei geschlossenem Fenster.
Och ... ich würde mal tippen, der Fenstersensor sendet seinen Zustand regelmäßig auch ohne Zustandsänderung als Update und darauf reagiert das Notify.
Setze beim Sender also mal das Attribut "event-on-change-reading .*" - dann gibt es ein Event nur wenn sich der Zustand wirklich ändert.
edit: und bitte verwende Codetags für Code: Markiere den Code und klicke auf den Button mit dem # über dem Eingabefenster hier. Oder klicke auf den Button und füge den Text zwischen den so erzeugten Markern ein...
Ok, das werde ich jetzt gleich machen. Allerdings habe ich dann da direkt eine frage dazu.. wieso passiert es dann nur wenn das Fenster offen ist?
Trotzdem schon mal danke :-)
Möglich dass es die Updates auch bei geschlossenem Fenster gab. Aber da du dort den Dummy abfragst, der nur bei offenem Fenster auf on gesetzt ist, passiert nur was wenn die Tür offen ist.
Noch ein Tip abseits der Umsetzung. ;)
Bei Fenstern fahre ich auch gleich ganz runter, bei Türen würde ich (solange euer Sensor nicht die Hebelstellung des Türgriffs abfragen kann) erstmal als Warnung ein Stück runterfahren, dann etwas warten bevor man ganz runterfährt.
Sonst kann man sich super aussperren wenn man die Tür hinter sich zu zieht. :P
Geht auch ohne Perl, das hier:
{ my $WzRolloBalkonTemp=ReadingsVal("Wz_Rolladen_Links","pct",0);; fhem ("set Wz_Rolladen_Links 100;; set Wz_Tueroffen on;; set Wz_TueroffenTemp $WzRolloBalkonTemp") }
sollte identisch zu dem sein:
set Wz_TueroffenTemp [Wz_Rolladen_Links:pct];;set Wz_Rolladen_Links 100;; set Wz_Tueroffen on
Lässt sich sicher mit meinem Code Ansatz kombinieren. Ich hatte da übrigens nicht ohne Grund den Hinweis drin. :D
attr Fenster event-on-change-reading state
Gruß Otto
So! Vielen Dank!! Es war tatsächlich nur der setstate!
Nach zwei tagen intensiver Testphase, läuft jetzt alles wie gewollt!!
Danke!! :D