Xel66 hat geschrieben: ↑18.11.2022, 12:32
... Das Problem dabei ist, dass sehr häufig die Programme, in denen diese im Nachgang veränderten Systemvariable verwendet werden, ohne Fehlermeldung und ohne im WebUI ersichtlich zu sein intern "kaputt" sind. Triggern nicht mehr oder sind dyfunktional. Mann müsste alle Programme, die die Variable verwenden, anfassen.
definitiv nein!!!
Einfach an die von @Matsch beschriebenen internen Abarbeiteungen berücksichtigen!
Bsp. für Beschattung
Anlegen der SysVar: Rollladen Beschattung
Values: unbekannt;aus;ein
fertig!
Also Programm (ganz easy):
Wenn Sonne
Dann SysVar: Rollladen Beschattung -> Ja
Sont, wenn
Nix Sonne
Dann SysVar: Rollladen Beschattung -> nö
auch easy!
Jetzt kommen wir zu dem Fall Ost/West/BlaBla-Seite (was IMHO völliger... ist, aber jeder wie er mag)
Programm für: Beschattung WEST
Wenn,
Azimut für Bereich Fenster WEST - JA
und
Rollladen Beschattung = JA
Dann
Roll.Pos.FensterWest-1 = Beschattung - ein
Roll.Pos.FensterWest-2 = Beschattung - ein
Roll.Pos.FensterWest-3 = Beschattung - ein
wo muss ich dann das Programm für die Behanghöhe "Beschattung" neu editieren????
Eleganter wäre natürlich,
bei jedem Fenster zu ermitteln, bei welchem Azimut- & Elevation-Wert die einzelnen Fenster überhaupt Schattenbedarf haben (Fenster1 Azimut im Bereich 50 - 100 und Elevation (bei TAG) > 6, usw. für jedes Fenster)
Das Programm Azimut & Elevation (ggf mit Eintrag in eine SysVar) alle 4min gestartet (so hat man wunderbar die 360° Azimut abgedeckt), welches eine Trigger-SysVar Bsp: TRI-Sonnendatenauswertung ja/nein setzt, fertig
Dieser Trigger prüft und setzt für jedes Fenster einen Wert (unbekannt;nein;ja), ob Sonneneinstrahlung vorhanden.
Geht nun die Beschattung los, wird nur die Position für Beschattung der jeweiligen Fenster gesetzt, die auch tatsächlich direkte Sonneneinstrahlung haben, und zwar mit dem Wert der nur ein einziges mal in dem jeweiligen Positionsprogramm festgelegt ist.
Zurück zur Erweiterung der SysVars...
Möchte man nun hingehen und die Beschattung erweitern, dann nur die SysVar: Rollladen Beschattung mit bisherigen Werten (unbekannt;nein;ja),
auf zusätzliche Einträge erweitern,
Bsp.:
unbekannt (intern "0");nein (intern "1");Beschattung 20 - <22 (intern "2");Beschattung 22 - <24 (intern "3");Beschattung 24 - <26 (intern "4")
So wird in den Programmen mit dem SysVarValue für "unbekannt" UND "nein" gar nix zu ändern sein, selbst der ehemalige Eintrag "ja" (intern "2") bekommt in den Programmen einen andere Bezeichnung (siehe Value-Eintrag) bleibt bei der internen Verarbeitung bei "2" und löst das Positionsprogramm weiterhin aus.
Nun die SysVar:Roll.Pos.FensterXYZ
im Positions-Programm genutzte SysVar:Roll.Pos.FensterXYZ
den bisherigen Eintrag:
"Beschattung in "Beschattung 20 - <22" ändern
und einfach um die neuen Positionen (Values) erweitern, indem man am Ende der Einträge (Value-List) die neuen einfach anhängen ";Beschattung 22 - <24;Beschattung 24 - <26 hinzu fügt.
Im Positionsprogramm die "neuen" Einträge als weitere Auslöser hinzufügen und entsprechende Positionen in weiteren Sonst, wenn's setzen, fertig.
Das es einfach ist, habe ich nicht geschrieben, aber bei jeder Erweiterung von Rollladenpositionen (durch oberste Heeresleitung/gewachsenen Ansprüchen) in Programmen, wird somit NUR ein einziges Programm (je Rollladen) für Änderungen angefasst.
Ein Programmaufbau, der nur in einem "einzigen Block"
ALLE
Auslöser/Trigger
zusammen fast, macht die Kiste natürlich wesentlich einfacher (wird leider nicht in Tips und Tricks für Anfänger aufgeführt).
Wie die Programme entsprechend aufgebaut werden können zigt der Fred.
viewtopic.php?f=31&t=39187&p=386406&hil ... ed#p386406
Ich habe z.B. bisher nur 26 Einträge in der SysVar: Roll.Pos.XYZ.
Es macht auch keinen Sinn, eine Position (z.B. Behang 25% für mehrere Positionsbezeichner zu werenden, da die Abhängigkeiten (Prüfungen) meist variieren und somit nicht "pauschalisiert" werden können
Skriptlösungen sind da natürlich wesentlich eleganter, aber nicht jeder ist soweit, das im "Vollen Umfang" umzusetzen.
.Keks