Howto - zentrales Beschattungssteuerungsprogramm (zBSP) V3.4

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Howto - zentrales Beschattungssteuerungsprogramm (zBSP) V3.4

Beitrag von dtp » 13.01.2019, 11:34

Einleitung

Motivation

Nachdem ich irgendwie immer mehr genervt war von meinen zahlreichen Beschattungsprogrammen für jede einzelne Rolllade und Markise und dem damit verbundenen Problem der immer geringer werdenden Übersichtlichkeit, habe ich mich entschlossen, analog meinem zentralen Push-Nachrichten-Programm zPNP auch ein entsprechendes Beschattungsprogramm zBSP umzusetzen.

Was kann das zBSP?

Hier mal eine Feature-Liste:
  • Aufruf beliebiger Beschattungsgeräte mit beliebigen Behanghöhen bzw. Ausfahrwerten und ggf. Lamellenpositionen.
  • Unterstützung aller HM- und HMIP-Rollladen- und -Jalousieaktoren sowie -Fenstersensoren (mit Einschränkungen werden auch EnOcean-Rollladenaktoren als CUxD-Geräte unterstützt).
  • Sicheres Vermeiden von Aktoraufrufen zur Relaisschonung, wenn deren Soll-Zustand bereits vorliegt.
  • Nahezu gleichzeitiges Ansprechen von z.B. Rollläden und/oder Markisen (rein optischer Effekt für synchrone Fahrprozesse).
  • Möglichkeit zum zeitverzögerten Ansprechen der Beschattungsgeräte.
  • Optionale Berücksichtigung gekippter und geöffneter Fenster und Türen mit individuellen Korrekturwerten (relativ oder absolut).
  • Alternativ oder ergänzend zu den Hardware-Sensoren können auch Systemvariablen zur Berücksichtigung der Fenster- und Türzustände verwendet werden.
  • Einfache Vermeidung von Schließvorgängen bei geöffneten und/oder gekippten Fenstern und Türen.
  • Möglichkeit zum Sperren und Entsperren der lokalen Bedienung am Aktor (HM und HMIP).
  • Einfaches Setzen einer minimalen oder maximalen Behanghöhe bei HMIP-Aktoren, die auch für die lokale Tasterbedienung gilt (z.B. Frostschutzfunktion).
  • Möglichkeit von Testläufen ohne Ansteuerung der Beschattungsgeräte im Life-Betrieb.
  • Möglichkeit zur Statusabfrage des vollständigen Beschattungsgewerks inkl. Verschlusszustand der zugehörigen Fenster und Türen.
  • Einfache Möglichkeit zum Aufruf des gesamten Beschattungsgewerks inkl. oder exkl. Markisen.
  • Möglichkeit zum Ansteuern von Markisen mit inversen Werten (100 -> 0, 0 -> 100, 80 -> 20, etc.).
  • Optionale Definition unterschiedlicher Auslöseschwellen beim Soll-Ist-Vergleich.
  • Optionale Definition globaler Werte für alle angesteuerten Beschattungsgeräte.
  • Möglichkeit zum Abspeichern einer Beschattungswerteliste und zum späteren Aufruf dieser Liste innerhalb eines festlegbaren Zeitfensters.
  • Möglichkeit zum Ergänzen der abgespeicherten Beschattungswerteliste innerhalb eines festlegbaren Zeitfensters.
  • Möglichkeit zum Aufruf gespeicherter Listen mit einer abweichenden, globalen Auslösebedingung.
  • Absolute Unabhängigkeit von IDs, Kanalnamen und Seriennummern der einzelnen Geräte. Damit ist jederzeit ein einfacher Gerätetausch möglich.
  • Sehr einfache Integration neuer Beschattungsgeräte sowie Fenster- und Türsensoren ohne Änderung am zBSS.
  • Möglichkeit zur Benachrichtigung über die geänderten Werte und Status per Push-Nachricht.
  • Einfache Erkennung von Fenster- und Türzuständen per Farbcodierung (yellowgreen: geschlossen, royalblue: gekippt, orange: offen) in den Push-Nachrichten.
  • Möglichkeit zum ergänzenden Übertragen individueller Benachrichtungsinhalte, wie z.B. Auslösewerte durch $src$-Übergabe.
  • Möglichkeit zur vollständigen Unterdrückung von Push-Nachrichten (sinnvoll z.B. bei wiederkehrenden, zeitabhängigen Auslösungen).
Voraussetzungen

Eine wesentliche Voraussetzung für die automatische Berücksichtigung der Fenster- und Türenzustände ist die Benamung der ensprechenden Geräte. So dürfen sich die jeweiligen Fenster- und Türsensoren in ihrem Namen lediglich durch einen typischen Rollladen-Begriff von den Namen der zugehörigen Rollladen-Aktoren unterscheiden.

Ein Beispiel: Heißt der Fenstersensor für das Wohnzimmer-Fenster "Wohnzimmer Fenster", so sollte der zugehörige Rollladen-Aktor die Bezeichnung "Wohnzimmer Fenster Rollladen", "Rollladen Wohnzimmmer Fenster" oder "Wohnzimmer Rollladen Fenster" aufweisen. Dieser Namenszusatz muss im nachfolgenden, zentralen Beschattungssteuerungsskript zBSS definiert werden. Sämtliche Fenster- bzw. Tür-Sensoren und Beschattungsaktoren müssen dieser Nomenklatur folgen. Ansonsten kann das zBSS die Fenster- und Türzustände nicht automatisch berücksichtigen, und es wird stets von geschlossenen Fenstern und Türen ausgegangen.

Ich bin mir sehr wohl im Klaren darüber, dass dieses Skript kein Universalskript für jeden darstellt. Natürlich ist es jedem freigestellt, es an seine eigenen Bedürfnisse anzupassen. Ich kann dann jedoch keinen Support mehr liefern.

Zusatzsoftware

Für die Benachrichtung per Push-Nachricht muss das zentrale Push-Nachrichten-Programm (zPNP) installiert sein. Falls ihr das nicht habt oder wollt, dann kann man die Push-Benachrichtigung im zBSS auch einfach löschen bzw. durch eine eigene Lösung ersetzen. Aber dazu später mehr.

Das zBSP

Das zBSP selbst ist sehr simpel und besteht im Grunde genommen nur aus einem Dann-Zweig, der eine einzige Skriptzeile zum Aufruf des zBSS enthält. Zudem kann optional noch der Status der CCU im zugehörigen Wenn-Zweig abgefragt werden, um zu vermeiden, dass das zBSP unmittelbar nach einem Neustart der CCU ausgeführt wird.
zBSP.png
zBSP.png (20.88 KiB) 1914 mal betrachtet
Das zBSP trägt bei mir den kurzen Namen "CCU PRG Beschattung". Aufgerufen wird es durch ein Programm samt Skript, auf das ich in einem nachfolgenden Posting noch eingehen werde. Der Name des zBSP ist sehr wichtig, weil er in den aufrufenden Skripten verwendet wird. Natürlich kann er individuell gewählt werden.

Systemvariablen

Das zBSS erzeugt die benötigten Systemvariablen automatisch, sofern noch nicht vorhanden. Die Namen der Systemvariablen können im zBSS nach eigenen Wünschen angepasst werden. Der Einfachheit halber gehe ich im Folgenden von den im nachfolgenden Code-Block des zBSS verwendeten Namen aus.

Code: Alles auswählen

! +++++ Namen der für die Beschattung benötigten Systemvariablen +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte und -werte, obligatorisch
string svBlindsListPrev = "CCU SV Beschattung Vorliste"; ! Liste der Beschattungsgeräte und -werte aus dem vorigen Durchlauf, optional
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Korrekturwerte und Auslösebedingungen , optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional
Wie man sieht, ist im Wesentlichen nur eine einzige Systemvariable zwingend erforderlich. Die drei anderen sind optional. Möchte man sie nicht verwenden, setzt man sie einfach auf "". Dann werden sie nicht angelegt.

Mit der obligatorischen Systemvariablen "CCU SV Beschattung Liste" setzt man eine Liste aller zu steuernden Beschattungsgeräte. Zudem können hier für jedes Beschattungsgerät die jeweiligen Behanghöhen bzw. Ausfahrwerte für geschlossene sowie für geöffnete und gekippte Fenster und Türen in Verbindung mit einer individuellen Auslösebedingung für den Vergleich zwischen Soll- und Istwert definiert werden. Auch ist es möglich, ein Beschattungsgerät lokal zu sperren und wieder freizugeben, so dass man es nicht mehr vor Ort bedienen kann. Mehr dazu im nächsten Posting.

Die optionale Systemvariable "CCU SV Beschattung Vorliste" dient zum Abspeichern der aktuellen Sollwerte aus der Systemvariablen "CCU SV Beschattung Liste". Es werden jedoch nur die Werte der tatsächlich vorhandenen Beschattungsgeräte abgespeichert. Später können diese Sollwerte wieder eingelesen werden, sofern ihr Aufruf innerhalb eines festlegbaren Zeitfensters erfolgt. Auf diese Weise ist es z.B. möglich, das nachträgliche Schließen eines Verschlusses zu berücksichtigen. Ist z.B. während des Aufrufs des zBSP ein Fenster gekippt und der zugehörige Rollladen schließt nur auf 20 % statt auf die gewünschten 0 %, weil die Offset-Werte entsprechend vorgegeben sind, dann kann der Rollladen durch Aufruf des zBSP mit den zuvor gespeicherten Sollwerten beim nachträglichen Schließen des Fensters innerhalb des festgelegten Zeitfensters automatisch auf 0 % gefahren werden. Wird das Fenster innerhalb des Zeitfensters gekippt, fährt der Rollladen wiederum automatisch auf 20 %, sofern die zugehörige Auslösebedingung erfüllt ist. Nach Ablauf des Zeitfenster erfolgt keine Ansteuerung der Rollläden mehr.

