ProgramExecute Bedingungen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

meiland
Beiträge: 18
Registriert: 12.12.2020, 11:10
System: CCU

ProgramExecute Bedingungen

Beitrag von meiland » 02.07.2021, 10:38

Hallo,
ich habe mehrere Jalousien bei denen durch örtliche Umstände beim Schließen für jede einzelne verschiedene Prüfungen laufen müssen. ZB. Kontakte, andere Fensterstellungen,...
Deshalb gibt es für jede Jalousie ein extra Programm zum Schließen. In diesem werden im WENN die speziellen Sachen geprüft.
Das Schließen kann aber von mehreren Stellen aktiviert werden. ZB. Abends normal schließen, Schließen bei starker Sonne und schließen nachdem sie durch den Sturm hochgefahren wurde. Mein Wunsch war, die Bedingungen für jede Jalousie nur 1 mal zu pflegen.
Wie der Doku zu entnehmen führt ein durch ProgramExecute() aufgerufenes Programm nur den DANN-Zweig aus und ignoriert die Bedingungen.
Wie könnte ich das realisieren ?
Oder habe ich einen Denkfehler ?
Vielen Dank.

Gruß Frank

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: ProgramExecute Bedingungen

Beitrag von MichaelN » 02.07.2021, 10:57

Ganz dünnes Eis! Damit kannst Du Dir die CCU schön lahm legen.
Nutz einfach die dafür vorgesehenen Bordmittel.
Prinzip: Du setzt in Programm A eine Systemvariable auf einen Wert und reagierst in Programm B auf diese Systemvariable.
Damit kannst Du beliebig Programme nach Wunsch starten. Dafür eignen sich SV vom Typ Logik oder Werteliste.
Siehe zB. In meiner Rollo-Steuerung (siehe Signatur)
Hier viewtopic.php?f=18&t=60764&start=10#p602658 ist das Prinzip erklärt
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

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

Re: ProgramExecute Bedingungen

Beitrag von Xel66 » 02.07.2021, 12:49

Programmausführung mit Beachtung von Bedingungen startet man im Allgemeinen durch Verknüpfungen mit virtuellen Tasten. Das wäre ein Weg der andere ist ein anderes Steuerungskonzept.

Bei mir steuert genau nur ein einziges Programm die Rollladen direkt in Abhängigkeit von drei Systemvariablen. Eine logische für offen/geschlossen und jeweils eine für den prozentualen Sollwert, wenn die gewünschte Stellung "offen" ist (also gewöhnlich tagsüber) und einen prozentualen Solltwert, wenn die gewünschte Stellung "geschlossen" ist.

Mit dem prozentualen Sollwert für Stellung "offen" bilde ich die Behanghöhen für ganz oben (100%) und verschiedene Beschattungshöhen (Sonnenstand und Hitzeschutz) ab. Mit dem prozentualen Sollwert für Stellung "geschlossen" bilde ich eben ganz zu (0%) und eine Lüftungsbehanghöhe (auf Ritze) ab.

Alle Programme (Tag/Nachtsteuerung, Lüftung, Beschattung,und Hitzeschutz) haben nur Zugriff auf die Systemvariablen. Der Fensterkontakt stellt zum Beispiel denn Sollwert "geschlossen" auf 20%, wenn er offen meldet. Das hat aber nur reale Auswirkungen, wenn der Rollladen "geschlossen" wäre. Genauso hat das Beschattungsprogramm nur Zugriff auf die Systemvariable für den Sollwert "offen" und ist nur wirksam, wenn der Rollladen auch offen wäre.

Das jeweilige Rolladenprogramm stellt nur plausible Zustände für seinen Rollladen hin und es kommt zu keinerlei konkurrierenden Zugriffen verschiedener Programme auf den Aktor. Und das Abendprogramm stellt die Systemvariable nur für alle Fenster auf "geschlossen". Ist ein Fenster angeklappt, dann fährt der Rollladen nur dieses Fensters nur auf 20% und nicht ganz zu, weil der prozentualen Sollwert eben durch das geöffnete Fenster auf 20% steht.

