Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl

Begonnen von Cluni, 06 Juli 2017, 11:14:28

Vorheriges Thema - Nächstes Thema

diki

Hallo Cluni, hallo alle zusammen,

vielen Dank für das Modul an Cluni und alle Mitstreiter. Mit dem Modul habe ich einige DOIF's abgelöst und dank euch jetzt endlich auch die Beschattung in Angriff genommen.

Das Modul arbeitet bei mir mit Homematic HMW-LC-Bl1-DR Aktoren, Tahoma io Antrieben, enOcean Funk-Fenstergriffen einem Somfy Funk-Sonnensensor und dem über eBusd angebundenen Außentemperatursensor der Heizung zusammen. Die Anpassungen der Geräte an das Modul habe ich mit entsprechenden Dummy's, userattr und userReadings und der Doku gelöst. Die Steuerung arbeitet seit einigen Tagen soweit problemlos.

Seit zwei Tagen beobachte ich aber ebenfalls das hier https://forum.fhem.de/index.php/topic,73964.msg821089.html#msg821089 beschriebene Verhalten. Die Rollläden bleiben Nachts wegen der Fenstergriffstellung oben oder werden morgens manuell hochgefahren. Bevor die Automatik zum Hochfahren über die at-Timer greift, fahren die Rollläden bei geschlossenem Fenster korrekt in die Beschattungsposition. Bei Erreichen der Timer zum hochfahren werden die Rollläden aber geöffnet und bleiben offen. Wenn die Rollläden dann wieder manuell in Beschattungsposition gefahren werden, dann klappt das hochfahren zum Ende der Beschattung wieder korrekt. Habe ich hier falsche Einstellungen/ Attribute gesetzt?

Danke vorab und viele Grüße,
Dirk

kjmEjfu

Ich glaube, das Problem liegt daran, dass schon das Reading für in_Abschattung beim Rollo gesetzt wird und somit nach dem Hochfahren die Logik davon ausgeht, dass das Rollo sich in Abschattung befindet.

@Cluni: vielleicht ist es ein Fix, wenn das Reading nach dem automatischen Hochfahren auf 0 gesetzt wird? Alternativ müsste man bei den at's mehr Logik hinterlegen, damit die bei einer 1 dann nicht ganz hochfahren, sondern nur auf Abschattungsposition.
Migriere derzeit zu Home Assistant

diki

Zitat von: kjmEjfu am 07 August 2018, 11:35:42
Ich glaube, das Problem liegt daran, dass schon das Reading für in_Abschattung beim Rollo gesetzt wird und somit nach dem Hochfahren die Logik davon ausgeht, dass das Rollo sich in Abschattung befindet.
Vielen Dank, gute Idee

Zitat von: kjmEjfu am 07 August 2018, 11:35:42
@Cluni: vielleicht ist es ein Fix, wenn das Reading nach dem automatischen Hochfahren auf 0 gesetzt wird? Alternativ müsste man bei den at's mehr Logik hinterlegen, damit die bei einer 1 dann nicht ganz hochfahren, sondern nur auf Abschattungsposition.
Vielleicht wäre es sinnvoll, wenn das at zum hochfahren das Reading für in_Abschattung auswertet und dann den Rollladen nicht hochfährt (der Rollladen steht ja auf Abschatten).

Viele Grüße,
Dirk

diki

Ich verwende die
Modulversion = 'v0.9.4.8'
und habe jetzt zum testen in der
sub Auto_Rollladen_oeffnen($)
in der Zeile 1111 des Moduls die Bedingung der if-Abfrage von
if ($A_Modus_hoch eq 'aus')
um die Überprüfung zur Abschattung wie folgt erweitert:
if (($A_Modus_hoch eq 'aus') or (ReadingsNum($dev,'Automatik_in_Abschattung',0) == 1))
Mal sehen ob sich das Problem damit schon lösen könnte.

Viele Grüße,
Dirk

Cluni

Zitat von: diki am 07 August 2018, 14:08:25
if (($A_Modus_hoch eq 'aus') or (ReadingsNum($dev,'Automatik_in_Abschattung',0) == 1))

Das wird wahrscheinlich schon klappen und der Rollladen bleibt, wo er ist. Aber das wird eine verwirrende und falsche Log-Meldung erzeugen. Außerdem wäre es ja wirklich schön, wenn der Rollladen dann auf die Abschattungsposition fahren würde. Ich schaue mir das mal an und füge das ein.

diki

