[Modul] Rollladensteuerung (BlindControl)

Das sollte nun in der aktuellen Beta (2.00 #23) behoben sein. Bitte um Feedback.

Moin,

ich würde gerne die Eigenschaft „ActivatedIndividualNightLevels“ per Script setzen, bekomme es aber nicht hin, kannst Du mir einen Tip geben?

Gruß Detlev.

Das geht mit IPS_SetProperty und IPS_ApplyChanges.

Gruß Burkhard

Hallo bumaas,

ich habe nun etwas Zeit gefunden, um mir dein Blind Controller Modul näher zu bringen.
Es gefällt mir wirklich gut. Wieder einmal kann ich nur „Danke“ sagen :slight_smile:

Für mich wünschte ich mir zwei Sonderfunktionen…

Terrassentür-Lösung:
Damit man im Sommer durch die, sich schließende Jalousie nicht draussen ausgesperrt wird,
frage ich eine Bool Variable (Tür offen) ab und erlaube dann kein „Jalousie schließen“ !
Wenn dann die Tür endlich geschlossen wird , muss bei uns die Jalousie bewusst (manuell) geschlossen werden.
Luxus wäre hier ein optionales, automatisches nachführen des Schließens (bzw. Beschattungsposition, etc.).
Evtl. mit Vorankündigung durch +10% Schliessen (= Behang macht sich bemerkbar)
und endgültiges „Schließen“ eine Minute (oder einstelllbar) später.

EDIT: Grade Deine Meinung dazu gefunden…

Einer Gefahr des Aussperrens muss man natürlich begegnen. Mit nur einem offen/geschlossen Kontakt, der womöglich bereits geschlossen meldet obwohl die Tür vielleicht nur gerade zugezogen oder angelehnt ist, ist das nicht sicher zu erreichen. Und da möchte ich lieber auch nichts einbauen, um keine falsche Erwartung zu erwecken.

Dann könnte ein Warnhinweis vllt. nützen…

P.S. Meine Lösung funktioniert seit acht Jahren extrem zuverlässig :smiley:

Optionale Be-Lüftungsstellung:
Wenn bei uns im Bad das Fenster Nachts angekippt (Kontakt) wird und wenn der Behang tiefer als die „Lüftungsstellung“ steht,
dann wird der Behang auf eine einstellbare Lüftungsstellung angehoben. Dadurch ist eine bessere Luftzirkulation gegeben.
Wird das Fenster während der Nacht wieder geschlossen, fährt der Behang zu (*1).
Geht diese Belüftungsstellung in den Tagesanbruch hinein wird der Behang einfach aufgefahren (*1).

(*1) Hier sollten besser die Einstellungen deines Moduls greifen (Helligkeit, Beschattung, Kontakte, etc.)

EDIT2: Habe mir hier etwas mit IPS_GetProperty/IPS_SetProperty und der „Nachtposition“
gebaut was für meine ersten Tests schon prima funktioniert.
Da muss man erstmal drauf kommen. Aber da kommen mir dann schon weitere Lösungsansätze in den Kopf…
Wie immer: Es macht Spass :wink:

Danke und Gruß
lueralba
:slight_smile:

Dafür sind die „Kontakte, bei denen der Rollladen geöffnet wird“ gedacht.

So ist es bei den Kontakten.

Interessante Idee. Mal sehen, ob ich das „Schließen mit Vorwarnung“ einbauen kann.

Auch dafür sind die „Kontakte, bei denen der Rollladen geöffnet wird“ mit der vorgebbaren „Minimalhöhe“.

So soll es sein.

Gruß

Burkhard

Hallo Burkhard,

Terrassentür-Lösung:
Damit man im Sommer durch die, sich schließende Jalousie nicht draussen ausgesperrt wird,
frage ich eine Bool Variable (Tür offen) ab und erlaube dann kein „Jalousie schließen“ !

Dafür sind die „Kontakte, bei denen der Rollladen geöffnet wird“ gedacht.

Ja, aber … hierbei wird die Jalousie ja (immer) geöffnet.
Ganz so einfach liegt der Terrassentür-Fall nicht. Wenn ich Nachmittags auf die Terrasse gehe (Terrassentür und Jalousie bleiben geöffnet) und es dann Nacht wird (Jalousie sollte bereits schließen) soll die Terrassenjalousie zwingend offen bleiben.
Das macht ja der „Kontakt bei denen der Rolladen geöffnet wird“.
Nun gehe ich irgendwann rein, schließe die Tür und der Rolladen geht runter (weil der Kontakt schließt). Das machen wir aktuell noch per Taster (manuell) weil wir manchmal noch etwas rausschauen wollen.
Wieder etwas später mag ich dann die Terrassentür über die Nacht gekippt lassen (Kontakt öffnet), aber die Rollade soll ja die Tür schützen (zu bleiben). Das funktioniert mit der augenblicklichen Logik nicht. Der „Luxus“ ist Pflicht und nicht (optionale) Kür :smiley:
Oder ich begreife es noch nicht…

EDIT: Meine erdachte Lösung wäre mit dem Kontakt ein Script triggern welches die BlindController Aktivierungsvariable ausschaltet und nach noch zu definierenden Bedingungen wieder einschaltet. Da denke ich noch drüber nach…

Wenn bei uns im Bad das Fenster Nachts angekippt (Kontakt) wird und wenn der Behang tiefer als die „Lüftungsstellung“ steht,
dann wird der Behang auf eine einstellbare Lüftungsstellung angehoben. Dadurch ist eine bessere Luftzirkulation gegeben.
Wird das Fenster während der Nacht wieder geschlossen, fährt der Behang zu (*1).

Auch dafür sind die „Kontakte, bei denen der Rollladen geöffnet wird“ mit der vorgebbaren „Minimalhöhe“.

Bei einem kurzen Test (Tagbetrieb, manuell runtergefahren, DeactivationManualMovement Zeit auf 1, Minimalhöhe auf 25) fuhr die Rollade komplett hoch und blieb dort !
Das ist doch nicht richtig oder ?

Gruß
Lutz

Ich habe das über einen Drehgriffsensor gelöst, mit diesem kann ich die Zustände „Geöffnet“ und „Gekippt“ unterscheiden.
Ist der Zustand „Geöffnet“ aktiv setze ich eine Bool Variable als Kontakt für 100% offen, damit fährt der Rollladen nicht runter.
Ist der Zustand gekippt fährt der Rolladen in Lüfterstellung.

Loerdy

Oder du setzt in dem Skript eine Variable, die du als Kontakt-offen einbindest.

bei „DeactivationManualMovement = 1“ wird die manuelle Position ja nur für eine Minute beibehalten. danach fährt er wieder die automatische Position an. Und die ist ja in dem Fall ‚offen‘, da Tag.
Der Default von „DeactivationManualMovement“ ist 120. Dann bleiben manuelle Positionen 2 Stunden erhalten. Oder alternativ setzt du den Wert auf 0, dann wird die Position bis zum nächsten Tag/Nacht Wechsel beibehalten.

Hallo!

Ja, sieht gut aus. Danke! :slight_smile:

@bumaas:

Hallo Burkhard,

Oder du setzt in dem Skript eine Variable, die du als Kontakt-offen einbindest.

DIe Lösung ist (für mich) viel einfacher:
1.) Ich schalte die BlindControl Instanz einfach „inactive“ mit dem öffen der Terrassentür.
Zusätzlich wird ein Flag (Bool-Variable) für das WFE auf true gesetzt.
2). Mit dem nächsten Schließen der Rollade (100% zu) wird die BlindControl Instanz wieder auf „active“ gesetzt.
Ausserdem das Flag (Variable) auf false.

