Systemvariablen vom Typ Werteliste im Nachgang ändern?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Re: Systemvariablen vom Typ Werteliste im Nachgang ändern?

Beitrag von Xel66 » 17.11.2022, 14:28

MichaelN hat geschrieben:
17.11.2022, 14:06
Naja.
Es ging um die von mir angeführte Version der scriptlosen Steuerung rein über Systemvariablen mit den Mitteln der WebUI. Ich bezog mich auf...
matthias.s hat geschrieben:
17.11.2022, 11:25
Auch wenn mir momentan die Nummer mit den Sollwerten noch fremd ist, weil ich da bisher nicht mit gearbeitet habe. Da muss ich mich noch intensiv einlesen.
Vorteile dieser Art: keine Scripte notwendig und keinerlei konkurrierende Zugriffe mehrerer Programmfunktionen auf den gleichen Rollladenaktor, weil das Steuerungsprogramm nur plausible Stellungen zulässt (z.B. Lüftungsstellung nur bei Soll-unten). Zusätzlich sind eben problemlos Fahrten morgens von Lüftungsstellung (unten) auf Beschattungsstellung möglich, weil durch den Wechsel der Variable von "unten" auf "oben" direkt der "SWoben" angefahren wird. Viele Sachen könnte man auch durch Zusatzbedingungen in den jeweiligen Steuerungsprogrammen der Rollladen abbilden. Dann benötigt man aber wieder unterschiedliche Programme für jeden Rollladen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: Systemvariablen vom Typ Werteliste im Nachgang ändern?

Beitrag von nimmnenkeks » 18.11.2022, 11:23

matthias.s hat geschrieben:
17.11.2022, 10:02
...
Nun kommt hinzu, dass meine "Regierung" dazu mich dazu beauftragt hat...

Als Beispiel der Beschattung:
Aus, Manuell, Sommerbeschattung, Winterbeschattung, Lüftungsbeschattung, Fenster-Sauber-Modus, Urlaub, ...
...

Jetzt bin ich mir allerdings nicht mehr sicher, ob das wirklich eine gute Idee ist.
Im Prinzip ist es eine sehr gute Idee, eine Wertelisten zu nutzen (wie @Matsch die Abarbeitung ja auch erklärt hat).
Sie lässt sich ja um x-Einträge erweitern, wenn z.B. Wünsche der obersten Heeresleitung/Szenen o.ä. hinzu kommen.

Legt man pro Rollladen eine SysVar an, die die "festen Positionen" als Einträge enthält, nutzt man einfach diese Einträge für das Szenario-Programm.

Vorteil, man muss nur an einziger Stelle/Programm die anzufahrenden Behanghöhen für entsprechenden Rollladen eintragen.
In allen anderen Programmen werden ja nur die SysVar-Values im "DANN" ausgewählt, die dann durch o.g. Programm angefahren werden.

Bsp. Rollladen Küche:
SysVar Werteliste (Roll.Pos.Küche) mit den Values:
unbekannt;TAG;Lüften-Tag;Lüften-Durchzug;Beschattung 22° bis 24°;Beschattung 24° bis 26°Hitzeschutz;Regenschutz-gekippt;Regenschutz-offen;Sonnenheizen;Lüften-Nacht;Lüften-Nacht-Durchzug;Nacht;Manuell;u.v.m

Dazu dann ein Programm (z.B. VAL-Rollladen-Küche):
Die darin genutzten Werte der o.g. SysVar (Roll.Pos.Küche) als Auslöser (ggf. weitere Auslöser/Trigger nutzen)

Wenn:
Roll.Pos.Küche - Auswahl TAG (Änderung)
und Nachtruhe AUS
und Behang kleiner 100%
DANN
GERÄT -> Rollladen Küche -> 100%

somit:
gewünschte Poition: TAG
Behang kleiner 100%
Rollladen fährt auf 100%

Sonst, wenn:
Roll.Pos.Küche - Auswahl Beschattung 22° bis 24° (Änderung)
und Nachtruhe AUS
und Behang größer 30%
oder Behang kleiner 30%
DANN
GERÄT -> Rollladen Küche -> 30%