Statt jedem Beschattungsgerät individuelle Werte mitzugeben, kann man auch über die Systemvariable "CCU SV Beschattung Globalwerte" globale Werte für alle Beschattungsgeräte festlegen. Sobald diese Systemvariable mit Inhalt befüllt wird, werden die in der Systemvariablen "CCU SV Beschattung Liste" gesetzten Werte automatisch ignoriert. Zudem erlaubt diese Systemvariable das Starten eines Testlaufs, ohne dass die angesprochenen Beschattungsgeräte ausgelöst werden. Weiterhin wird hier das Speichern und Laden der Beschattungssollwerte festgelegt. Auch hierzu im nächsten Posting mehr.

Die vierte Sytemvariable "CCU SV Beschattung Nachricht" kann zum Übertragen zusätzlicher Informationen per Push-Nachricht dienen. So lassen sich z.B. bestimmte Auslösewerte oder andere Hinweise übertragen. Das zBSS ist so eingestellt, dass es standardmäßig eine Liste aller ausgelösten Beschattungsgeräte samt der zugehörigen Ist- und Sollbeschattungswerte per Push-Nachricht sendet. Diese Liste kann um den Inhalt von "CCU SV Beschattung Nachricht" erweitert werden. Weiterhin ist es mit dem Eintrag "--" möglich, sämtliche Push-Nachrichten zu unterdrücken.

Ganz wichtig ist, dass für svBlindsList, svBlindsListPrev, svBlindsGlobalValues und svBlindsMessage im zBSS und in den aufrufenden Skripten jeweils immer dieselben Namen eingetragen sind!

Damit die Systemvariablen nun automatisch erzeugt werden, muss das zBSP einmal per Klick auf den Start-Button unter "Status und Bedienung | Programme" ausgeführt werden.
zBSP_Initialisierung.png
Das zBSS

Kern des zBSP ist das zBSS. In diesem zentralen Skript werden sämtliche Zustände überprüft und gesetzt. Im zBSS müssen neben den obigen Systemvariablen noch folgende lokalen Variablen gesetzt werden (hierzu mehr im nächsten Teil):

Code: Alles auswählen

! +++++ Charakteristische Bezeichnung der Beschattungsgeräte (ggf. mit nachfolgendem Trennzeichen) +++++
string blindsIndicator = "Rollladen "; 
string anwningsIndicator = "Markise ";

! +++++ Beschattungsgewerk (nur für Statusmeldung relevant) +++++
string blindsTrade = "Beschattung";

! +++++ Stringersatz für "blindsIndicator", falls Fenster- und/oder Türzustand über Systemvariablen erfolgt (ggf. mit nachfolgendem Trennzeichen) +++++
string replaceSV = "";

! +++++ Korrekturwerte im Falle gekippter oder geöffneter Fenster und Türen +++++
boolean offsetFlag = true; ! true: als Offset bzw. Relativwert; false: als Absolutwert

! +++++ Erlaubtes Zeitfenster zum Laden der zuletzt in svBlindsListPrev gespeicherten Werte +++++
! Hinweis: Nur relevant, wenn "LOAD" in svBlindsGlobalValues gesetzt wird.
integer loadPeriod = 1200; ! Angabe in Sekunden (0: kein Zeitfenster)

! +++++ Zeitfenster, innerhalb dem ein Laden der gespeicherten Werte unterdrückt wird +++++
! Hinweis: Nur relevant, wenn "LOAD" in svBlindsGlobalValues gesetzt wird.
integer exclPeriod = 0; ! Angabe in Sekunden

! +++++ Zeitfenster, innerhalb dem nach dem letzten Speichern neue Werte zu svBlindsListPrev hinzugefügt werden +++++
! Hinweis: Nur relevant, wenn "SFAD" in svBlindsGlobalValues gesetzt wird.
integer sfadPeriod = 0; ! Angabe in Sekunden (0: kein Zeitfenster)

! +++++ Sperr- und Entsperrwert für die lokale Bediensperre von IP-Aktoren ++++
! Achtung: Einfluss ist abhängig von den logischen Verknüpfungen der virtuellen Kanäle 
! Die Werte können durch LOCKnnn bzw. ULCKnnn überschrieben werden 
real lockValueIP = 100.0; ! Als Prozentwert mit einer Dezimalstelle
real ulckValueIP = 0.0; ! Als Prozentwert mit einer Dezimalstelle
sowie die Systemvariablennamen und der Programmname des zPNP:

Code: Alles auswählen

! +++++ Namen der für die Beschattung benötigten Systemvariablen +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte und -werte, obligatorisch
string svBlindsListPrev = "CCU SV Beschattung Vorliste"; ! Liste der Beschattungsgeräte und -werte aus dem vorigen Durchlauf, optional
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Korrekturwerte und Auslösebedingungen , optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Namen der verwendeten Systemvariablen zur Übertragung von Push-Nachrichten per zPNP +++++
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushPrio = "CCU SV Push Prio"; ! gem. zPNS-xx, obligatorisch
string svPushoverSound = "CCU SV Pushover Sound"; ! gem. zPNS-Po, optional

! +++++ Name des zentralen Push-Nachrichten-Programms zPNP +++++
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch
Wenn man die lokale Bediensperre eines HMIP-Aktors mit "LOCK" aktiviert (dazu später mehr), werden die virtuellen Kanäle 5 und 6 des HMIP-Aktors auf den unter "lockValueIP" definierten Wert gesetzt. Zum Deaktivieren der lokalen Bediensperre mit "ULCK" werden die virtuellen Kanäle auf den unter "ulckValueIP" definierten Wert gesetzt. Zudem ist es möglich, diese Werte mit entsprechenden Prozentwerten, z.B. "LOCK50" oder "ULCK4" individuell für jeden HMIP-Aktor oder auch global für alle HMIP-Aktoren im aufrufenden Skript zu definieren. Dann werden die unter "lockValueIP" und "ulckValueIP" gesetzten Werten entsprechend überschrieben.

Wer das zPNP nicht verwendet oder verwenden möchte, der kann die obigen Codezeilen sowie die zugehörigen Zeilen am Ende des zBSS ab "! +++++ Senden der Push-Nachricht +++++" komplett löschen bzw. durch eigene Skriptzeilen ersetzen. Es ist aber auch möglich, sie unverändert im Skript zu belassen und dann die Sytemvariable "CCU SV Beschattung Nachricht" auf den Wert "--" zu setzen, um keine Fehlermeldung zu generieren.

Update auf die neueste Version

Seit der Version 2 sind die aufrunden Skripte für das zBSP/zBSS aufwärtskompatibel. Sprich, sie funktionieren ohne Veränderung mit der aktuellsten Version des zBSS. Daher genügt es, das zBSS per Copy & Paste durch die jeweils neueste Version im zBSP zu ersetzen. Sollte dies einmal anders sein, werde ich explizit darauf hinweisen.
zBSS344.hsc
(29.71 KiB) 32-mal heruntergeladen
Beispiele für den Aufruf des zBSP

Bitte diesbezüglich auch unbedingt den nächsten Beitrag lesen.
  1. Setzen der Systemvariablen und lokalen Skriptvariablen.
  2. Beispiele für den Aufruf des zBSP sowie der per Pushover übertragenen Push-Nachrichten.
  3. Tägliches Schließen bestimmter Beschattungsgeräte bei Dunkelheit, sicheres Auslösen nach Timer-Ablauf und automatisches Auslösen nach Betätigung eines Verschlusses.
  4. Beschattung bei Hitze.
  5. Fehler- und Warnmeldungen des zBSS.
Anregungen und Wünsche

Fragt mich einfach. Ich schaue dann was geht. 8)

Gruß,

Thorsten

