Howto - zentrale Beschattungssteuerung (zBSP) V1.2

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

Moderator: Co-Administratoren

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Howto - zentrale Beschattungssteuerung (zBSP) V1.2

Beitrag von dtp » 13.01.2019, 11:34

Einleitung

Motivation

Nachdem ich irgendwie immer mehr genervt war von den 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.
  • Gleichzeitiges Ansprechen von z.B. Rollläden und Markisen.
  • Optionale Berücksichtigung gekippter und geöffneter Fenster und Türen mit individuellen Korrekturwerten (relativ oder absolut).
  • 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.
  • Möglichkeit von Testläufen ohne Ansteuerung der Beschattungsgeräte im Life-Betrieb.
  • Optionale Definition unterschiedlicher Auslöseschwellen beim Soll-Ist-Vergleich.
  • Optionale Definition globaler Werte für alle angesteuerten Beschattungsgeräte.
  • Möglichkeit zum einfachen Ansprechen vollständiger Gewerke.
  • Absolute Unabhängigkeit von IDs 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.
  • 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 sollten 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" aufweisen. Dieser Namenszusatz kann im nachfolgenden zentralen Beschattungssteuerungsskript zBSS frei definiert werden. Sämtliche Fenster- bzw. Tür-Sensoren und Beschattungsaktoren sollten dieser Nomenklatur folgen. Ansonsten kann das zBSS die Fenster- und Türzustände nicht automatisch berücksichtigen.

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

Auf der CCU muss CUxD installiert und das Gerät "CUxD.CUX2801001:1.CMD_EXEC" eingerichtet sein. Hier eine Kurzanleitung zur Einrichtung des CUxD-Geräts:
  1. Unter CUxD-Gerätetyp das Gerät "(28) System-Exec" auswählen und den Rest am besten unverändert lassen (Seriennummer: 1, etc.).
  2. Anschließend auf "Gerät auf CCU erzeugen!" klicken.
  3. Danach in WebUI in den Posteingang für neue Geräte gehen und den neuen Gerätetyp bestätigen.
  4. Zur Sicherheit CCU neu booten.
Weitere Informationen zum Thema findet ihr an dieser Stelle. Wer mag, kann dem Gerätetyp unter Geräte auch noch einen neuen Namen geben. Bei mir heißt er z.B. "CCU CUxD Exec" bzw. der entsprechende Kanal 1 "CCU CUxD Exec 1". Das ist aber nicht notwendig. Man kann den Eintrag auch unverändert lassen, da der Aufruf stets mit dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC") erfolgt, also unabhängig vom vergebenen WebUI-Namen ist.

Weiterhin solltet ihr für die Benachrichtung per Push-Nachricht das zPNP installiert haben. 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 wird noch der Status der CCU im zugehörigen Wenn-Zweig abgefragt, um zu vermeiden, dass das zBSP unmittelbar nach einem Neustart der CCU ausgeführt wird.
zBSP.png
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 svBlindsGlobalValues = "CCU SV Beschattung Globalwerte"; ! Globale Werte für die Behanghöhen und Ausfahrwerte sowie die Auslösebedingung, optional
string svBlindsMessage = "CCU SV Beschattung Nachricht"; ! Beschattung Nachricht, optional 
Wie man sieht, ist im Wesentlichen nur eine einzige Systemvariable erforderlich. Die beiden 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.

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 automatische ignoriert. Zudem erlaubt diese Systemvariable das Starten eines Testlaufs, ohne dass die angesprochenen Beschattungsgeräte ausgelöst werden. Auch hierzu im nächsten Posting mehr.

Die dritte 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öster Beschattungsgeräte samt der zugehörigen Behanghöhen 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.
zBSP_Systemvariablen.png
Ganz wichtig ist, dass für svBlindsList, 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_Systemvariablen.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:

Code: Alles auswählen

! +++++ Charakteristische Bezeichnung der Beschattungsgeräte +++++
string closureBlinds = "Rollladen"; 
string closureAwnings = "Markise";

