Projektumfang:
Die beschriebene Rollladensteuerung öffnet und schließt die Rollläden dämmerungsgesteuert beim Wechsel Tag/Nacht. Sie fährt die Rollläden witterungsgesteuert in eine bedarfsabhängige Beschattungsposition zur Vermeidung von unnötigem Wärmeeintrag (Hitzeschutz). Die gesamte Automatik kann zentral deaktiviert werden.
Vorraussetzungen:
CCU mit aktueller Firmware (ab 3.45.7)
Sensor zur Erkennung von Sonnenschein, empfohlen Temperatur-Differenz-Sensor; notfalls Lichtsensor, Wettersensor oder Wetterdaten aus dem WWW
natürlich Rolladenaktoren
optional Türgriffsensor oder Tür/Fensterkontakt
benötigte Fähigkeiten:
Grundkenntnisse in der WebUI-Programmierung (Anlernen von Geräten, Anlegen und Ändern von Programmen, Einfügen von Skripten)
grundlegendes Wissen über die Unterschiede zwischen "bei Aktualisierung", "bei Änderung", "nur prüfen"
Anlegen von Systemvariablen
grundlegendes Logik-Verständnis / Abstraktionsvermögen um die beschriebenen Lösungen ggf. auf eigene Bedürfnisse anzupassen
Tips zur Fehlersuche: viewtopic.php?f=31&t=67597
Systematik:
Statt die Rollladen direkt zu steuern, indem z.B. ein Programm auf Uhrzeit oder Temperatur reagiert und dann das Rollo fährt,
ist der Aufbau prinzipiell modular, indem eine Systemvariable einen Zustand repräsentiert und dessen Änderung eine Aktion auslöst.
Der Vorteil ist die Möglichkeit das Verhalten an zentraler Stelle zu beeinflussen und zudem eine Reduzierung der Komplexität, indem Entscheidungsbäume entzerrt werden.
Generell versuche ich die Grundsätze für stabile Programme zu verfolgen
- statt SONST-WENN-Blöcke jeweils eigene Programme erstellen
- bedingungslose SONST-Blöcke vermeiden
Vorbereitung:
Sensoren und Aktoren anlernen, den Geräten und Kanälen sprechende Namen geben, doppelte Namen vermeiden
Grundlegend benötigte Systemvariablen anlegen:
- sonne_elevation; Typ Zahl von -180 bis +180 grad
- sonne_azimut; Typ Zahl von-360 bis +360 grad
- Nacht; Typ Logikwert und den Optionen es_ist_nacht / es_ist_Tag
- Rollo_Automatik; Typ Logikwert und den Optionen automatisch/manuell
- Sonnenstatus; Typ Werteliste mit den Werten: keine_Sonne;Schatten_wird_Sonne;Sonne_wird_Schatten;Sonne_scheint
Achtung: hier ist die Reihenfolge der Werte wichtig, falls man später mal eine grafische Auswertung machen will. Die Werte werden von den Zahlen 0-3 repräsentiert, wobei bei korrekter Reihenfolge 0=keine_Sonne und 3=Sonne_scheint bedeutet - Beschattung; Typ Logikwert mit den Optionen ja/nein
- Level_Fenster_xxx; Typ Zahl von 0 bis 100 mit Einheit % ODER von 0 bis 1 mit Einheit (%)
=> Es muss für jedes Fenster eine eigene Variable angelegt werden oder zumindest für alle Fenster, die eine unterschiedliche EInstellung für die Behanghöhe (unterschiedliche Laufzeit) benötigen.
Achtung: hier lauert eine kleine Falle. Die Behanghöhe wird intern in 1/100 gespeichert und für die Anzeige in der WebUI in % umgerechnet. Legt man die Variable mit der Einheit % an, dann erfolgt auch hier die Umrechnung. Nimmt man eine andere Einheit - wie z.B. (%) - dann erfolgt keine Umrechnung. Man muss dies dann nur konsequent beachten. Zur Stolperfalle wird es, wenn man in Skripten die Behanghöhe verarbeitet, weil hier keine Umwandlung in % stattfindet. Daher habe ich die Variable mit (%) angelegt.
Zur Problematik der Einheit % in der WebUi siehe diesen und folgende Beiträge. - Forecast_Temp; Typ Zahl mit -50 bis +50 °C
- Protokolleintrag; Typ Zeichenkette; Option "protokolliert" aktiv - diese Variable ist optional und dient einfach dazu Statusinformationen ins Protokoll zu schreiben. Wenn man das nicht möchte, ignoriert man die entsprechende Aktion in den Programmen einfach