Versionshistorie
  1. Version 1.0 (Januar 2019)
    • Stabile Version des zBSP und zBSS.
  2. Version 1.1 (Januar 2019)
    • Möglichkeit zur Wahl zwischen relativen und absoluten Korrekturwerten für gekippte und geöffnete Fenster und Türen.
    • Möglichkeit zur Aktivierung eines Testlaufs ohne Auslösung der Beschattungsgeräte.
  3. Version 1.2 (Januar 2019)
    • Möglichkeit zum Starten von Testläufen direkt über das aufrufende Skript.
    • Möglichkeit zum Aktivieren und Deaktivieren einer lokalen Bediensperre.
    • Umstellung auf die Begriffe "TILT" und "OPEN" statt "t" und "o".
  4. Version 2.1 (Mai 2019)
    • Berücksichtigung von HMIP-Rollladenaktoren und CUxD-Geräten (z.B. EnOcean).
    • Möglichkeit zum Abspeichern und Aufrufen von Beschattungssollwerten mittels der globalen Parameter "SAFE" und "LOAD".
    • Änderung diverser Ausgaben für die Push-Nachrichten.
  5. Version 2.2 (Juni 2019)
    • Anzeige von Statusberichten des gesamten Beschattungsgewerks mittels des globalen Paramters "STAT".
    • Individuelle Ansteuerung von Markisen mit inversen Beschattungswerten mittels des Parameters "INVA".
    • Überarbeitete Anzeige von Statuswerten in den Push-Nachrichten.
    • Umstellung der Steuerparameter auf Großschreibung.
    • Möglichkeit zur optionalen Trennung der Steuerparameter per Leerzeichen.
  6. Version 2.3 (Juni 2019)
    • Überarbeitete LOAD-Funktion mit abweichender Auslösebedingung.
  7. Version 2.4 (November 2019)
    • Anzeige von "Keine weitere Auslösung durchgeführt.", wenn die LOAD-Funktion bei keinem der angesprochenen Rollläden zu einer Änderung führt.
  8. Version 2.5 (März 2020)
    • Lokale Bediensperre auch für HMIP-Aktoren mittels der virtuellen Kanäle 5 und 6.
  9. Version 3.0 (Mai 2020)
    • Möglichkeit zum Setzen beliebiger Lock- und Unlock-Werte für HMIP-Aktoren im zBSS.
    • Möglichkeit zum Setzen beliebiger Lock- und Unlock-Werte für HMIP-Aktoren im aufrundenen Skript per "LOCKnnn" bzw. "ULCKnnn" (sowohl global, als auch individuell).
    • Vereinfachter Aufruf des gesamten im zBSS unter "blindsTrade" gesetzten Gewerks im aufrunden Skript mit dem globalen Parameter "TRAD".
    • Möglichkeit zum Ausschluss von Markisen bei Nutzung von "TRAD" durch den globalen Parameter "EXCA".
    • Invertierung von Markisenwerten nur noch mit dem globalen Parameter "INVA" (nicht mehr lokal möglich).
    • Wird ein Gerätename nicht gefunden oder liegt ein unzulässiger Wert für die Behanghöhe vor, erfolgt kein Abspeichern des betreffenden Geräts in der Vorliste bei Verwendung des globalen Parameters "SAFE". Auf diese Weise können bei Verwendung von "LOAD" fehlerhafte Aufrufe vermieden werden.
    • Verbesserte Anzeige in den Push-Nachrichten.
  10. Version 3.1 (Mai 2020)
    • Möglichkeit zum Setzen von Lamellenpositionen für Jalousieaktoren mit dem Parameter "SLATnnn".
    • Anzeige der Lamellenpositionen in den Push-Nachrichten.
  11. Version 3.2 (Juni 2020)
    • Möglichkiet zum zeitversetzen Ansprechen von Beschattungsgeräten mit dem lokalen Parameter "DLAYnnn".
    • Möglichkeit zum Ergänzen der abgespeicherten Beschattungswerteliste innerhalb eines festlegbaren Zeitfensters mit dem globalen Paramter "SFAD".
    • Kleinere Verbesserungen der Anzeige in den Push-Nachrichten.
  12. Version 3.3 (Juni 2020)
    • Es kann nun auch ein Mindestwert für das Lade-Zeitfenster festgesetzt werden, um ein frühzeitiges Auslösen zu verhindern.
  13. Version 3.4 (August 2020)
    • Unterstützung von Systemvariablen für die Fenster- und Türzustände.
    • Beseitigung einiger Fehler.
Zuletzt geändert von dtp am 06.09.2020, 15:00, insgesamt 102-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V3.x

Beitrag von dtp » 13.01.2019, 11:35

Setzen der Systemvariablen

CCU SV Beschattung Liste

Wie bereits im Ausgangsposting erwähnt, können sämtliche Parameter in einer Liste mittels der Systemvariablen "CCU SV Beschattung Liste" an das zBSP bzw. zBSS übergeben werden. Diese Liste muss folgendermaßen aufgebaut sein:

Code: Alles auswählen

Beschattungsgerät|Behanghöhe|Korrekturwert(TILTnnn OPENnnn) Lamellenstellung(SLATnnn) Bediensperre(LOCKnnn/ULCKnnn) Verzögerung(DLAYnnn)|Auslösebedingung(ne/gt/ge/lt/le)\t
Beschattungsgerät|Behanghöhe|Korrekturwert(TILTnnn OPENnnn) Lamellenstellung(SLATnnn) Bediensperre(LOCKnnn/ULCKnnn) Verzögerung(DLAYnnn)|Auslösebedingung(ne/gt/ge/lt/le); 
Die Trennung der einzelnen Listeneinträge für die zugehörigen Beschattungsgeräte erfolgt per Tabulator "\t". Innerhalb eines Listeneintrags werden die einzelnen Parameter durch ein "|" getrennt. Dies kann ggf. im zBSS mit der lokalen Variablen "seperator" geändert werden. Ich empfehle aber, die Einstellung so zu belassen.

Die Parameter eines Listeneintrags sind folgendermaßen definiert:
  • Beschattungsgerät ist der in der CCU vergebene Klarname des jeweiligen Aktors, also z.B. "DG Schlafzimmer Rollladen Terrassentür".
  • Behanghöhe dürfte selbsterklärend sein und wird in Prozent zwischen 0 und 100 als ganze Zahl angegeben. Statt der Behanghöhe kann hier ebenso der Ausfahrwert einer Markise angegeben werden. Werte > 100 werden auf 100 begrenzt. Bei negativen Werten erfolgt keine Auslösung.
  • Korrekturwert ist ein Wert, der im Falle eines gekippten ("TILT") oder offenen ("OPEN") Fensters bzw. einer gekippten oder offenen Tür berücksichtigt wird. Dieser Wert kann im zBSS über den Parameter "offsetFlag" wahlweise als Offset (relativ zur gesetzten Behanghöhe) oder als Absolutwert (statt der gesetzten Behanghöhe) gesetzt werden. Es können beide Werte mittels des vorangestellten Indikators, z.B. "TILT40" oder "OPEN100", gleichzeitig oder alternativ gesetzt werden. Wichtig ist, dass direkt hinter dem Indikator der Zahlenwert ohne Leerstelle angefügt wird.

    Im Falle relativer Korrekturwerte sind auch Negativwerte möglich, die dann von der Behanghöhe abgezogen werden. Dies macht aber aus meiner Sicht keinen großen Sinn. Achtung: sollte sich für die resultierende Behanghöhe ein negativer Wert ergeben, erfolgt keine Auslösung des Beschattungsgeräts. Werte über 100 % werden auf 100 % begrenzt. Will man also, dass ein Rollladen bei geöffnetem Fenster sicher vollständig geöffnet wird oder bleibt, dann setzt man den Korrekturwert (egal ob relativ oder absolut) einfach auf 100 %.
  • Über die Lamellenstellung lässt sich bei Jalousieaktoren unabhängig von der Behanghöhe eine Stellung der Lamellen mit dem Indikator "SLAT" zwischen 0 ("SLAT0") und 100 % ("SLAT100") einstellen.
  • Neben dem Korrekturwert kann auch eine lokale Bediensperre des entsprechenden Beschattungsgeräts aktiviert und deaktiviert werden. Dazu fügt man einfach den Indikator "LOCK" oder "ULCK" ein. Sofern die Bediensperre geändert wurde, erhält man hierüber automatisch eine Info in der Push-Nachricht (falls diese nicht unterdrückt wurde). Mit "LOCKnnn" bzw. "ULCKnnn" können für HMIP-Aktoren individuelle Sperrwerte zwischen 0 und 100 % für die virtuellen Kanäle 5 und 6 gesetzt werden.
  • Mit "DLAY" ist eine Verzögerung der Auslösung jedes angesprochenen Beschattungsgeräts individuell zwischen 0 und 999 Sekunden möglich. Dies kann besonders sinnvoll sein, wenn es zu Funkübertragungsproblemen bei größeren Beschattungsgerätelisten kommt.

    Die Reihenfolge von "TILT", "OPEN", "LOCK", "ULCK", "SLAT", "DLAY" kann frei gewählt werden. Zur optischen Trennung dürfen beliebig viele Leerzeichen eingefügt werden. Alternativ kann auch vollständig auf Leerzeichen verzichtet werden. Zwingend ist jedoch, dass der Zahlenwert unmittelbar hinter dem vierstelligen Code folgt und zwischen 1 und 3 Stellen aufweist. Bei größeren Zahlenwerten werden die nachfolgenden Stellen ignoriert.
  • Die Auslösebedingung gibt an, bei welchem Verhältnis zwischen Soll- und Ist-Wert der Behanghöhen bzw. Ausfahrwerte ein Beschattungsgerät angesteuert werden soll. Folgende Möglichkeiten stehen zur Verfügung:
    • ne: Soll <> Ist (Standardregel),
    • gt: Soll > Ist,
    • ge: Soll >= Ist,
    • lt: Soll < Ist,
    • le: Soll <= Ist.
    Es kann z.B. sinnvoll sein, einen gewünschten Schließvorgang erst einzuleiten, wenn die gewünschte Behanghöhe (Soll) die tatsächliche Behanghöhe (Ist) unterschritten hat (lt), während beim Öffnungsvorgang die gewünschte Behanghöhe (Soll) die tatsächliche Behanghöhe (Ist) überschritten haben sollte (gt). Andererseits kann man aber auch generell sagen, dass das Beschattungsgerät immer angesteuert werden soll, wenn sich Soll- und Ist-Wert unterscheiden (ne). Stimmt der Sollwert dagegen mit dem Istwert überein, erfolgt in der Regel keine Ansteuerung des Beschattungsgeräts, um den Duty Cycle gering zu halten und die Relais des Aktors zu schonen (Ausnahme: ge, le). Man erhält über die Auslösung eine entsprechende Info per Push-Nachricht (sofern diese nicht unterdrückt wurde).
Einzig die Namen der Beschattungsgeräte sind zwingend. Alle anderen Werte sind optional, wobei zumindest eine Behanghöhe bzw. ein Ausfahrwert angegeben sein muss, wenn man die nachfolgende Systemvariable "CCU SV Beschattung Globalwerte" zum Setzen globaler Werte nicht benutzt.

Will man die Behanghöhe nur in Verbindung mit einer bestimmen Auslösebedingung ändern ohne Einfluss auf den Korrekturwert oder die lokale Bediensperre, so kann man dies z.B. durch eine Leerübergabe "Behanghöhe||Auslösebedingung" erzielen. Von hinten nach vorne kann man einzelne nicht benötigte Parameter einfach weglassen, z.B. "Behanghöhe|Bediensperre".