Hallo Cluni,
Zitat von: Cluni am 07 August 2018, 14:30:08
Aber das wird eine verwirrende und falsche Log-Meldung erzeugen.
Ich wollte mit wenig Aufwand erstmal nur testen ob mit der neuen Bedingung alles ohne Nebeneffekte läuft.
Zitat von: Cluni am 07 August 2018, 14:30:08
Außerdem wäre es ja wirklich schön, wenn der Rollladen dann auf die Abschattungsposition fahren würde. Ich schaue mir das mal an und füge das ein.
Der Rollladen steht schon vor dem Zeitpunkt zum hochfahren (per at gesteuert) in Abschattungsposition (Nur die sub Auto_Rollladen_oeffnen($) hat davon keine Kenntnis) . Ich denke, der Rollladen müsste dann nicht mehr fahren - jedenfalls habe ich das so beobachtet. In der sub Auto_Rollladen_oeffnen($) würde dann sicher ein entsprechender elsif Zweig mit Abfrage der Abschattung reichen.

Viele Grüße,
Dirk 

Cluni

Zitat von: diki am 07 August 2018, 14:48:41
Der Rollladen steht schon vor dem Zeitpunkt zum hochfahren (per at gesteuert) in Abschattungsposition (Nur die sub Auto_Rollladen_oeffnen($) hat davon keine Kenntnis) .

Hä? Hast du noch eigene ats laufen, die noch zusätzlich in die Steuerung eingreifen? Wenn ja, was genau willst du damit bezwecken?

diki

Hallo Cluni,

Entschuldigung, ich habe das falsch formuliert. Ich meinte die at's von der Rollladensteuerung. Ich beschreibe das nochmal.:

Das Fenster ist am Abend offen und der Rollladen fährt nicht herunter (wegen dem Fensterkontakt - soweit korrekt). Morgens schließe ich das Fenster, bevor der Rollladen gegen 09:30 Uhr von Deinem Modul geöffnet werden soll. Aber die Beschattungsroutine hat schon gegriffen
Im log steht dann:
OG_AZ_Fenster_Shutter --- Zeitfifferenz 14 Minuten zur letzten Aenderung um 07:48:55 Uhr - wuerde direkt bearbeitet
OG_AZ_Fenster_Shutter --- bei Helligkeit 18911.0 Lux - Schwellen: 15000 / 10000 - Stellung der Sonne: 89.25 bei Hoehe: 19.27
OG_AZ_Fenster_Shutter --- wird abgeschattet ==> 20 % (1)
OG_GL_Fenster_Shutter --- Zeitfifferenz 14 Minuten zur letzten Aenderung um 07:48:55 Uhr - wuerde direkt bearbeitet
OG_GL_Fenster_Shutter --- bei Helligkeit 18911.0 Lux - Schwellen: 15000 / 10000 - Stellung der Sonne: 89.25 bei Hoehe: 19.27
OG_GL_Fenster_Shutter --- wird abgeschattet nach dem Schliessen der Tuer / des Fensters

Wenn dann der Zeitpunkt zum Hochfahren erreicht ist (entsprechend der Rollladensteuerung), dann fahrt der Rollladen hoch und die Beschattungsroutine greift nicht mehr.

Der Rolladen wird nun manuell herunter gefahren. Wenn die Zeit für das Ende der Abschattung erreicht ist, wird der Rollladen wieder automatisch hochgefahren (in die ursprünglich richtige Position).

Vielen Dank,
Dirk

Bastel-Frank

Hallo Cluni,

ich bin gerade auf deine Rollladensteuerung gestoßen und bin begeistert über den Funktionsumfang und deine Arbeit. Weiterhin gefällt mir dein Programmierstil und die enthaltene Doku sehr gut!

Ich neige normalerweise dazu, solche Lösungen selbst zu entwickeln (wegen dem Spaßfaktor). Ich diesem Fall mache ich aber eine Ausnahme :-) und möchte deine Lösung einsetzen.

Meine Rollladen haben die Namensnotation z.B. EG.wz.ml.RO oder EG.sz.RO.
Diese bedeutet EG=Erdgeschoss, wz=Wohnzimmer, sz=Schlafzimmer, ml=Mitte-Links und RO für Rollladenaktor. Hinweis: ml als Ortsbestimmung gibt es nur im Wohnzimmer. In den anderen Räumen gibt es diese nicht.

Frage: Wie kann ich mit meiner Namensnotation deine Lösung nutzen?

Viele Grüße
Frank

Cluni

Zitat von: Bastel-Frank am 07 August 2018, 19:56:16
ich bin gerade auf deine Rollladensteuerung gestoßen und bin begeistert über den Funktionsumfang und deine Arbeit. Weiterhin gefällt mir dein Programmierstil und die enthaltene Doku sehr gut!

Ich neige normalerweise dazu, solche Lösungen selbst zu entwickeln (wegen dem Spaßfaktor). Ich diesem Fall mache ich aber eine Ausnahme :-) und möchte deine Lösung einsetzen.