! +++++ Ausfahrwert für Markisen invertieren (true: ja, false: nein) +++++
boolean invertAwnings = true;

! +++++ Korrekturwerte im Falle gekippter oder geöffneter Fenster und Türen (true: Offset, false: Absolut) +++++
boolean offsetFlag = true;
sowie die Systemvariablennamen und der Programmname des zPNP.

Code: Alles auswählen

! +++++ 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
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.
zBSS123.txt
(13.02 KiB) 1-mal heruntergeladen
Testen des zBSP bzw. zBSS

Möchte man die Funktion des zBSP bzw. zBSS nur testen, ohne ein Beschattungsgerät auszulösen (das kann sowohl für die Aktoren, als auch für den Familienfrieden sehr wertvoll sein), dann kann man dies über die Systemvariable "CCU SV Beschattung Globalwerte" tun. Hierzu wird ihr einfach der string "test" übergeben. Somit werden unter Berücksichtigung der Schließzustände von Fenstern und Türen sämtliche Werte berechnet und nur die entsprechenden Push-Nachrichten gesendet. Mehr dazu im nachfolgenden Posting.

Anschließend möchte ich auf den Aufruf des zBSP und des zBSS eingehen.

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".
Zuletzt geändert von dtp am 22.03.2019, 09:02, insgesamt 27-mal geändert.

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

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

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(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)
Die Trennung der einzelnen Listeneinträge erfolgt per Tabulator "\t". Innerhalb eines Listeneintrags werden die einzelnen Parameter durch ein "|" getrennt. Dies kann auf Wunsch im zBSS mit der lokalen Variablen "seperator" geändert werden. Ich empfehle aber, die Einstellung so zu belassen.

Die vier 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 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 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 "open90" gesetzt werden. Wichtig ist, dass direkt hinter dem Indikator der Zahlenwert ohne Leerstelle angefügt wird. Wird kein Indikator vorangestellt, wird der Korrekturwert immer als open interpretiert. Im Falle von gekippten Fenstern und Türen wird dann kein Korrekturwert berücksichtigt. Bei reinen Tür/Fensterkontakten kann der Indikator weggelassen werden. 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 den Korrekturwert lässt sich auch eine lokale Bediensperre des entsprechenden Beschattungsgeräts aktivieren und deaktivieren. Dazu fügt man einfach an beliebiger Stelle den Indikator "lock" oder "unlock" ein. Sofern die Bediensperre geändert wurde, erhält man hierüber automatisch eine Info in der Push-Nachricht (sofern diese nicht unterdrückt wurde).
  • 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 einzleiten, wenn die gewünschte Behanghöhe (Soll) die tatsächliche Behanghöhe (Ist) unterchritten 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 sollte, wenn man die nachfolgende Systemvariable "CCU SV Beschattung Globalwerte" zum Setzen globaler Werte nicht benutzt.

Wird für einen Listeneintrag, der dem ersten Listeneintrag folgt, kein weiterer Parameter übergeben, so wird der Parameter des vorhergehenden Listeneintrags übernommen. Eine Ausnahme ist die Auslösebedingung, die ohne lokale Definition für einen Listeneintrag immer auf "ne" gesetzt wird.

Die drei durch die Separatoren getrennten Parameter "Behanghöhe|Korrekturwert Bediensperre|Auslösebedingung" bauen aufeinander auf. Will man einen der nachfolgenden Parameter setzen, so muss immer der vorhergehende mit gesetzt werden. Sprich, um eine bestimmte Auslösebindung einzustellen, muss man auch die Behanghöhe und den Korrekturwert übergeben. Man kann also nur einzelne Parameter von hinten nach vorne weglassen.

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

Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)
Sobald die Systemvariable "CCU SV Beschattung Globalwerte" mit einem Wert ungleich "" gefüllt ist, werden die lokalen Werte der Systemvariablen "CCU SV Beschattung Liste" ignoriert. Man kann also "CCU SV Beschattung Liste" unverändert lassen, wenn man statt der lokalen Werte die globalen Werte von "CCU SV Beschattung Globalwerte" verwenden möchte.