CCU SV Beschattung Globalwerte

Statt mit der obigen Systemvariablen "CCU SV Beschattung Liste" lokale Werte für jedes einzelne Beschattungsgerät zu übergeben, ist es auch möglich, über die Systemvariable "CCU SV Beschattung Globalwerte" globale Werte zu übergeben, die für sämtliche Beschattungsgeräte gleichermaßen gelten. Die Struktur und Logik der Globalwert entspricht dabei weitestgehend derjenigen der obigen Lokalwerte:

Code: Alles auswählen

Optionsparameter Behanghöhe|Korrekturwert(TILTnnn OPENnnn) Lamellenstellung(SLATnnn)  Bediensperre(LOCKnnn/ULCKnnn)|Auslösebedingung(ne/gt/ge/lt/le)
Sobald die Systemvariable "CCU SV Beschattung Globalwerte" mit einem Wert ungleich "" gefüllt ist, werden sämtliche lokalen Werte der Systemvariablen "CCU SV Beschattung Liste" ignoriert. Man kann also "CCU SV Beschattung Liste" unverändert lassen, wenn man statt den lokalen Werten die globalen Werte von "CCU SV Beschattung Globalwerte" setzt.

Gegenüber den lokalen Parametern in "CCU SV Beschattung Liste" ist es möglich, mit den globalen Optionsparametern einen Testlauf zu starten ("TEST"), die aktuellen Werte in einer Vorliste abzuspeichern ("SAFE") bzw. die Vorliste um neue Werte zu ergänzen ("SFAD") und die gespeicherten Werte wieder zu laden ("LOAD"), das gesamte Beschattungsgerwerk aufzurufen ("TRAD"), Markisenwerte zu invertieren ("INVA") oder auszuschließen ("EXCA") sowie eine Statusübersicht zu erzeugen ("STAT"). Die Reihenfolge und Kombination der Optionsparameter ist beliebig.

Der Optionsparameter "TEST" empfiehlt sich immer, wenn man keine Aktoren auslösen möchte, sondern lediglich den Effekt der vorgenommenen Einstellungen in den Systemvariabeln und/oder per gesendeter Push-Nachricht beobachten möchte.

Mit "SAFE" und "LOAD" wird eine Liste aller aktuellen Beschattungssollwerte in die Systemvariable "CCU SV Beschattung Vorliste" abgespeichert bzw. innerhalb des mittels der lokalen Skriptvariablen "loadPeriod" definierbaren Zeitfensters wieder aus ihr ausgelesen. "SFAD" dient zum Hinzufügen von neuen oder geänderten Werten zu der bereits abgespeicherten Vorliste innerhalb des mittels der lokalen Skriptvariablen "sfadPeriod" definierbaren Zeitfensters. Im Falle von "LOAD" werden etwaige Beschattungswerte der lokalen Variablen "blindsList" und "blindsGlobalValues" ignoriert. Die nachfolgenden Beispiele dürften die Funktionsweise veranschaulichen.

"TRAD" dient zum vereinfachten Aufruf des gesamten unter "blindsTrade" im zBSS gesetzten Gewerks. Dies macht z.B. Sinn in Verbindung mit einem Hüllschutz gegen Einbruch oder einem kompletten Öffnen aller Beschattungsgeräte bei einem detektierten Brand.

Mit "INVA" und "EXCA" kann man bei Bedarf die Behanghöhe einer Markise invertieren (z.B., wenn man lieber 0 % für eine eingefahrene und 100 % für eine ausgefahrene Markise verwendet) oder sie aus der abzuarbeitenden Liste ausschließen. Diese beiden Optionsparameter sind insb. in Verbindung mit "TRAD" sinnvoll, können aber auch unabhängig davon verwendet werden.

Mit "STAT" ist es schließlich möglich, eine Übersicht über das gesamte Beschattungsgewerk inkl. der Verschlusswerte der zugehörigen Fenster und Türen per Push-Nachricht zu erhalten.

Die globalen Parameter Behanghöhe, Korrekturwert, Lamellenstellung, Bediensperre und Auslösebedingung entsprechen den obigen lokalen Parametern und sollen daher nicht erneut erläutert werden. Das Setzen einer globalen Verzögerung ist nicht vorgesehen, da dies auch problemlos im aufrufenden WebUI-Programm realisiert werden kann.

CCU SV Beschattung Nachricht

Mit dieser Systemvarialben können bestimmte Informationen, wie z.B. Auslösewerte, etc. in einer Push-Nachricht ausgegeben werden. Auch ist es möglich, hierüber sämtliche Push-Nachrichten zu unterdrücken. Dazu wird dann "CCU SV Beschattung Nachricht" auf "--" gesetzt. Der Doppelstrich ist bewusst gewählt, um Nachrichten, die einen einfachen Strich enthalten, nicht unbeabsichtigt zu unterdrücken. Wie man "CCU SV Beschattung Nachricht" sinnvoll nutzen kann, werde ich im nachfolgenden Posting anhand einige Beispiele zeigen. Im Falle von "STAT" ist keine Unterdrückung der Push-Nachricht möglich.

CCU SV Beschattung Vorliste

Diese Systemvariable kann nicht manuell gesetzt werden, sondern dient dem zBSS als Speicher für die vorangegangene Beschattungsliste durch Aufruf der globalen Indikatoren "SAFE" und "SFAD", um sie später per "LOAD" wieder aufrufen zu können.

Setzen lokaler Skriptvariablen

Im zBSS sollten auch noch die folgenden lokalen Skriptvariablen definiert werden:

Code: Alles auswählen

! +++++ Charakteristische Bezeichnung der Beschattungsgeräte (ggf. mit nachfolgendem Trennzeichen) +++++
string blindsIndicator = "Rollladen "; 
string anwningsIndicator = "Markise ";

! +++++ Beschattungsgewerk (nur für Statusmeldung relevant) +++++
string blindsTrade = "Beschattung";

! +++++ Korrekturwerte im Falle gekippter oder geöffneter Fenster und Türen +++++
boolean offsetFlag = true; ! true: als Offset bzw. Relativwert, false: als Absolutwert

! +++++ Erlaubtes Zeitfenster zum Laden der zuletzt in svBlindsListPrev gespeicherten Werte +++++
! Hinweis: Nur relevant, wenn "LOAD" in svBlindsGlobalValues gesetzt wird.
integer loadPeriod = 1200; ! Angabe in Sekunden (0: kein Zeitfenster)

! +++++ Zeitfenster, innerhalb dem ein Laden der gespeicherten Werte unterdrückt wird +++++
! Hinweis: Nur relevant, wenn "LOAD" in svBlindsGlobalValues gesetzt wird.
integer exclPeriod = 0; ! Angabe in Sekunden

! +++++ Zeitfenster, innerhalb dem nach dem letzten Speichern neue Werte zu svBlindsListPrev hinzugefügt werden +++++
! Hinweis: Nur relevant, wenn "SFAD" in svBlindsGlobalValues gesetzt wird.
integer sfadPeriod = 0; ! Angabe in Sekunden (0: kein Zeitfenster)

! +++++ Sperr- und Entsperrwert für die lokale Bediensperre von IP-Aktoren ++++
! Achtung: Einfluss ist abhängig von den logischen Verknüpfungen der virtuellen Kanäle 
! Die Werte können durch LOCKnnn bzw. ULCKnnn überschrieben werden 
real lockValueIP = 100.0; ! Als Prozentwert mit einer Dezimalstelle
real ulckValueIP = 0.0; ! Als Prozentwert mit einer Dezimalstelle
blindsIndicator , anwningsIndicator

Mit "blindsIndicator " und "anwningsIndicator " setzt man die charakteristischen Gerätebezeichnungen für die Beschattungsgeräte. Diese Variablen werden benutzt, um die jeweiligen Beschattungsgeräte zu identifizieren und sie von den Fenster- und Tür-Sensoren zu unterscheiden. Wie bereits im Ausgangsposting geschrieben, ist es für das ordnungsgemäße Funktionieren des zBSS erforderlich, dass sich zur Berücksichtigung der Korrekturwert-Werte die Beschattungsnamen nur durch den Ausdruck "blindsIndicator" von den Namen der Fenster- und Türsensoren unterscheiden dürfen also z.B. Fenstersensor: "EG Wohnzimmer Fenster" <-> Rollladen: "EG Wohnzimmer Rollladen Fenster". Ist dies nicht der Fall, werden sämtliche Korrekturwerte ignoriert.

"blindsIndicator" kann man beliebig setzen. Je nach verwendeten Beschattungsgeräten vor den Fenstern z.B. "Rollladen", "Jalousie", "Raffstore", "Rollo" oder dergleichen.

"anwningsIndicator" dürfte in der Regel mit dem Begriff "Markise" gesetzt werden. Aber auch hier kann man natürlich die individuell vergebene, charakteristische Bezeichnung, wie z.B. "Sonnensegel" oder "Schirm" verwenden. Bei dieser Art von Beschattungsgeräten werden keine Fenster- und Türenzustände berücksichtigt. Hat man keine Markise im Einsatz, so lässt man die Variable am besten trotzdem auf "Markise" stehen.

ACHTUNG: Bitte IMMER das Trennzeichen vor oder nach dem Indikatornamen mitverwenden. Benutzt ihr z.B. ein Leerzeichen als Trennzeichen, dann setzt ihr "blindsIndicator" auf "Rollladen " oder " Rollladen", benutzt ihr einen Untestrich, dann auf "Rollladen_" oder "_Rollladen".


blindsTrade

"blindsTrade" definierrt das Beschattungsgewerk, das für die Statusabfrage herangezogen wird. Diese lokale Variable muss nur gesetzt sein, wenn mit "STAT" und/oder "TRAD" gearbeitet werden soll.