somit:
gewünschte Poition: Beschattung 22° bis 24°
Rollladen ist höher/kleiner als 30%
Rollladen fährt auf 30%)

usw.

Baut man eine Programm "Rollladen Beschattung" (auch mit unterschiedlichen Temperaturen und/oder Behanghöhen)
z.B:
Wenn,
(SysVar Werteliste) = Temp-Beschattung 22 bis < 24
Dann,
Roll.Pos.Küche -> Beschattung 22° bis 24°
Roll.Pos.SZ -> Beschattung 22° bis 24°
Roll.Pos.WZ -> Beschattung 22° bis 24°
Sonst, wenn
(SysVar Werteliste) = Temp-Beschattung 24 bis < 26
Dann,
Roll.Pos.Küche -> Beschattung 24° bis 26°
Roll.Pos.SZ -> Beschattung 24° bis 26°
Roll.Pos.WZ -> Beschattung 24° bis 26°

welches wiederum das Programm VAL-Rollladen-Küche auslöst und die entsprechenden Behanghöhen anfahren lässt.
Somit s.o. keine Anpassung von Geräte/Aktoren-Behanghöhen in irgend einem weiteren Programm notwendig.

Wird bei Bedarf eine weitere "Fest-/Anfahrposition" gewünscht, lässt sich das Programm einfach um eine weiteres "Sonst, wenn" erweitern, der den ebenfalls neu hinzugekommen Value-Wert der SysVar Roll.PosKüche nutzt (wird ja einfach in SysVar angehängt).

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

Re: Systemvariablen vom Typ Werteliste im Nachgang ändern?

Beitrag von Xel66 » 18.11.2022, 12:32

nimmnenkeks hat geschrieben:
18.11.2022, 11:23
Im Prinzip ist es eine sehr gute Idee, eine Wertelisten zu nutzen (wie @Matsch die Abarbeitung ja auch erklärt hat).
Sie lässt sich ja um x-Einträge erweitern, wenn z.B. Wünsche der obersten Heeresleitung/Szenen o.ä. hinzu kommen.
Die einleitenden Worte beschreiben das Problem. "Im Prinzip"... 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. Hierbei muss man die Variable löschen und die Bedingung wieder hinzufügen. Muss man sich das wirklich antun? Das ist ein altbekanntes Problem, immer noch nicht gelöst und daher ist diese Vorgehensweise einer nachträglichen Änderung nicht zu empfehlen.

Und in den Programmen, die ggf. die Variable umschalten würden, kann man auch gleich Behanghöhen vorgeben. Außerdem ging es um eine zentrale Variable, die alle Rollladen betrifft. Eine solche Steuerung ist auch wieder sehr aufwändig und komplex und auch nicht zwingend zielführend. Beispiel: man muss nicht die Rollladen auf der Westseite runterfahren, wenn zur Mittagszeit festgestellt wird, dass Beschattungsbedarf besteht. Den kann man global feststellen und dann nach Zeit oder azimutal die zu beschattenden Fenster fahren. Mit einer zentralen Vorgabe eher schwierig und einer Rollladen-bezogenen Vorgabe recht aufwändig.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: Systemvariablen vom Typ Werteliste im Nachgang ändern?

Beitrag von nimmnenkeks » 18.11.2022, 15:29

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

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

Re: Systemvariablen vom Typ Werteliste im Nachgang ändern?

Beitrag von Xel66 » 18.11.2022, 16:47

nimmnenkeks hat geschrieben:
18.11.2022, 15:29
Möchte man nun hingehen und die Beschattung ernweitern, 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")
Und gerade das geht häufig, nicht immer und unter nicht nachvollziehbaren Umständen in die Hose. Da nützen Dir die schönen hinzugefügten Optionen rein gar nichts, wenn die Zielprogramme nicht mehr drauf triggern (nicht mal auf die nicht angefassten Einträge). Das Problem dabei ist, in der WebUI soeht alles ganz normal aus. Nur es funktioniert nicht (oder nicht richtig). Und wer sich ein Mal irgendwelche Programme durch solch eine Aktion zerschossen hat, der lässt die Finger davon.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“