Vielen Dank für die Blumen - das ehrt mich natürlich sehr! :)


Zitat von: Bastel-Frank am 07 August 2018, 19:56:16
Meine Rollladen haben die Namensnotation z.B. EG.wz.ml.RO oder EG.sz.RO.
Diese bedeutet EG=Erdgeschoss, wz=Wohnzimmer, sz=Schlafzimmer, ml=Mitte-Links und RO für Rollladenaktor. Hinweis: ml als Ortsbestimmung gibt es nur im Wohnzimmer. In den anderen Räumen gibt es diese nicht.

Frage: Wie kann ich mit meiner Namensnotation deine Lösung nutzen?

Dazu kannst du den Befehl "{Rollladensteuerung_update_device('[Name_des_Rollladen])}" oben in die Befehlszeile eingeben. Damit werden deinem Rollladen alle nötigen Attribute zugeteilt. Im Anschluss musst du jeden Rollladen nach eigenem Bedarf konfigurieren (die ganzen Attribute sind im ersten Post beschrieben). Nun erzeugst du mit dem Befehl "{Rollladensteuerung_create_update_global_dummy()}" den globalen Dummy. Dort werden die globalen Einstellungen vorgenommen und dann kannst du die Rollladensteuerung mit dem Befehl "{Auto_Rol_group_at()}" starten.


@diki: Ich weiß nun, weshalb das Problem auftritt und werde das korrigieren. ;)


Nighthawk

Hallo zusammen,

ich habe mal eine Frage die nur indirekt mit der Rolladenautomatisierung zu tun hat, auf die ich bisher aber keine Antwort gefunden habe.

Ist es irgendwie möglich (mit DoIf oder Notify) bei der Auslösung des at noch weitere aktionen auszuführen?

Hintergrund ist, ich würde gerne bei Anwesenheit einer Person und aktiven TV, bei Auslösung des Rolladen-AT's das Licht einschalten.

Cluni

So, ich habe mal eine Kleinigkeit geändert an der Öffnen-Routine. Der Rollladen sollte nun mit dem automatischen Öffnen normal hoch fahren und dann irgendwann, sobald die Abschattung greift, auf die Position für die Abschattung fahren.

Wer es mal testen möchte: Einfach nur die komplette Datei ersetzen und neu laden. Danach sollte es hoffentlich wie oben beschrieben laufen.

Irgendwann möchte ich, dass der Rollladen bei ausreichender Sonne morgens direkt in die Abschattung fährt statt komplett zu öffnen. Aber das ist etwas mehr Aufwand, wenn ich das gescheit implementieren will...

Cluni

@Nighthawk: Prinzipiell ja schon, aber die ats sind erstens nur temporär (d.h., dass sie nach einmaliger Ausführung oder auch bei einem Neustart des Systems weg sind) und werden ja jede Nacht automatisch neu generiert. Du könntest dir aber ein eigenes Notify bauen, welches auf das Motor-Event des entsprechenden Rollladens reagiert und mit dem du dann einen Perl-Code aufruft. Dort kannst du dann die Anwesenheit und den TV checken. Um nicht bei allen Möglichkeiten das Licht anzumachen, sondern nur abends nach dem Schließen, könntest du einfach das Reading "Automatik_runter_Zeit" mit der aktuellen Uhrzeit vergleichen...

Nighthawk

Hey Cluni,

danke, der Hinweis auf "Automatik_runter_Zeit" hilft mir denke ich weiter, soweit habe ich leider nicht gedacht.

diki

Hallo Cluni,

Zitat von: Cluni am 08 August 2018, 08:48:47
Ich weiß nun, weshalb das Problem auftritt und werde das korrigieren. ;)
vielen Dank für die Mühe und Deine Korrekturen.

Zwischenstand von mir: Die Änderung im Code (https://forum.fhem.de/index.php/topic,73964.msg825073.html#msg825073) hat erstmal keine unerwünschten Nebenwirkungen gezeigt (die Log-Meldungen sind natürlich verwirrend bzw. falsch). Die Rollläden sind zum Zeitpunkt des automatischen Öffnens in der Abschattungsposition geblieben und nach Erreichen des Abschattungswinkels korrekt hochgefahren.

Wenn ich Deine Beschreibung zur 99_myUtils_Shutter.pm in der Version v0.9.4.9 richtig verstehe, dann fährt der Rollladen mit dem automatischen Öffnen hoch und wenn die Abschattung schon greift, gleich wieder herunter? In meinem Fall stehen die Rollladen ja schon in der Position für die Abschattung.

Viele Grüße,
Dirk