Das Konzept habe ich schon mal hier im Forum mit Screenshots vorgestellt, es benötigt allerdings eine gewissen Anzahl von Programmen. Mit virtuellen Knälen könnte man ähnliches auch abbilden. Dann würde man sich die Systemvariablen sparen und einzelne Kanäle ansprechen. Die Priorisierung würde dann der Aktor selbst vornehmen. Das Grundkonzept ist hier im Forum unter "Aussperrschutz" auch zu finden. Dieses müsste man dann um die gewünschten Funktionen erweitern. Virtuelle Kanäle haben aber m.W. nur die IP-Aktoren.

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

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: ProgramExecute Bedingungen

Beitrag von Black » 02.07.2021, 13:24

Programm starten unter berücksichtigung der Bedingungen geht auch, aber halt nicht mit ProgramExecute.
programExecute führt nur Blind die Aktionen der ersten bedingung aus, ohne irgendwas logisch zu überprüfen.

Wenn man aber anstatt

Code: Alles auswählen

oPRG=dom.GetObject (ID_PROGRAMS).Get ("MeinProgrammName");
oPRG.ProgramExecute();
den Aufruf mit

Code: Alles auswählen

oPRG=dom.GetObject (ID_PROGRAMS).Get ("MeinProgrammName");
oPRG.State(1);
macht, dann wird das Programm auch gestartet, aber die Bedingungen werden wie normal auch berücksichtigt.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: ProgramExecute Bedingungen

Beitrag von MichaelN » 02.07.2021, 13:50

Gab es da nicht relevante Unterschied zwischen RM und OCCU? Entweder funktioniert State() auf Programmobjekte nicht, oder man muss. State(1,1) anwenden? War da nciht was?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

meiland
Beiträge: 18
Registriert: 12.12.2020, 11:10
System: CCU

Re: ProgramExecute Bedingungen

Beitrag von meiland » 02.07.2021, 18:55

Xel66 hat geschrieben:
02.07.2021, 12:49
..Alle Programme (Tag/Nachtsteuerung, Lüftung, Beschattung,und Hitzeschutz) haben nur Zugriff auf die Systemvariablen...
Ich habe mir den Ansatz angesehen und versuche die Grundlogik zu übernehmen.
Für jede Jalousie gibt es jetzt 2 Programme, eins für Hoch und eins für Runter. Darin werden fast nur Systemvariablen abgefragt, wie Nacht, Sonnenschutz, Sturm.

Auch den anderen Danke für die konstruktiven Hinweise.

Eine Frage noch, wenn ich die Jalousie Runter fahre, muss da geprüft werden, ob sie bereits unten ist ?
Das Problem dabei ist, dass in der WENN bereits mehrere Bedingungen mit UND verknüpft sind und dann müsste ich prüfen, ob die Behanghöhe oder die Lamellenposition vom Zielwert abweicht.

Hier wird vom Actor nur die Behanghöhe geprüft.
Jal_Bosel_Runter.jpg
Wie könnte man das machen ohne gleiche Bedingungen mehrfach zu verwenden.
Ich hoffe mich verständlich ausgedrückt zu haben ?

Gruß Frank

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: ProgramExecute Bedingungen

Beitrag von MichaelN » 02.07.2021, 19:50

Code: Alles auswählen

Behanghöhe
UND
{	Nacht
	ODER
	Sonnenschutz
}
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: ProgramExecute Bedingungen

Beitrag von Black » 04.07.2021, 12:24

MichaelN hat geschrieben:
02.07.2021, 13:50
Gab es da nicht relevante Unterschied zwischen RM und OCCU? Entweder funktioniert State() auf Programmobjekte nicht, oder man muss. State(1,1) anwenden? War da nciht was?
.State (1) startet auf einer Raspel so wie erwartet.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: ProgramExecute Bedingungen

Beitrag von MichaelN » 04.07.2021, 12:26

Aber auf einer original CCU nicht
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: ProgramExecute Bedingungen

Beitrag von Black » 04.07.2021, 12:39

ok, kann sein, das dies erst durch den patch in der rega 220 funktional wurde... die läuft in der originalen ja noch nicht
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Antworten

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