offsetFlag

Mittels "offsetFlag" kann man entscheiden, ob die Korrekturwerte bei gekippten ("TILT") bzw. geöffneten ("OPEN") Fenstern und Türen als Relativwerte (offsetFlag = true;) oder als Absolutwerte (offsetFlag = false;) berücksichtigt werden sollen. Was man hier bevorzugt, ist eine individuelle Entscheidung.

loadPeriod

Die lokale Variable "loadPeriod" dient zum Setzen eines Zeitfensters in Sekunden zum Laden der zuletzt in der Systemvariablen "CCU SV Beschattung Vorliste" gespeicherten Werte. Ist das Zeitfenster abgelaufen, erfolgt die Ansteuerung der Beschattungsgeräte mit den in den Systemvariablen "CCU SV Beschattung Liste" bzw. "CCU SV Beschattung Globalwerte" hinterlegten Werten. Durch Setzen von

Code: Alles auswählen

loadPeriod = 0;
werden die in der Systemvariablen "CCU SV Beschattung Vorliste" gespeicherten Werte immer berücksichtigt, sprich, das Zeitfenster ist unendlich lang. Sobald die Vorliste jedoch mit anderen Werten überschrieben wird, werden diese Werte berücksichtigt. Daher empfiehlt es sich, das Zeitfenster zu beschränken. Standardmäßig ist es auf 1200 Sekunden, also 20 Minuten, gesetzt.

exclPeriod

Mittels der lokalen Variablen "exclPeriod" kann ein Zeitwert gesetzt werden, bis zu dem die Ladefunktion außer Kraft gesetzt ist. Ist dieser Wert bei Aufruf des zBSP noch nicht abgelaufen, so erfolgt keine Auslösung der in der Vorliste hinterlegten Beschattungsgeräte. Dies kann sinnvoll sein, wenn man z.B. regelmäßig zeitnah nach dem Schließen der Rollläden die Fenster oder Türen betätigt, aber einerseits nicht möchte, dass sich dabei die Rolllädenpositionen verändern, und andererseits den Automatismus der Ladefunktion nutzen will.

sfadPeriod

Mit "sfadPeriod" ist ein Zeitfenster definierbar, innerhalb dem nach dem letzten Speichern neue oder geänderte Werte zu der Systemvariablen "CCU SV Beschattung Vorliste" hinzugefügt werden können. Durch Setzen von

Code: Alles auswählen

sfadPeriod = 0;
werden die in der Systemvariablen "CCU SV Beschattung Vorliste" gespeicherten Werte immer berücksichtigt.

lockValueIP und ulckValueIP

Diese beiden Variablen definieren den Sperr- und Entsperrwert für die lokale Bediensperre von HMIP-Aktoren. Aber Achtung. Ihr Einfluss ist abhängig von den logischen Verknüpfungen der virtuellen Kanäle des Aktors. Die Werte können zudem durch "LOCKnnn" bzw. "ULCKnnn", wie weiter oben beschrieben, überschrieben werden. Standardmäßig ist "lockValueIP" auf 100.0 und "ulckValueIP" auf 0.0 gesetzt. Dies entspricht einer lokalen Bediensperre bei 100 % mit OR-verknüpften, virtuellen Kanälen. Möchte man dagegen eine Bediensperre bei 0 %, so muss man "lockValueIP" auf 0.0 und "ulckValueIP" auf 100.0 setzen und die virtuellen Kanäle AND-verknüpfen.

Das war's auch schon mit dem Setzen der zBSP-Parameter.

Aufruf des zBSP

Ein Basisbeispiel für das aufrufende Skript ist nachfolgend gezeigt. Es verwendet die Standardnamen der oben erläuterten Systemvariablen für das zBSP und des zPNP.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Stets nach dem Muster 
! "Beschattungsgerät|Behanghöhe|Korrekturwert(TILTnnn OPENnnn) Lamellenstellung(SLATnnn) Bediensperre(LOCKnnn/ULCKnnn) Verzögerung(DLAYnnn)|Auslösebedingung(ne/gt/ge/lt/le)\t
!  Beschattungsgerät|Behanghöhe|Korrekturwert(TILTnnn OPENnnn) Lamellenstellung(SLATnnn) Bediensperre(LOCKnnn/ULCKnnn) Verzögerung(DLAYnnn)|Auslösebedingung(ne/gt/ge/lt/le)"; 
! ausfüllen (einzelne Beschattungsgeräte mit "\t" trennen). 
! "DLAYnnn": Verzögerung zum Auslösen des Beschattungsgeräts in Sekunden (Werte zwischen 0 und 999)
! "TILTnnn": Behanghöhe für gekippte Türen und Fenster in Prozent (Relativ- oder Absolutwerte zwischen 0 und 100)
! "OPENnnn": Behanghöhe für offene Türen und Fenster in Prozent (Relativ- oder Absolutwerte zwischen 0 und 100)
! "SLATnnn": Lamellenstellung für Jalousien in Prozent (Werte zwischen 0 und 100)
! "LOCK(nnn)": lokale Tastensperre aktiviert (für HMIP-Aktoren kann ein Wert zwischen 0 und 100 Prozent gesetzt werden)
! "ULCK(nnn)": lokale Tastensperre deaktiviert (für HMIP-Aktoren kann ein Wert zwischen 0 und 100 Prozent gesetzt werden)
! "ne": Soll <> Ist | "gt": Soll > Ist | "ge": Soll >= Ist | "lt": Soll < Ist | "le": Soll <= Ist
! Beispiel: blindsList = "EG Wohnzimmer Rollladen Fenster|70|OPEN100 LOCK|gt";
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster
! "Optionsparameter Behanghöhe|Korrekturwert(TILTnnn OPENnnn) Lamellenstellung(SLATnnn)  Bediensperre(LOCKnnn/ULCKnnn)|Auslösebedingung(ne/gt/ge/lt/le)";
! ausfüllen.
! Optionsparameter:
! "TEST" -> Testlauf, es erfolgt keine Auslösung der Beschattungsgeräte.
! "SAFE" -> Abspeichern der aktuellen Werte in der mit "svBlindsListPrev" definierten Systemvariablen.
! "SFAD" -> Hinzufügen neuer Werte in die mit "svBlindsListPrev" definierte Systemvariable.
! "LOAD" -> Laden zuvor gespeicherter Werte (Werte in "blindsList" und "blindsGlobalValues" werden ignoriert).
! "TRAD" -> Aufruf des im zBSS mit der lokalen Variablen "blindsTrade" definierten Beschattungsgewerks.
! "INVA" -> Invertierung von Markisenwerten: 100 -> 0, 0 -> 100, 80 -> 20, etc.
! "EXCA" -> Ausschluss von Markisen (insb. bei Verwendung von "TRAD").
! "STAT" -> Status des im zBSS mit der lokalen Variablen "blindsTrade" definierten Beschattungsgewerks.
! Beispiel: blindsGlobalValues = "TEST SAFE 50|TILT20 OPEN100";
string blindsGlobalValues = ""; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
! Beispiel: blindsMessage = "Dies ist ein Test.";  
string blindsMessage = ""; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Nachfolgend möchte ich auf einige Beispiele zum Aufruf des zBSP/zBSS eingehen. Dabei habe ich der bessern Übersichtlichkeit wegen die Kommentare in den jeweiligen aufrufenden Skripten entfernt.
Zuletzt geändert von dtp am 21.06.2020, 10:17, insgesamt 54-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V3.x

Beitrag von dtp » 13.01.2019, 11:37

Erster Funktionstest mit dem globalen Parameter STAT

Zum Testen des zBSP/zBSS führt man am besten nachfolgendes Skript unter "Skript testen" im WebUI aus.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "STAT"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = ""; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Damit sollte eine Push-Nachricht über den Status aller Geräte im Gewerk "Beschattung" (bzw. wie von euch im zBSS unter "blindsTrade" definiert) gesendet werden.
zBSS_STAT.png
Werden die Fenster- und Türsensoren korrekt erkannt, erfolgt eine Anzeige des jeweiligen Schließzustands in grün bei geschlossenen, in blau bei gekippten und in orange bei offenen Fenstern und Türen. Zudem wird der aktuelle Beschattungswert in Prozent angezeigt. Wird kein Sensor erkannt, wie im obigen Beispiel bei der Markise, dann erfolgt die Anzeige des Istwerts in weiß.

Hinweis: farbige Texte können nur von Pushover angezeigt werden. Telegram stellt diese Texte dann in Fettschrift dar.

Beispiele für den Aufruf des zBSP sowie der per Pushover übertragenen Push-Nachrichten

In den nachfolgenden Beispielen wurde die globale Systemvariable "CCU SV Beschattung Globalwerte" über die lokale Varialbe "blindsGlobalValues" immer auf "TEST" gesetzt. Dies verhindert ein Auslösen der betreffenden Beschattungsgeräte und erzeugt nur die entsprechenden Push-Nachrichten. Ihr könnt das euch genauso machen, um die Effekte des zBSP/zBSS zu testen. Dazu führt ihr die entsprechenden, aufrufenden Skripte einfach unter "Skript testen" aus, woraufhin ihr sofort eine Push-Nachricht erhalten solltet.

Beispiel 1: Setzen einzelner Beschattungsgeräte mit individuellen Behanghöhen

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|TILT10 OPEN90|lt\t
                     OG Büro Rollladen Fenster|30|TILT0 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|TILT10 OPEN50|ne\t
                     EG Wohnzimmer Rollladen Terrassentür|20|TILT10 OPEN100|ne\t
                     UG Büro/Gästezimmer Rollladen Fenster|0|TILT10 OPEN90";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 1"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Empfangene Push-Nachricht:
zBSS_Beispiel1.png
Wie man sieht, erfolgte für das zweite Beschattungsgerät "OG Büro Rollladen Fenster" keine Auslösung, weil die gesetzte Auslösebedingung ("lt") hier nicht erfüllt war. Die restlichen Beschattungsgeräte wurden auf die eingestellten Behanghöhen gefahren. Die grüne Schrift deutet an, dass kein Offset berücksichtigt wurde, weil die Fenster und Türen geschlossen waren, während orange ein offenes Fenster bzw. eine offene Tür und blau ein gekipptes Fenster bzw. eine gekippte Tür kennzeichnen. Dies wird aber auch noch im Klartext in der jeweils nachfolgenden Klammer zusammen mit dem ebenfalls in Grün dargestellten Soll-Beschattungswert für das geschlossene Fenster bzw. die geschlossene Tür angezeigt.

Beispiel 2: Setzen globaler Werte für alle Beschattungsgeräte

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|TILT10 OPEN90|lt\t
                     OG Büro Rollladen Fenster|30|TILT0 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|TILT10 OPEN50|ne\t
                     EG Wohnzimmer Rollladen Terrassentür|20|TILT10 OPEN100|ne\t
                     UG Büro/Gästezimmer Rollladen Fenster|0|TILT10 OPEN90";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST40|OPEN30|ne"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 2"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Empfangene Push-Nachricht:
zBSS_Beispiel2.png
Hier wurden alle Beschattungsgeräte mit derselben globalen Behanghöhe "40|OPEN30" angesteuert. Wie man sieht, wurden die lokal gesetzten Korrekturwerte durch die globalen Korrekturwerte ersetzt. Der orange bzw. blau dargestelle Wert besagt, dass das zugehörige Fenster geöffnet bzw. gekippt war. Da allerdings kein TILT-Offset gesetzt war, wurde der Rollladen auf dieselbe Behanghöhe eingestellt, wie bei geschlossenem Fenster.

Beispiel 3: Setzen globaler Werte für alle Beschattungsgeräte des Gewerks "Beschattung" und Abspeichern der Werte in einer Systemvariablen

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST TRAD 30 SAFE|TILT10 OPEN30 INVA"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 3"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Empfangene Push-Nachricht:
zBSS_Beispiel3a.png
Hier wurde das gesamte Gewerk "Beschattung" mit einem einheitlichen globalen Wert von 30 % angesteuert. Wegen des Setzens von "INVA" wurde der Ausfahrwert für die Markise allerdings auf 70 % invertiert. Für die gekippten Fenster und Türen wurde ein Offset von 10 % und für die offenen einer von 30 % addiert. Die weiße Schrift bei der Markise deutet darauf hin, dass hier kein Sensor vorhanden ist.

Durch das Setzen von "SAFE" wurden sämtliche Werte in der Systemvariablen "CCU SV Beschattung Vorliste" gespeichert. Auch dies wird in der Push-Nachricht angezeigt.
zBSP_Systemvariablen_Beispiel3.png
Die gespeicherten Werte können durch das Setzen von "LOAD" dann wieder geladen werden, sofern die in der lokalen Variablen "loadPeriod" des zBSS gesetzte Zeitdauer noch nicht abgelaufen ist.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST LOAD"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 3"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
zBSS_Beispiel3b.png
Wichtig ist, dass auch bei Verwendung von LOAD wieder INVA gesetzt wird, wenn man eine Invertierung der Markisenwerte wünscht. Ansonsten wird, wie in obigem Beispiel gezeigt, keine Invertierung vorgenommen.

Sollte das im zBSS unter "loadPeriod" gesetzte Zeitfenster abgelaufen sein, wird eine entsprechende Nachricht erstellt.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST LOAD5"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 3"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
zBSS_Beispiel3c.png
Im Beispiel wurde das Zeitfenster auf 200 Sekunden gesetzt. Es empfehlen sich aber durchaus größere Werte. Der Standardwert im zBSS beträgt 1200 Sekunden (20 Minuten).

Beispiel 4: Aktivieren und Deaktiveren der lokalen Bediensperre bestimmter Beschattungsgeräte

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "EG Wohnzimmer Rollladen Fenster|50|LOCK|ne\t
                     EG Wohnzimmer Rollladen Terrassentür\t
                     UG Büro/Gästezimmer Rollladen Fenster|10|OPEN40 ULCK";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 4"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
zBSS_Beispiel4.png
Hier wurde für das erste Beschattungsgerät die lokale Bediensperre aktiviert und für das letzte Beschattungsgerät deaktiviert. Da für das zweite Beschattungsgerät keine Korrekturwerte definiert wurden, erfolgte eine Übernahme der Korrekturwerte vom ersten Beschattungsgerät ohne jedoch die lokale Bediensperre zu setzen.

Hinweis: Bei HMIP-Rollladenaktoren kann man mit der LOCK-Funktion auch einen Frostschutz realisieren, indem man bei Unterschreitung bestimmter Temperaturwerte die Rollläden z.B. mit "LOCK5" oder "ULCK5" aufruft. So wird verhindert, dass die Rollläden komplett schließen.

Beispiel 5: Verzögerter Aufruf der Beschattungsgeräte

Mit dem optionalen Parameter "DLAYnnn" kann ein Verzögerungswert für jedes einzelne Beschattungsgerät mit bis zu 999 Sekunden gesetzt werden. Die Push-Nachricht wird jedoch sofort mit Auslösung des zBSS gesendet.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "EG Wohnzimmer Rollladen Fenster|50|LOCK|ne\t
                     EG Wohnzimmer Rollladen Terrassentür|20|DLAY10 TILT30 OPEN50\t
                     UG Büro/Gästezimmer Rollladen Fenster|10|OPEN40 SLAT40 ULCK0 DLAY20";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = ""; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 5"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Im obigen Beispiel 5 wurde der zweite Aktor mit 10 und der dritte Aktor mit 20 Sekunden Verzögerung ausgelöst. Dabei kann die Reihenfolg der Parameter frei gewählt werden.

Und nun wünsche ich viel Spaß beim Ausprobieren meines zBSP und zBSS.

Gruß,

Thorsten
Zuletzt geändert von dtp am 26.09.2020, 13:37, insgesamt 82-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V1.0

Beitrag von dtp » 14.01.2019, 07:25

Tägliches Schließen bestimmter Beschattungsgeräte bei Dunkelheit

Nachfolgend ist der fünfte Programmzweig des im obigen Posting unter Beispiel 5 gezeigten Programms zu sehen. Er dient zum täglichen Schließen aller Markisen bei Dunkelheit.
Haus PRG Beschattung täglich Schließung.png
Neben der Helligkeitsschwelle wird auch noch das Astrozeitmodul abgefragt, um zu vermeiden, dass die Rollläden bei einem Gewitter (da muss es dann aber schon sehr dunkel werden) oder beim künstlichen Abdecken des Helligkeitssensors auslösen. Außerdem erfolgt eine Auslösung nur dann, wenn die Anwesenheitssimulation inaktiv ist.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|70|TILT0 OPEN100|lt\t
                     OG Büro Rollladen Fenster|45|TILT0 OPEN50|lt\t
                     OG Zimmer Lina Rollladen Fenster groß|45|TILT0 OPEN50|lt\t
                     OG Zimmer Jona Rollladen Fenster|45|TILT0 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|TILT10 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Terrassentür|20|TILT10 OPEN100|lt\t
                     EG Küche Rollladen Fenster|45|TILT0 OPEN50|lt\t
                     UG Büro/Gästezimmer Rollladen Fenster|0|TILT40 OPEN90|lt";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "SAFE"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Helligkeit < 70"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Bei der u.g. Push-Nachricht möchte ich noch darauf hinweisen, dass es einen Unterschied bei den Klammerwerten gibt, je nachdem, ob eine Auslösung erfolgte oder nicht. Im Falle einer Auslösung bei geöffnetem oder gekippten Fenster wird in der Klammer der Sollwert für das geschlossene Fenster angezeigt. Erfolgt keine Auslösung, enthält die Klammer den Ist-Wert der Behanghöhe.
Push_Beschattung_Dunkelheit_01.png
Sicheres Auslösen nach Timer-Ablauf

Manchmal kann es vorkommen, dass nicht alle Rollläden ausgelöst wurden (bei mir bisher noch nie der Fall gewesen, aber andere User berichteten von derartigen Fällen, zum Beispiel bei ungünstigen Funk-Situationen oder dergleichen). Um sicherzustellen, dass alle Rollläden auslösen, kann man mit der SAFE- und LOAD-Funktion das zBSP/zBSS einfach nach Ablauf eines Timers erneut aufrufen. Dies soll anhand des obigen Beispiels 6 verdeutlicht werden.

Dazu sollte zunächst ein CUxD-Timer "CCU CUxD Timer Beschattung" angelegt werden. Wie das geht, steht im CUxD-Manual.
CCU CUxD Timer Beschattung.png
Nun kann man mit dem nachfolgenden Programm nach Ablauf des Timers (hier 2 Minuten) einfach das zBSP über die LOAD-Funktion aufrufen, sofern die Werte, wie im obigen Beispiel, zuvor mit der SAFE-Funktion des zBSS in der Vorliste gespeichert wurden.
Haus PRG Beschattung Timer Ablauf.png

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "LOAD"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beschattungstimer abgelaufen."; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Neben dem reinen Timer-Ablauf kann man den Timer auch noch zusätzlich sperren und mit Verzögerung freigeben, was dann durchaus in einigen Situationen das Handling erleichtert.