Es ist aber auch möglich, den Inhalt von "CCU SV Beschattung Liste" bei der Verwendung globaler Werte auf die reinen Namen der Beschattungsgeräte zu beschränken. Dies ermöglicht dann die einfache Abarbeitung eines gesamten Gewerks mit

Code: Alles auswählen

string blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
Hierzu mehr bei den Beispielen im nachfolgenden Posting.

Gegenüber den lokalen Parametern in "CCU SV Beschattung Liste" gibt es zwei signifikante Unterschiede. Zum Einen lassen sich über die Systemvariable "CCU SV Beschattung Globalwerte" keine Bediensperren verändern. Dies geht nur lokal. Zum Anderen ist es möglich einen Testlauf zu starten. Hierzu wird einfach der Parameter Behanghöhe um den string "test" ergänzt. Dies kann unmittelbar vor oder nach dem Zahlenwert oder ganz ohne Zahlenwert erfolgen. Die nachfolgenden Beispiele dürften die Funktionsweise veranschaulichen.

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.

Setzen lokaler Skriptvariablen

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

Code: Alles auswählen

! +++++ Charakteristische Bezeichnung der Beschattungsgeräte +++++
string closureBlinds = "Rollladen"; 
string closureAwnings = "Markise";

! +++++ Ausfahrwert für Markisen invertieren (true: ja, false: nein) +++++
boolean invertAwnings = true;

! +++++ Offsetwerte oder Absolutwerte im Falle gekippter oder geöffneter Fenster und Türen (true: Offset, false: Absolut) +++++
boolean offsetFlag = false;
closureBlinds, closureAwnings

Mit "closureBlinds" und "closureAwnings" 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 "closureBlinds" von den Namen der Fenster und Türen unterscheiden dürfen also z.B. Fenstername: "EG Wohnzimmer Fenster" <-> Rollladenname: "EG Wohnzimmer Rollladen Fenster". Ist dies nicht der Fall, werden sämtliche Korrekturwert-Werte ignoriert.

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

"closureAwnings" 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.

invertAwnings

"invertAwnings" dient zum Invertieren der Ansteuerwerte für Markisen. Sprich, aus 100 wird 0, aus 80 wird 20, etc. Dies kann sinnvoll sein, wenn man mit globalen Werten arbeitet und/oder die Ausfahrwerte im Markisenaktor anders definiert hat. Bei mir ist das z.B. der Fall, da es für mich deutlich logischer ist, wenn die Markise bei 0 % eingefahren und bei 100 % ausgefahren ist.

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.

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

Aufruf des zBSP

