Hallo zusammen,
ich suche eine Möglichkeit von unterwegs (andFHEM auf dem Smartphone oder Browser im Büro) möglichst einfach alle Rollos herunter (oder auch auf 50%) zu fahren, z.B. weil es doch noch anfängt zu Regnen und die Fenster gekippt sind oder die Sonne doch mehr brennt als erwartet.
Wie stelle dich dies am besten an? Muss ich mir zwei virtuelle Taster (z.B. Rollos_Sonnenstand und Rollos_Regen) definieren und diese per notify überwachen oder geht dies grundsätzlich auch anders?
Hi,
ich habe das bei mir genau wie von Dir beschrieben gelöst: es gibt virtuelle Taster (dummy), die z.B. entsprechende "Szenen" der Rolläden ansteuern können. Hinter jedem möglichen Zustand des dummy hängt dann ein Notify, der eine Perl Routine aufruft, die dann die Rolläden in den entsprechenden Zustand versetzt.
Bsp.: Tag, Nacht, Sonnenschutz,
define OG_Rolladen dummy
attr OG_Rolladen eventMap /on:Tag/off:Nacht/sun:Sonnenschutz/
attr OG_Rolladen webCmd Tag:Nacht:Sonnenschutz
define OG_Rolladen_Schalten notify OG_Rolladen:.* { RolladenCtrl("%") }
Wenn man nun also z.B. Tag anklickt, dann wird die Funktion RolladenCtrl( "Tag" ) aufgerufen. In dieser Funktion gibt es dann ein if-then-else, der die Aktion entsprechend ausführt.
Theoretisch wäre dies auch mit einer structure möglich. Allerdings wohl nur, wenn man unidirektionale Systeme wie FS20 einsetzt. Bei Homematic sendet der Aktor ja wieder eine Antowrt und die scheint dann mit den Befehlen an die anderen Aktoren zu kollidieren. Ergo habe ich die Funktion wie beschrieben per Perl umgesetzt um dann zwischen jede Rolladenaktion einen Sleep( 0,2 )
einbauen zu können. Ist zwar nicht schön, da FHEM dann in dieser zeit steht, aber nun gut, man kann nicht alles haben.
Netter Nebeneffekt der Umsetzung ist, dass ich mir für 15,- € eine kleine Intertechno Fernbedienung gekauft habe. Jede der Tasten ist mit einer Szene belegt und somit kann man die Sache auch ohne Smartphone ansteuern.
Danke für den Denkanstoß, ich habe es nun wie folgt umgebaut:
define Steuerung_Rollo dummy
attr Steuerung_Rollo webCmd Oben:Unten:Halbschatten:Vollschatten
attr Steuerung_Rollo eventMap Oben:oben Unten:unten Halbschatten:65 Vollschatten:40
attr Steuerung_Rollo room System
define Job_Steuerung_Rollo notify Steuerung_Rollo:.* { \
fhem("set Kueche_Rollo %");; \
fhem("set Schlafzimmer_Rollo %");; \
[...] }
Damit spare ich mir die IF-ELSE bzw. CASE Geschichte.
Was mich nun noch stört, ist der zuletzt gedrückte "Knopf" als Status von Steuerung_Rollo im Webinterface - dieser muss ja nicht mehr stimmen, wenn zwischenzeitlich manuell oder automatisch die Rollos bewegt wurden. Bekommt man diese Anzeige noch weg? Überschreiben kann ich sie ja schlecht ohne dies dann wiederum im Notify abfangen zu müssen.
Hi,
naja, ich habe mir einen zweiten Daummy zur Anzige gebaut. Dieser zeigt nur den aktuellen Status an und wird von allen automatischen Zustandumschaltung upgedatet. Wenn man manuell eingreift geht es halt nicht den zu updaten. Aber das war mir nicht so wichtig.
Das manualle Schalten via Intertechno fernbedinung wird ja aus Sicht der Software eigentlich auch automatisch gehandhabt.