Die nachfolgende Push-Meldung zeigt, dass kein Beschattungsgerät ausgelöst wurde. Daher war der Aufruf redundant. Aber insbesondere bei sicherheitskritischen Anwendungen kann es durchaus hilfreich sein, die Auslösung wiederholt zu überprüfen und ggf. vorzunehmen.
Push_Beschattung_Dunkelheit_03.PNG
Globales Öffnen bestimmter Beschattungsgeräte zu definierten Zeitpunkten

Das nachfolgende Programm triggert das zBSP/zBSS täglich zu bestimmten Zeitpunkten. Es besteht aus insgesamt sieben Programmzweigen, die zum einen zu unterschiedlichen Zeiten und Tagen ausgeführt werden und zum anderen unterschiedliche Beschattungsgeräte triggern. Zudem werden für bestimmte Beschattungsgeräte Feiertage, Ferien und Urlaube berücksichtigt. Die entsprechendne Informationen erhalte ich aus meinem iCal-Kalender über den ioBroker.
Haus PRG Beschattung täglich öffnen 1.png
Haus PRG Beschattung täglich öffnen 2.png
Haus PRG Beschattung täglich öffnen 3.png
Die aufrufenden Skripte sehen im Wesentlichen in allen Programmzweigen gleich aus und unterscheiden sich lediglich durch die Liste der Beschattungsgeräte, die immer mit dem globalen Paramatersatz "SAFE 100" aufgerufen wird.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "EG Wohnzimmer Rollladen Fenster\t
                     EG Wohnzimmer Rollladen Terrassentür\t
                     UG Büro/Gästezimmer Rollladen Fenster";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "SAFE 100"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "--"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Da in den einzelnen aufrufenden Skripten eine Mitteilung per Push-Nachricht unterdrückt wurde, kann hier auch kein entsprechender Screenshot gezeigt werden.

Wie man erkennen kann, wird zusätzlich in sämtlichen Programmzweigen die Systemvariable "Haus SV Beschattung Hitze" abgefragt. Eine Auslösung erfolgt dabei nur, wenn diese auf inaktiv gesetzt ist. Zur Systemvariable "Haus SV Beschattung Hitze" komme ich im nächsten Posting.

Automatisches Auslösen nach Betätigung eines Verschlusses

Gelegentlich kommt es vor, dass beim automatischen Schließen der Rollläden einzelne Fenster oder Türen einen ungünstigen Verschlusszustand aufweisen. Primär für diesen Fall wurde die SAFE- und LOAD-Funktion in das zBSS implementiert.

Mit dem nachfolgenden Programm "Haus PRG Beschattung Verschlüsse" wird nun bei jeder Betätigung eines Fensters oder einer Tür, die über einen Rollladen verfügt, das Skript zum Laden der zuvor gespeicherten Beschattungsvorliste aufgerufen.
Haus PRG Beschattung Verschlüsse.png

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "LOAD||ne"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Verschluss "#(dom.GetObject(dom.GetObject(dom.GetObject("$src$"))).Channel()).Name()#" betätigt."; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Ein Problem war zunächst, dass durch das Setzen einer ungünstigen Auslöseschwelle ein Hoch- oder Runterfahren der Rollläden infolge eines nachträglich geöffneten oder gekippten Fensters unterdrückt wurde. Daher habe ich mit Version 2.3 die Möglichkeit implementiert, mit dem LOAD-Befehl zusammen eine abweichende Auslöseschwelle über

Code: Alles auswählen

 blindsGlobalValues = "LOAD||ne";
zu definieren. Selbstverständlich kann man bei Bedarf auch jede andere Auslöseschwelle setzen. Allerdings nur global für alle Beschattungsgeräte.

Ein Vorteil der CUxD-Timer ist, dass man nicht nur ihre Dauer definieren kann, sondern sie auch noch aktiv und inaktiv setzen kann. Und genau das wird im obigen Programm "Haus PRG Beschattung täglich" gemacht. So kann ich mir hier eine zusätzliche Systemvariable sparen.

Wie man sehen kann, wurde der Timer mit Aufruf des Programms "Haus PRG Beschattung täglich" auf aktiv und mit einer Verzögerung von 10 Minuten wieder auf inaktiv gesetzt. Betätigt man nun innerhalb dieser Zeit ein Fenster, werden die in der Vorliste gespeicherten Beschattungswerte ausgelesen und automatisch die entsprechenden Rollläden angesteuert. Ansonsten erfolgt keine Auslösung des Programms "Haus PRG Beschattung Verschlüsse". Nachfolgend ist dies für den Rollladen vor der Terrassentür im Wohnzimmer gezeigt.
Push_Beschattung_Dunkelheit_02.png
Zuletzt geändert von dtp am 26.09.2020, 12:13, insgesamt 6-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V3.x

Beitrag von dtp » 24.01.2019, 08:29

Beschattung bei Hitze

Programm und Skripte

Hier noch ein Beispiel zum vorsorglichen Schließen der Rollläden und Ausfahren der Markise bei zu erwartender Hitze.
Haus PRG Beschattung Hitze.png
Wie man sehen kann, ist die Auslösung der Beschattungsgeräte lediglich von der Systemvariablen "Haus SV Beschattung Hitze" abhängig. Nur, wenn sich diese auf "aktiv" ändert, wird das nachfolgende Skript ausgeführt.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Terrasse Markise Schlafzimmer|100|gt\t
                     DG Schlafzimmer Rollladen Terrassentür|26|TILT20 OPEN100|lt\t
                     OG Gästezimmer Rollladen Fenster|16|TILT20 OPEN50|lt\t
                     OG Zimmer Lina Rollladen Fenster groß|15|TILT20 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|15|TILT20 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Terrassentür|23|TILT20 OPEN100|lt\t
                     UG Büro Rollladen Fenster|60|OPEN100|lt";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "SAFE"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "<font color=orange>Hitzerisiko mit "#dom.GetObject(ID_SYSTEM_VARIABLES).Get("Haus SV Höchsttemperatur Tag").Value().ToString(1)#" °C Tageshöchsttemperatur!</font>"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Damit werden sämtliche Rollläden auf der Südseite des Hauses derart geschlossen, dass die Zwischenräume zwischen den Lamellen noch offen bleiben, um ein wenig Licht in die entsprechenden Räume zu lassen. Ist ein zugehöriges Fenster gekippt, werden die Rollläden um 20 % weniger geschlossen, damit ein besserer Luftaustausch gewährleistet ist. Bei geöffnetem Fenster, werden die Rollläden lediglich mit einm Offset von 50 % herunter gefahren. Die Rolllöäden vor den Terrassentüren bleiben oben, so dass man noch problemlos ein- und austreten kann. Eine Auslösung der Rollläden erfolgt nur, wenn der Soll-Wert unterhalb des Ist-Wertes liegt (lt), um zu vermeiden, dass Rollläden die zuvor manuell weiter geschlossen wurden, wieder hoch gefahren werden. Schließlich wird noch die Markise der Dachterrasse auf 100 % ausgefahren, wenn sie nicht bereits voll ausgefahren war. Hier wird natürlich statt "lt" die Auslösebedingung "gt" gesetzt, da der Sollwert nun größer, als der Istwert sein muss, damit die Markise betätigt wird.
PushNachricht_Hitzerisiko.PNG
Mit dem globalen Parameter "SAFE" werden sämtliche Sollwerte gespeichert, um sie ggf. mit "LOAD" (z.B. beim späteren Schließen, Kippen oder Öffnen der Fenster und Türen) wieder aufrufen zu können. Dazu später mehr.

Ändert die Systemvariable "Haus SV Beschattung Hitze" ihren Zustand auf inaktiv, werden die Rollläden wieder geöffnet und die Markise eingefahren. Da der Aufruf mit einem globalen Beschattungswert von 100 erfolgen kann, muss der Markisenwert entsprechend mit "INVA" zu 0 invertiert werden.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Terrasse Markise Schlafzimmer\t
                     DG Schlafzimmer Rollladen Terrassentür\t
                     OG Gästezimmer Rollladen Fenster\t
                     OG Zimmer Lina Rollladen Fenster groß\t
                     EG Wohnzimmer Rollladen Fenster\t
                     EG Wohnzimmer Rollladen Terrassentür\t
                     UG Büro Rollladen Fenster";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "SAFE 100|INVA"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "<font color=royalblue>Hitzerisiko beendet ("#dom.GetObject("$src$")#")</font>"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Die Systemvariablen "Haus SV Beschattung Hitze" und "Haus SV Höchsttemperatur Tag"

Die Systemvariable "Haus SV Beschattung Hitze" wird mit dem nachfolgenden Programm "Haus PRG SV Beschattung Hitze" auf aktiv oder inaktiv gesetzt.
Haus PRG SV Beschattung Hitze.png
Aktiv ist sie nur dann, wenn die Vorhersage für die Tageshöchsttemperatur mindestens 28°C beträgt, wenn die Ist-Temperatur 25°C übersteigt und die Helligkeit mindestens 226 dig beträgt.

Da die beiden letztgenannten Parameter zu einer Auslösung bei Änderung führen, genügt es, wenn sich einer der beiden Werte entsprechend der Bedingung ändert und der jeweils andere die Bedingung erfüllt. Sprich, das Programm löst aus, wenn für den Tag mindestens 28°C vorhergesagt sind und wenn sich bei einer Helligkeit von mindesten 226 dig die Ist-Temperatur auf über 25°C ändert oder wenn bei einer Ist-Temperatur von über 25°C die Helligkeit 225 dig übersteigt.