Ein Basisbeispiel für ein aufrufendes Skript ist nachfolgend gezeigt. Es verwendet die Standardnamen der oben erläuterten Systemvarialben 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(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = ""; !"" 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. zeBeS +++++
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();
Zuletzt geändert von dtp am 24.01.2019, 08:20, insgesamt 15-mal geändert.

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

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

Beitrag von dtp » 13.01.2019, 11:37

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

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 +++++
! Stets nach dem Muster "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|tilt10open90|lt\t
                     OG Gästezimmer Rollladen Fenster|30|tilt0open50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|tilt10open50|ne\t
                     EG Wohnzimmer Rollladen Terrassentür|20|tilt10open100|ne\t
                     UG Büro Rollladen Fenster|0|tilt10open90";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = "test"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

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

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zeBeS +++++
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:
zBSP_Pushover_01.PNG
Wie man sieht, erfolgte für die letzten drei Beschattungsgeräte keine Auslösung, weil die gesetzten Auslösebedingungen hier nicht erfüllt waren. Die anderen beiden Beschattungsgeräte wurden auf die eingestellten Behanghöhen gefahren. Die grüne Schrift deutet an, dass kein Offset berücksichtigt wurde, weil sämtliche Fenster und Türen geschlossen waren.

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 +++++
! Stets nach dem Muster "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|0|tilt10open90|lt\t
                     OG Gästezimmer Rollladen Fenster|30|tilt0open50|lt\t
                     EG Wohnzimmer Rollladen Fenster|20|tilt10open50|ne\t
                     EG Wohnzimmer Rollladen Terrassentür|20|tilt10open100|ne\t
                     UG Büro Rollladen Fenster|0|tilt10open90";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = "test40|0|ne"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

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

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zeBeS +++++
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:
zBSP_Pushover_02.PNG
Hier wurden alle Beschattungsgeräte mit derselben Behanghöhe angesteuert. Der blau markierte Wert für das letzte Beschattungsgerät besagt, dass das zugehörige Fenster gekippt war. Allerdings hatte dies keinen Einfluss, weil der globale Offset auf 0 gesetzt war. Wie man sieht, wurden die lokal gesetzten Korrekturwerte durch die globalen Korrekturwerte ersetzt.

Beispiel 3

Setzen globaler Werte für alle Beschattungsgeräte des Gewerks "Beschattung".

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(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = "test20|tilt30"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

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

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zeBeS +++++
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:
zBSP_Pushover_03.PNG
Hier wurde das gesamte Gewerk "Beschattung" mit einem einheitlichen globalen Wert von 20 % angesteuert. Wegen des Setzens der lokalen Skriptvariablen "invertAwnings" auf "true" wurde der Ausfahrwert für die Markise auf 80 % invertiert. Da das Fenster im Büro auf Kippstellung war, wurde ein der globale Offset-Wert von 30 % zu den 20 % Behanghöhe addiert. Für die beiden Rollläden im Wohnzimmer erfolgte keine Auslösung, da diese bereits auf 20 % eingestellt waren.

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 +++++
! Stets nach dem Muster "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "EG Wohnzimmer Rollladen Fenster|50|lock|ne\t
                     EG Wohnzimmer Rollladen Terrassentür\t
                     UG Büro Rollladen Fenster|10|open40unlock";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = "test"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

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

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zeBeS +++++
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();
zBSP_Pushover_04.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. Für das dritte Beschattungsgerät wird der Wert in Orange angzeigt, weil das zugehörige Fenster geöffnet war. Somit wurde zu der Behanghöhe von 10 % der Offsetwert von 40 % addiert.

Beispiel 5

Globales Schließen bestimmter Beschattungsgeräte.
Haus PRG Beschattung Sließung.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 +++++
! Stets nach dem Muster "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "DG Schlafzimmer Rollladen Terrassentür|70|tilt0 open100|lt\t
                     OG Gästezimmer 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 Rollladen Fenster|0|tilt40 open90|lt";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = ""; !"" 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. zeBeS +++++
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();
zBPS_Pushover_05.PNG
Das obige Programm zeigt ein Beispiel zum Schließen einzelner Beschattungsgeräte bei Eintritt der Dunkelheit oder bei Hitze. Um 17:44 wurde der eingestellte Schwellwert von 70 durch den entsprechenden Sensor unterschritten. Für den Rollladen in einem Zimmer gab es keine Auslösung, weil dieser die lokale Bedingung 45|lt nicht erfüllte; sprich, der Rollladen hatte zum Auslösezeitpunkt bereits auf eine Behanghöhe von weniger als 45 %.

Beispiel 6

Globales Öffnen bestimmter Beschattungsgeräte zu definierten Zeitpunkten.
Haus PRG Beschattung Öffnung.png
Mit den beiden ersten Zweigen des obigen Programms werden drei Rollläden unter der Woche um 06:20 Uhr und ein weiterer um 07:00 Uhr geöffnet. Über den dritten Zweig erfolgt ein Öffnen der vier Rollläden am Wochenendtagen jeweils um 07:30 Uhr.

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(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "EG Wohnzimmer Rollladen Fenster\t
                     EG Wohnzimmer Rollladen Terrassentür\t
                     UG Büro Rollladen Fenster";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = "100|0|gt"; !"" 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. zeBeS +++++
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();
zBSP_Pushover_06.png
Und nun wünsche ich viel Spaß beim Ausprobieren meines zBSP und zBSS.

Gruß,

Thorsten
Zuletzt geändert von dtp am 26.01.2019, 10:39, insgesamt 16-mal geändert.

Saschag
Beiträge: 48
Registriert: 23.03.2015, 22:45

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

Beitrag von Saschag » 13.01.2019, 20:45

Hallo Thorsten,

tolle Arbeit!!! Danke. :!:
Nutze auch schon dein zPNP mit Begeisterung! Und glaub auch das dies nutzen werde :wink:

Die „Erkennung“ der TFK habe ich noch nicht ganz durchschaut, wie werden die Sensoren ausgelesen bzw. erkannt.

bei mir gibts folgende Beispiel:

- Rolladen Terrasentür und TFK Terrasentür
- Rolladen Esszimmer und TFK Esszimmer

Dass ich bei def. ein l weg nehmen muss „Rolladen“ statt „Rollladen“ habe ich gesehen.

Danke schon mal

Grüße
Sascha

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

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

Beitrag von dtp » 14.01.2019, 07:25

Saschag hat geschrieben:
13.01.2019, 20:45
Die „Erkennung“ der TFK habe ich noch nicht ganz durchschaut, wie werden die Sensoren ausgelesen bzw. erkannt.
Hallo Sascha,

die TFKs werden anhand ihres Names erkannt, ebenso wie die Rollladenaktoren. Dabei gehe ich von folgender Logik aus:

Nehmen wir an, es geht um ein Fenster im Gästezimmer, dann dürfte der TFK die Bezeichnung "Gästezimmer Fenster 1" oder dergleichen tragen. Der zugehörige Rollladen sollte dann "Gästerzimmer Rollladen Fenster 1" oder "Gästezimmer Fenster 1 Rollladen" heißen. Das Skript kennt ja den Namen des Rollladen, weil man ihm diesen per Systemvariablen "CCU SV Beschattung Liste" übergeben hat. Nun löscht es automatisch aus "Gastezimmer Rollladen Fenster 1" oder "Gästezimmer Fenster 1 Rollladen" den mit der lokalen Skriptvariablen "closureBlinds" definierten Begriff "Rollladen" und geht davon aus, dass der TFK eben "Gästezimmer Fenster 1" heißt.

Blöd ist, wenn man dem TFK einen Namen, wie z.B. "Fenstersensor 1" gegeben hat. Dann funktioniert das obige Prinzip nicht. Aber warum sollte man den Sensor so nennen, wenn es doch um die Zustände des zugehörigen Fensters geht? ;)

Mir ist natürlich klar, dass das zBSS nicht für viel User interessant sein wird, aber bevor ich es für mich behalte... 8)

Und mich hat es einfach mit der Zeit genervt, wenn ich mal wieder einen Rollladenaktor dazu bekommen habe, und dann die mühevoll erstellte Reihenfolge des entsprechenden Rollladenprogramms dahin war, weil man ja im WebUI keine neuen Geräte an einer beliebigen Stelle einfügen kann. Außerdem hatte ich an mancher Stelle ein wenig die Übersicht verloren, wann denn nun welcher Rollladen auf wieviel Prozent gefahren wurde. Vor allen Dingen, weil ich sie für gekippte und geöffnete Fenster abweichend anfahren wollte.

Gruß,

Thorsten

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

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

Beitrag von dtp » 24.01.2019, 08:29

Auch, wenn das zBSP nicht auf sehr viel Intersse stößt ( 8) ) kurz der Hinweis, dass ich mit der aktuellen Version 1.2 eine Möglichkeit implementiert habe, die Bedienung der Beschattungsgeräte lokal zu sperren und wieder freizugeben. Die Idee dazu kam mir aufgrund dieses Threads und des entsprechenden Hinweises von @Black.