Einen Mini-Wunsch hätte ich :
Wenn ich die Instanz de-/aktiviere mittel IPS_SetProperty() wird die „Last Message Variable“ nicht aktualisiert.
Schalte ich die Instanz per Hand (Activated On/Off) erscheint korrekterweise folgendes:

  1. August 2019 19:06 - ‚Blind Controller‘ bewegt sich nun wieder automatisch.
  2. August 2019 19:06 - ‚Blind Controller‘ wurde deaktiviert.

EDIT:
Quatsch, nicht mit IPS_SetProperty() —> sondern mit Setvalue() der BoolVariable „Activated“.

Danke Dir und Gruß
Lutz

Instanzvariablen sollten nicht mit SetValue gesetzt werden. Es wundert mich, dass die Instanz dabei auf inaktiv geht. Richtig wäre RequestAction(). Dann kommt auch die Meldung.:slight_smile:

RequestAction():

Stimmt jetzt funktioniert es !

Danke für den Hinweis

Hallo Burkhard,

nachdem wir gestern versehentlich unsere Alarmanlage ausgelöst haben, kam erstmalig der Notfallkontakt ins Spiel. Dabei ist mir aufgefallen, dass zwei Raffstore die Automatik nicht deaktiviert haben. Ich wollte dann auf meinem Tablet den Alarmstatus zurücksetzen, es kam aber eine Fehlermeldung des „Rücksetzte-Skripts“.
Ich habe heute die Situation nochmals simuliert und dabei festgestellt, dass tatsächlich zwei Raffstore bei Alarmauslösung nicht deaktiviert werden. Weiters habe ich festgestellt, dass meine Meldungsübersicht mit folgender Meldung geflutet wird:

Skriptfehler.JPG

Wenn ich den Symcon-Dienst neustarten möchte, dauert es ewig, bis dieser durchgeführt wird.
Kann das mit deinem Modul zusammenhängen?
Der Fehler tritt immer dann auf, wenn ich den Notfallkontakt auslöse.

Ein löschen und neu hinterlegen der beiden Notfallkontakte hat leider auch keine verbesserung gebracht.

Liebe Grüße
Peter

Hallo Peter,

wieviele Rollladen Instanzen hast du denn? Jede Instanz startet im Notfall einen Thread zum Hochfahren des Rollladens. Nun ist standardmäßig die Anzahl gleichzeitig laufender Threads auf 10 gestellt (Spezialschalter von IP-Symcon). Danach werden weitere in eine Queue gestellt, die standardmäßig maximal 50 Einträge aufnimmt. Das sollte normalerweise reichen, aber es hängt nun davon ab, was sonst noch auf deinem System los ist bzw. beim Notfall gestartet wird.
Hast du ein besonders schwaches System? Wenn nicht, dann erhöhe mal ruhig die Anzahl Threads deutlich (>30) und mache den Test noch einmal.

Du meinst, das Herunterfahren dauert ewig? Das hängt wohl weniger mit dem Modul zusammen, als damit dass deine Queue Liste erst abgearbeitet wird, bis wirklich heruntergefahren wird. So nehme ich zumindest an.

Im Fenster ‚PHP Info‘ kannst du auch die Liste der aktuellen Threads beobachten. Dort bekommst du sicherlich einen Hinweis, welche Threads besonders häufig sind und zum Stau führen.

Genau das dürfte das Problem sein. Ich habe ein Skript am laufen, welches mir aktuelle Meldungen in einer schönen Meldungsübersicht auflistet. Welche Meldungen gezeigt werden sollen und mit welchem Text, kann vorher definiert werden. Im konkreten Fall ist es so, dass eine Meldung angezeigt wird, wenn eine Rollladen- oder Raffstore-Automatik deaktiviert wurde. Da natürlich bei einem Notfall ALLE Rollläden und Raffstore gleichzeitig deaktiviert werden, wird das Skript für die Meldungsanzeige in diesem Moment 14x gestartet. Dazu kommen noch die standardmäßigen Skripte, die sowieso laufen. Ich habe jetzt testweise die Meldungsanzeige deaktiviert und jetzt ist der Fehler mit den zu vielen Skripten weg.