Die Systemvariable "Haus SV Beschattung Hitze" wird mit 10 Minuten Verzögerung wieder auf inaktiv gesetzt, wenn die Helligkeit einen Wert von 217 dig unterschreitet. Das nachfolgende Diagramm sollte die Zusammenhänge für die unterschiedlichen Fälle ganz gut verdeutlichen. Die roten Pfeile kennzeichnen das Umschalten auf "Haus SV Beschattung Hitze" aktiv (1), die blauen auf "Haus SV Beschattung Hitze" inaktiv (0). Bisher haben sich diese als sehr praktikabel für uns erwiesen.
Beschattung Hitze.png
Neben der Systemvariablen "Haus SV Beschattung Hitze" gibt es noch die Systemvariable "Haus SV Höchsttemperatur Tag", die den Wert für die vorhergesagte Tageshöchsttemperatur enthält.
Systemvariablen_Beschattung.png
"Haus SV Höchsttemperatur Tag" erhält seinen Wert über den ioBroker. Dort lese ich per Javaskript den entsprechenden Wert des ioBroker-Adapters "DasWetter.com" aus und schreibe ihn um 04:00 Uhr morgens in die Systemvariable der CCU.
daswetter_Tageshöchst.png

Code: Alles auswählen

var tempDayHigh;

schedule('00 00 04 * * *', function(){
  tempDayHigh = getState("daswetter.0.NextDays.Location_1.Day_1.Maximale_Temperatur_value").val;
  setState("hm-rega.0.3298", tempDayHigh);
});
Nachträgliche Betätigung von Fenstern oder Türen

Auch hier wurde, wie bereits im letzten Beispiel-Posting erläutert, der Timer mit Aufruf des Programms "Haus PRG Beschattung Hitze" auf aktiv und mit einer Verzögerung von 10 Minuten wieder auf inaktiv gesetzt. Die nachfolgende Push-Nachricht zeigt dies für den Rollladen im Büro.
PushNachricht_VerchlussHitze.PNG
Gruß,

Thorsten
Zuletzt geändert von dtp am 24.06.2020, 07:27, insgesamt 16-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V3.x

Beitrag von dtp » 24.01.2019, 12:51

Fehler- und Warnmeldungen des zBSS

Um dem User möglichst viel Unterstützung bei fehlerhaften Eingaben zu liefern, habe ich einige Fehler- und Warnmeldungen in das zBSS integriert, die dann per Push-Nachricht übertragen werden.

Ungültige Auslösebedingung

Sollte man sich einmal versehentlich bei der Auslösebedingung verschrieben haben, dann sieht die Push-Nachricht folgendermaßen aus.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|TILT10 OPEN90|lt\t
                     OG Büro Rollladen Fenster|30|TILT0 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|TILT10 OPEN50|no\t
                     EG Wohnzimmer Rollladen Terrassentür|20|TILT10 OPEN100|ne\t
                     UG Büro/Gästezimmer Rollladen Fenster|0|TILT10 OPEN90";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = ""; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Push_FehlerAuslösebedingung.PNG
Hier hat das Skript die Eingabe "no" als fehlerhaft erkannt.

Nicht existierender Gerätename

Auch können leicht mal Fehler bei der Eingabe der Gerätenamen passieren.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|TILT10 OPEN90|lt\t
                     OG Büro Rolladen Fenster|30|TILT0 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|TILT10 OPEN50|ne\t
                     EG Wohnzimmer Rolllaten Terrassentür|20|TILT10 OPEN100|ne\t
                     UG Büro/Gästezimmer Rollladen Fenster|0|TILT10 OPEN90";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = ""; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Push_FehlerGerätename.PNG
Da es weder einen Rolladen (mit zwei "l") noch einen Rolllaten (mit einem "t") bei mir gibt, wird mir das entsprechend angezeigt.

Unzulässige Werte

Das zBSS sorgt zwar dafür, dass Behanghöhen und Ausfahrwerte größer 100 automatisch auf 100 beschränkt werden, doch es lässt auch negative Werte zu. Ergibt sich dann ein Wert < 0, so wird dies als ungültig ausgegeben. Ebenso werden Werte mit unzulässigen Zeichen (z.B. Buchstaben) als unzulässig identifieriert und angezeigt.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|TILT10 OPEN90|lt\t
                     OG Büro Rollladen Fenster|30|TILT0 OPEN50|lt\t
                     EG Wohnzimmer Rollladen Fenster|-20|TILT10 OPEN50|ne\t
                     EG Wohnzimmer Rollladen Terrassentür|20|TILT10 OPEN100|ne\t
                     UG Büro/Gästezimmer Rollladen Fenster|0|TILT10 OPEN90";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = ""; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Push_FehlerWerte.PNG
Keine Beschattungsgeräte definiert

Es kann vorkommen, dass man auch mal gar kein Beschattungsgerät definiert hat (z.B., wenn eine leere Vorliste geladen wird). Auch dies fängt das zBSS ab.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = ""; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Push_FehlerGeräte.PNG
Lokale Bediensperre wird nicht unterstützt

Einige Beschattungsgeräte insbesondere der HMIP-Serie unterstützen keine lokale Bediensperre. Dies wird dann als Warnmeldung ausgegeben.

Code: Alles auswählen

! Beschattungsgeräte steuern durch Aufruf des zBSP

! +++++ Liste der Beschattungsgeräte, Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
string blindsList = "EG Wohnzimmer Rollladen Fenster|50|LOCK|ne\t
                     EG Wohnzimmer Rollladen Terrassentür\t
                     UG Büro/Gästezimmer Rollladen Fenster|10|OPEN40 ULCK";

! +++++ Globale Werte für Behanghöhe bzw. Ausfahrwert, Korrekturwert, Bediensperre und Auslösebedingung +++++
string blindsGlobalValues = "TEST"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

! +++++ Zusatzinformation, die als Push-Nachricht versendet werden soll +++++ 
string blindsMessage = "Beispiel 4"; ! "--" zur Unterdrückung von Push-Nachrichten

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zBSS +++++
string svBlindsList = "CCU SV Beschattung Liste"; ! Liste der Beschattungsgeräte, obligatorisch
string svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für Behanghöhen, Ausfahrwerte und Offsets, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional

! +++++ Name des zentralen Programms zur Beschattungssteuerung zBSP +++++
string zBSP = "CCU PRG Beschattung";

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsList)).State(blindsList);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsGlobalValues)).State(blindsGlobalValues);
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svBlindsMessage)).State(blindsMessage);

! +++++ zBSP ausführen +++++
(dom.GetObject(ID_PROGRAMS).Get(zBSP)).ProgramExecute();
Push_Bediensperre.png
Zeitfenster bei Verwendung der LOAD-Funktion abgelaufen.

Auf den Ablauf des Zeitfensters in Verbindung mit der LOAD-Funktion wurde bereits in Beispiel 3 eingegangen. Hier daher nur noch mal der Vollständigkeit halber.
zBSS_Beispiel3c.PNG
Wie erwähnt, ist das Zeitfenster standardmäßig auf 1000 Sekunden eingestellt. Die in der obigen Push-Nachricht angezeigten 100 Sekunden dienen eher der Veranschaulichung. Das Zeitfenster wird im zBSS über die lokale Variable "loadPeriod" gesetzt. Es gilt damit für alle Aufrufe des zBSS.
Zuletzt geändert von dtp am 26.09.2020, 12:14, insgesamt 4-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V3.x

Beitrag von dtp » 26.01.2019, 14:16

Platzhalter
Zuletzt geändert von dtp am 24.06.2020, 07:32, insgesamt 25-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 9038
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 95 Mal
Danksagung erhalten: 247 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V3.x

Beitrag von dtp » 15.03.2019, 17:55

Platzhalter
Zuletzt geändert von dtp am 24.06.2020, 07:32, insgesamt 22-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

MartinBr
Beiträge: 335
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Danksagung erhalten: 7 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V1.2

Beitrag von MartinBr » 16.03.2019, 18:14

Hallo Torsten,

ich beschäftige mich gerade mit deinem Beschattungsscript. Ich habe dazu eine grundlegende Frage, da ich mir mein System nicht zerschiessen möchte.

Ich betreibe eine CCU mit 11 FTKs und 10 Rollläden (Haustür ohne Rollo). Namensgebung: FTK Wohnzimmer Sued etc.
Die Rollläden heissen dann Rolllade-Kueche, Rollladen-Wohnzimmer-Sued etc.

Um dein Script einsetzen zu können, müssen diese Geräte eine einheitliche Namensgebung bekommen.

Also: Wohnzimmer-Sued Fenster. Das entsprechende Rollo damit Wohnzimmer-Sued Fenster Rollladen.

Ist das so richtig?

Kann ich nun die Geräte in der Homematic einfach umbenennen? Natürlich dann auch alle Kanäle. Wie sieht das mit den bestehenden Programmen aus? Übernehmen die den neuen Namen?

Gruß
Martin
RaspberryMatic-3.49.17 auf TinkerBoard S, CUxD 2.34, XML-1.20, ioBroker unter Debian 10, Alexa mit ioBroker unter Proxmox, VitoComfort 200

Xel66
Beiträge: 7764
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 37 Mal
Danksagung erhalten: 318 Mal

Re: Howto - zentrale Beschattungssteuerung (zBSP) V1.2

Beitrag von Xel66 » 16.03.2019, 18:20

MartinBr hat geschrieben:
16.03.2019, 18:14
Kann ich nun die Geräte in der Homematic einfach umbenennen?
Ja, kannst Du
MartinBr hat geschrieben:
16.03.2019, 18:14
...bestehenden Programmen aus? Übernehmen die den neuen Namen
Die CCU arbeitet intern mit numerischen IDs. Nur für die Anzeige wird diesen IDs der vom Anwender vergebene Name dargestellt. Bei Scripts, die sich auf Namen beziehen, sieht das anders aus. Hier muss der Anwender selbst Hand anlegen. Das ist auch der Grund, warum Du diese anpassen musst.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 141 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
274 Programme, 265 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.51.6.20200420
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“