Saschag
Beiträge: 48
Registriert: 23.03.2015, 22:45

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

Beitrag von Saschag » 24.01.2019, 10:43

Hallo Thorsten,

ich denk ich werde bei Gelegenheit dein zBSS einbauen. Find es echt super. (Wenn wieder Zeit ist :-) )

Aber eins muss ich noch fragen ;-)

Wie machst du des mit dem TFK bei einer Tür (Schiebetür), das Programm unterscheidet ja auch die Bezeichnung „Fenster“

Grüße und Danke für die Bereitstellung und die Super Anleitung!!

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

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

Beitrag von dtp » 24.01.2019, 12:51

Es ist eigentlich egal, wie du den TFK an der Tür oder dem Fenster nennst, solange er sich im Namen nur durch den unter der lokalen Skriptvariablen "closureBlinds" definierten Begriff (also z.B. Rollladen, Jalousie, Raffstore oder dergleichen) vom zugehörigen Beschattungsaktor unterscheidet.

Nehmen wir also mal an, du hast einen TFK vom Typ HM-Sec-SC, HM-Sec-SC-2, HM-Sec-SCo, HMiP-SWDO oder HMiP-SWDO-I an deiner Schiebetür im Einsatz und das Teil trägt den Namen "Wohnzimmer Schiebetür", dann sollte der zugehörige Rollladenaktor "Wohnzimmer Schiebetür Rollladen" oder "Wohnzimmer Rollladen Schiebetür" oder "Rollladen Wohnzimmer Schiebetür" heißen. Dabei ist es egal, wo du den Begriff "Rollladen" platzierst, wichtig ist lediglich, dass sich der TFK und der Rollladenaktor nur durch den unter "closureBlinds" definierten Begriff, also "Rollladen" unterscheiden.

