Wie lange ist "bei Änderung auslösen" gültig ?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Dönermän
Beiträge: 5
Registriert: 31.12.2022, 14:39
System: CCU

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von Dönermän » 25.03.2024, 12:58

Ist doch offensichtlich, dass ich nicht beim Bund war :P
Man könnte den Soldaten ja auch vorher befohlen haben, sich nach der Aktion selbstst.... nein? ok.

Danke auch an Baxxy, bin jetzt im Bilde.

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von NickHM » 25.03.2024, 13:46

Dönermän hat geschrieben:
25.03.2024, 12:58

Man könnte den Soldaten ja auch vorher befohlen haben, sich nach der Aktion selbstst.... nein? ok.
Doch das kann man. Nennt sich "Einschaltdauer" oder "einschalten für xxx sekunden".
Dann läuft der Timer im Soldaten abwärts.

Aber Deine Frage bezog sich ja auf den Befehlsgeber und der ruft nur einmal.

Gerti
Beiträge: 3035
Registriert: 28.01.2016, 18:06
System: CCU
Wohnort: Hürth
Hat sich bedankt: 16 Mal
Danksagung erhalten: 274 Mal

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von Gerti » 25.03.2024, 19:07

Hi,

die bisherigen Antworten waren grundsätzlich richtig, es gibt jedoch etwas zu bedenken.
Angenommen, ich habe eine Systemvariable "Rollladen_schliessen", die als Werte ok und fertig hat.

Nun habe ich für drei Rollläden ein Programm wie dieses hier erstellt, die auf Änderung dieser Variable triggern:

WENN Rollladen_schliessen ist ok bei Änderung auslösen
DANN
Rolladen_xy (1 - 3) sofort Behanghöhe 0%
Rollladen_schliessen sofort fertig

In diesem Fall wird nur einer der Rollläden fahren, die anderen nicht mehr.
Die Programme werden zwar noch getriggert, die Bedingung ist aber inzwischen nicht mehr erfüllt.

Man muß hier also darauf achten, dass der geänderte Status so lange erhalten bleibt, bis alle zu triggernden Programme abgearbeitet wurden.

Gruß
Gerti

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von NickHM » 26.03.2024, 08:28

Gerti hat geschrieben:
25.03.2024, 19:07
Hi,

WENN Rollladen_schliessen ist ok bei Änderung auslösen
DANN
Rolladen_xy (1 - 3) sofort Behanghöhe 0%
Rollladen_schliessen sofort fertig

Man muß hier also darauf achten, dass der geänderte Status so lange erhalten bleibt, bis alle zu triggernden Programme abgearbeitet wurden.
Und deshalb könntest Du die Variable auch 2min verzögert auf "Fertig" stellen.
das ein Programm eine SysVar verändert, die es selbst als Trigger nimmt, ist immer schwierig. Und sicherlich ein Sonderfall.

CCU3-Tester
Beiträge: 26
Registriert: 10.01.2022, 21:11
System: CCU
Danksagung erhalten: 1 Mal

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von CCU3-Tester » 27.04.2024, 13:32

Gerti hat geschrieben:
25.03.2024, 19:07
Hi,

die bisherigen Antworten waren grundsätzlich richtig, es gibt jedoch etwas zu bedenken.
Angenommen, ich habe eine Systemvariable "Rollladen_schliessen", die als Werte ok und fertig hat.

Nun habe ich für drei Rollläden ein Programm wie dieses hier erstellt, die auf Änderung dieser Variable triggern:

WENN Rollladen_schliessen ist ok bei Änderung auslösen
DANN
Rolladen_xy (1 - 3) sofort Behanghöhe 0%
Rollladen_schliessen sofort fertig

In diesem Fall wird nur einer der Rollläden fahren, die anderen nicht mehr.
Die Programme werden zwar noch getriggert, die Bedingung ist aber inzwischen nicht mehr erfüllt.

Man muß hier also darauf achten, dass der geänderte Status so lange erhalten bleibt, bis alle zu triggernden Programme abgearbeitet wurden.

Gruß
Gerti
Das ist genau die Frage die ich mir schon seit langem stelle. Das grosse Fragezeichen ist doch wie die Programme abgearbeitet werden. Da genau dieser Zustand auftreten kann das mehrere Programme einen geänderten Zustand zur Ausführung benötigen, hätte ich erwartet das der Ablauf so ähnlich wie in einer SPS zyklisch erfolgt:

Zyklus-Start:
if (Variable_alter_Wert != Variable_aktueller_Wert)
{
Variable_hat_sich_geändert = true;
Variable_alter_Wert = Variable_aktueller_Wert
}

Jetzt laufen alle Programme und schauen und schauen nur bei Änderung auf Variable_hat_sich_geändert

Zyklus-Ende:
Variable_hat_sich_geändert = false

Somit wäre sichergestellt das alle Programme die den geänderten Zustand benötigen, ihn auch bekommen.
Alternativ sollte es möglich sein Programme gezielt an den Anfang oder ans Ende zu setzen damit die Variablen gesteuert manipuliert werden können.


Von NickHM: Und deshalb könntest Du die Variable auch 2min verzögert auf "Fertig" stellen.
das ein Programm eine SysVar verändert, die es selbst als Trigger nimmt, ist immer schwierig. Und sicherlich ein Sonderfall.

Warum soll das ein Sonderfall sein? Ich habe 3 Kameras die jeweils bei Bewegung eine Systemvariable auf true setzen, und am Ende der Bearbeitung direkt auf false. Die Bewegungserkennung ist damit abgeschlossen

Matsch
Beiträge: 5455
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von Matsch » 27.04.2024, 13:50

Das System ist aber nun mal ein eventgetriggertes System - aus Performancegründen. Darauf muss man sich einstellen.

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

Re: Wie lange ist "bei Änderung auslösen" gültig ?

Beitrag von Xel66 » 27.04.2024, 14:58

CCU3-Tester hat geschrieben:
27.04.2024, 13:32
Jetzt laufen alle Programme und schauen und schauen nur bei Änderung auf Variable_hat_sich_geändert
Nein, das System funktioniert aber andersrum. Es ändert sich ein Zustand und diese Änderung startet die Bedingungsprüfung aller Programme, die diesen Zustand als Trigger enthalten (und nur diese). Trifft eine oder mehrere Bedingungen zu, werden die dazugehörigen DANN ausgeführt (oder ein ggf. vorhandenes SONST). Das System verhält sich grundsätzlich anders (eventgetriggert) als z.B. SPS (die ständig durch die Status kreist) und darauf muss man sich zwangsweise einstellen oder sich nach einem anderen System umschauen. Mit der Denkweise, die man von anderen Sytemen kennt, kommt man nicht sehr weit.

Diese Vorgehensweise ist relativ ressourcenschonend und den ersten Generationen der CCU mit relativ schwacher Hardwarebasis geschuldet. Es werden eben keine unnötigen Programmläufe iniitiert, sondern nur welche, die auch den Trigger enthalten. Eine Bedingungsprüfung durch Programme, die diesen Status nicht als Trigger enthalten ist somit überflüssig. Ist nun mal so.

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 allgemein“