Eigentlich nicht. Hab einen Rasperry der meines Wissens nach nicht ausgelastet ist. Werd die Threads mal höher stellen und schauen, was passiert.

Danke auf alle Fälle für den Tipp!

Ich wollte meine Rollladensteuerung weiter anpassen. Im Eingangsbereich der Räume habe ich FS20TC6 Sensortaster mit denen ich, über ein Skript, HM steuere. Damit in LastMessage nicht nur ‚wurde manuell geöffnet‘ steht sondern auch welcher Taster habe ich auf BLC_MoveBlind umgestellt.
Damit läuft es aber nicht.
Die Rollladen schließen und gehen danach gleich wieder in die Startposition zurück. Und … in diesem Fall mit 2 Rollladen startet erst der eine und eine Minute später der nächste.

//HM_WriteValueFloat(10228 /*[OBERGESCHOSS\SCHLAF\Sicherheit\HM Rollladen großes Fenster]*/,"LEVEL", 0.0);
BLC_MoveBlind(42766 /*[OBERGESCHOSS\SCHLAF\Sicherheit\HM Rollladen großes Fenster\Rollladensteuerung\SZ Fenster groß]*/, 100, 0, 0, "TasterTür"); //(0=geöffnet, 100 = geschlossen)

//HM_WriteValueFloat(52982 /*[OBERGESCHOSS\SCHLAF\Sicherheit\HM Rollladen kleines Fenster]*/,"LEVEL", 0.0);
BLC_MoveBlind(51134 /*[OBERGESCHOSS\SCHLAF\Sicherheit\HM Rollladen kleines Fenster\Rollladensteuerung\SZ Fenster klein]*/, 100, 0, 0, "TasterTür"); //(0=geöffnet, 100 = geschlossen)

Wie sollte BLC_MoveBlind richtig funktionieren?

Stand: V5.1 und BlindController aktuelle Stable.

Und… Es wird noch merkwürdiger. Nach längerer Zeit nehmen alle mit BLC_MoveBlind gesteuerten Rollladen merkwürdige Zwischenpositionen ein.

MoveBlind führt eine automatische Bewegung durch. Nach der eingestellten Deaktivierungszeit tritt die Automatik wieder in Kraft.

Für manuelle Eingriffe ist es weniger gedacht.

Einen Zusammenhang mit den „Zwischenpositionen“ gibt es da eigentlich nicht. Da müssen andere Gründe vorliegen.

Vielleicht helfen die Debugausgaben da weiter. Du kannst sie mir gerne einmal zuschicken.

Gruß

Burkhard

Ich mache jetzt erst mal alles rückgängig. Glücklicherweise hatte ich alles Alte drin gelassen. Wozu ist der Befehl eigentlich gedacht?
Später teste ich dann das mit den merkwürdigen Zwischenpositionen nochmal.

Der Befehl ist mehr eine interne Funktion. Da sie aber auch im Konfigurationsformular zum Testen genutzt wird, ist sie öffentlich.
Vielleicht sollte ich sie ganz aus der Doku nehmen.

Hallo Burkhard,

ich bin zurzeit auf Urlaub. Damit der Rollladen im Schlafzimmer nicht wie hinterlegt um 06:30 Uhr nach oben fährt, habe ich ihn deaktiviert. Dann fährt er natürlich am Abend auch nicht automatisch runter. Wie könnte ich es umsetzen, dass er nur in der Früh nicht nach oben fährt, am Abend aber dann automatisch runter gefahren wird?
Hast du da eine Idee?
Eventuell könnte ich die „geplante Anwesenheit“ - Funktion von IPS dafür verwenden.

Liebe Grüße
Peter