Das Skript sucht nun zum Einen nach einer HM-Komponente, die "Wohnzimmer Schiebetür" heißt (die Reihenfolge von "Wohnzimmer" und "Schiebetür" muss aber zwingend derjenigen des Namens des zugehörigen Rollladenaktors entsprechen) und zum Anderen, um welchen Typ von Sensor es sich handelt. Findet es nichts Entsprechendes, wird einfach immer die eingestellte Behanghöhe verwendet. Sprich, das zBSS wird auf alle Fälle ausgeführt, es geht aber dann stets von einem geschlossenen Fenster- oder Tür-Zustand aus.

Hast du für einen TFK einen tilt-Wert gesetzt (der TFK kann aber ja nur zwischen offen und geschlossen unterscheiden), dann wird auch dieser ignoriert. Hast du dem Wert weder ein "tilt" noch ein "open" vorangestellt, dann wird der Wert immer als "open" interpretiert.

Ob das Fenster bzw. die Tür geschlossen, gekippt oder geöffnet war, siehst du in der gesendeten Push-Nachricht anhand der Farbe der angezeigten Behanghöhe. Grün (bzw. yellowgreen) zeigt einen geschlossenen, Blau (bzw. royalblue) einen gekippten und Orange einen geöffneten Zustand an. Falls gewünscht, kann ich die Farben auch noch über entsprechende Skriptvariablen im Kopf des Skripts einstellbar machen. Ich habe sie an meine ioBroker-Visualisierung angepasst.

Ich hoffe, nun ist das Prinzip klarer geworden.

Gruß,

Thorsten

PS.: Wir haben im Haus derzeit acht Rollladenaktoren im Einsatz. Ich habe das zBSP/zBSS natürlich auch mal über das gesamte Beschattungsgewerk laufen lassen. Dabei wurden alle Rollladenaktoren nahezu zeitgleich ausgelöst. Trotzdem wären da mal eure Erfahrungswerte hilfreich, ob und falls ja, ab wann es hier zu Problemen kommt. Wobei das natürlich maßgeblich von der persönlichen Funk- und DC-Situation abhängt.

Saschag
Beiträge: 48
Registriert: 23.03.2015, 22:45

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

Beitrag von Saschag » 24.01.2019, 14:40

Super! Habe es jetzt verstanden !!

Vielen Dank noch mal

dtp
Beiträge: 5829
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

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

Beitrag von dtp » 26.01.2019, 14:16

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 +++++
! Stets nach dem Muster "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "DG Terrasse Markise|100|ne\t
                     DG Schlafzimmer Rollladen Terrassentür|10|tilt20 open50|lt\t
                     OG Gästezimmer Rollladen Fenster|10|tilt20 open50|lt\t
                     OG Zimmer Lina Rollladen Fenster groß|10|tilt20 open50|lt\t
                     EG Wohnzimmer Rollladen Fenster|10|tilt20 open50|lt\t
                     EG Wohnzimmer Rollladen Terrassentür|10|tilt20 open100|lt\t
                     UG Büro Rollladen Fenster|10|tilt20 open50|lt";

! +++++ Globale Werte für Behanghöhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = ""; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

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

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zeBeS +++++
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 auf 10 % geschlossen. Ist ein zugehöriges Fenster gekippt, werden die Rollläden auf 30 % herunter gefahren, um noch einen besseren Luftaustausch zu gewährleisten. Ist ein Fenster geöffnet, werden die Rollläden lediglich auf 50 % herunter gefahren. Der Rollladen vor der Terrassentür bleibt bei geöffnetem Zustand oben, so dass man noch problemlos in den Garten gehen kann. Eine Auslösung der Rollläden erfolgt nur, wenn der Soll-Wert unterhalb des Ist-Wertes liegt.

Schließlich wird noch die Markise der Dachterrasse auf 100 % ausgefahren, wenn sie nicht bereits voll ausgefahren ist.

Ändert die Systemvariable "Haus SV Beschattung Hitze" ihren Zustand auf inaktiv, werden die Rollläden wieder geöffnet und die Markise eingefahren.

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(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                       "Beschattungsgerät|Behanghöhe|Korrekturwert(tilt_open_) Bediensperre(lock/unlock)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t"). 
! Auslösebedingung für den Vergleich von Soll- und Ist-Wert
! -> ne: Soll <> Ist | gt: Soll > Ist | ge: Soll >= Ist | lt: Soll < Ist | le: Soll <= Ist
! Für gesamtes Beschattungsgewerk Aufruf per blindsList = (dom.GetObject(ID_FUNCTIONS).Get("Beschattung")).EnumUsedNames();
! -> dann muss aber blindsGlobalValues gesetzt sein.
!  -> dann muss aber blindsGlobalValues gesetzt sein.
string blindsList = "DG Terrasse Markise\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öhen bzw. Ausfahrwerte und Korrekturwert für geöffnete bzw. gekippte Fenster und Türen +++++
! Wenn gesetzt, sind keine lokalen Werte in blindsList notwendig bzw. werden ignoriert 
! Stets nach dem Muster "Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)\t
!                        Behanghöhe|Korrekturwert(tilt_open_)|Auslösebedingung(ne/gt/ge/lt/le)" 
! ausfüllen (trennen mit "\t").
! Für TESTLAUF in Parameter Behanghöhe "test" einfügen.
string blindsGlobalValues = "test100|gt"; !"" zur Berücksichtigung der lokalen Werte in "blindsList"

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

! +++++ Namen der für die Beschattung benötigten Systemvariablen gem. zeBeS +++++
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 es sich hier noch um einen Versuch handelt, der sich erst bewähren muss, habe ich der globalen Systemvariablen "CCU SV Beschattung Globalwerte" den zusätzlichen Parameter "test" übergeben. Somit wird ein unbeabsichtigtes Auslösen der entsprechenden Aktoren vermieden.

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 und wenn die Ist-Temperatur 23°C erreicht und die Helligkeit mindestens 235 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 235 dig die Ist-Temperatur auf 23°C ändert oder wenn sich bei einer Ist-Temperatur von mindestens 23°C die Helligkeit auf 235 dig ändert.

Die Systemvariable "Haus SV Beschattung Hitze" wird wieder auf inaktiv gesetzt, wenn die Helligkeit einen Wert von 220 dig oder weniger erreicht hat und die Temperatur wieder auf 24°C gesunken ist. Dies ist aber, wie gesagt, noch in der Testphase und muss sich erst im Sommer bewähren.

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);
});
Gruß,

Thorsten

Antworten

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