Verständnisfrage: laufender Start von Programmen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von nicolas-eric » 07.04.2017, 14:00

Nein das heisst es nicht.
Das heisst nur, dass auf dem Merkzettel nicht "von unter 21 auf über 21 Grad" und "von über 21 Grad auf unter 21 Grad" steht.
Da steht nur "Wenn was mit dem Gerät passiert, starte das Programm.
Die Bedingungen werden dann da erst abgearbeitet bzw geprüft.
Daher auch der Zeitstempel.
War es vorher unter 21 Grad und nachher ist es auch unter 21 Grad, wird kein SONST ausgeführt, weil ja "Änderung" ausgewählt ist.
Das soll so weit gehen, dass das sogar bei Geräten der Fall ist die solche Daten liefern, aber deren EIN/AUS Zustand im Programm angefragt wird.
Selbst da steht im Zeitstempel trotz EIN/AUS "bei Änderung" jedes mal exakt die Zeit, wenn z.B, der Messaktor seine Messdaten geschickt hat.
So zumindest habe ich die Erklärung verstanden.
Aber wie gesagt, ob da nun was dran ist, kann ich nicht sagen, vielleicht war das ich nur ne "Standard Beruhigungs" Mail vom Service von EQ3.

Meine Beobachtungen bestätigen das auch irgendwie:

Habe ein Programm, das bei Betätigen jedes Licht Aktors die Anzahl der angeschalteten Geräte im Gewerk "Licht" zählt.
Sind da nur Schaltaktoren ohne Messfunktion drin, steht im Zeitstempel des Programs immer die Zeit, wann das letzte Licht geschaltet wurde.
Füge ich einen Messaktor (egal ob den HMIP-BSM oder den HM-ES-PMSw1-Pl) als EIN/AUS Auslöser hinzu, steht da selbst wenn stundenlang kein Licht geschaltet wurde im Zeitstempel immer die Zeit, wann der letzte der Messaktoren seinen Status gesendet hatte. Aber es werden nur die Bedingungen gecheckt, das DANN wird nicht ausgeführt

Genauso mit dem HM-ES-PMSw1-Pl. Selbst wenn der Entscheidungswert sich nicht geändert hat, wird mein Programm für die "Waschmaschine ist fertig" Meldung laut Zeitstempel immer exakt dann gestartet, wenn dieser Aktor seine Status gesendet hat. Natürlich findet dann keine Aktion statt, aber gestartet wird es scheinbar schon.

manfredh
Beiträge: 4155
Registriert: 09.09.2012, 10:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 301 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von manfredh » 07.04.2017, 14:26

Damit gibt es also für das (eigentlich unbedingte) "Sonst" bei der Abarbeitung von Programmen zwei Versionen?:

1. Ein im "Wenn" oder "Sonst Wenn" enthaltener Auslöser, der auf "bei Änderung" steht wird aktualisiert: "Sonst" wird nicht ausgeführt
2. Ein im "Wenn" oder "Sonst Wenn" enthaltener Auslöser, der auf "bei Aktualisierung" steht wird aktualisiert: "Sonst" wird ausgeführt (wenn nicht schon ein Wenn greift)

Also quasi ein bedingtes Sonst und ein unbedingtes Sonst...

Ich finde, dass da jetzt mal einer eingreifen sollte, der die Logik besser versteht, als ich.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von Homoran » 07.04.2017, 14:39

manfredh hat geschrieben:Ich finde, dass da jetzt mal einer eingreifen sollte, der die Logik besser versteht, als ich.
War doch schon ganz gut ;-)

Die Ursache liegt wie bereits hier geschrieben in der zweistufigen Ausführung der Programme.
- Auslösen des Programms
- Ausführung der Aktion

Ausgelöst wird bei jeder Aktualisiereung, aber nichts ausgeführt wenn nicht eine Bedingung erfüllt ist.

Der Timestamp ändert sich bei jedem Aufruf (=Aulösung)

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

manfredh
Beiträge: 4155
Registriert: 09.09.2012, 10:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 301 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von manfredh » 07.04.2017, 14:45

Homoran hat geschrieben:
manfredh hat geschrieben:Ich finde, dass da jetzt mal einer eingreifen sollte, der die Logik besser versteht, als ich.
War doch schon ganz gut ;-)

Die Ursache liegt wie bereits hier geschrieben in der zweistufigen Ausführung der Programme.
- Auslösen des Programms
- Ausführung der Aktion

Ausgelöst wird bei jeder Aktualisiereung, aber nichts ausgeführt wenn nicht eine Bedingung erfüllt ist.

Der Timestamp ändert sich bei jedem Aufruf (=Aulösung)
Hallo Rainer,

die Erklärung reicht mir nicht. Vielleicht bin ich aber auch Begriffsstutzig.

Das Programm des TE (siehe Screenshot) wird also bei jeder Aktualisierung ausgelöst (obwohl auf Änderung getriggert) und das Sonst (ohne Bedingung) wird nicht ausgeführt?

Auslösen heißt also in diesem Sprachgebrauch nicht, dass die Abarbeitung getriggert wird?
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von JRiemann » 07.04.2017, 14:57

Sorry! Aber entweder hast auch Du die Logik der CCU noch nicht zu 100% verstanden, oder EQ3 hat Dir falsche Angaben gemacht, bzw. Du interpretierst die Antwort falsch!
nicolas-eric hat geschrieben:Bei Geräten mit nur Ein/Aus Status werde das Programm gar nicht erst gestartet, weil da auf dem "Merkzettel" der CCU auch der Wert steht, der zum starten des Programms nötig ist.
Als erstes muss man genau unterscheiden was "gestartet" bedeutet. Als gestartet wird ein Programm meistens bezeichnet wenn es getriggert (ausgelöst) wird und die Überprüfung der Bedingungen startet. Damit es dazu kommt muß das Programm aber erst ausgelöst werden. Wann ein Programm durchlaufen wird entscheidet die Funktion "bei Änderung auslösen" oder "bei Aktualisierung auslösen". Allerdings hat keine dieser Funktionen Einfluss darauf ob und wann ein DANN ausgeführt wird.
Deine Aussage von oben ist somit falsch! Bei einem Objekt welches nur EIN/AUS annehmen kann bewirkt "bei Änderung" das JEDE Statusänderung das Programm triggert. "bei Aktualisierung" triggert das Programm bei JEDER Statusänderung und zusätzlich bei JEDER Statusmeldung auch wenn keine Änderung stattgefunden hat.
nicolas-eric hat geschrieben:Bei Geräten mit nicht nur ein/aus stünde dieser Wert eben nicht auf dem Merkzettel und das Programm würde gestartet, um die Bedingungen zu prüfen, wann auch immer was mit dem Gerät geschieht.
Auch hier ist die Aussage teilweise falsch! Die CCU arbeitet beim Auslösen der Programme mit true/false und nicht direkt mit Werten. Auch bei Geräten wie Temperatursensoren ist das so. Z.B. WENN - Temperatur - kleiner 20 Grad: "true" ist der Werbereich unter 20 Grad. "False" ist der Temperaturbereich über 20 Grad. Daraus ergeben sich auch bei diesen Geräten 2 Zustände die als Bedingung dienen. Auch bei diesen Programmen bestimmen Aktualisierung/Änderung wann ein Programm durchlaufen/überprüft wird. "bei Aktualisierung" triggert das Programm bei JEDER Statusmeldung mit oder ohne Änderung des Objekts. "bei Änderung" wird in diesem Fall in Kombination mit der Bedingung verarbeitet. Als Beispiel Temperaturen: größer 20 Grad - bei Änderung: Das Programm wird ausgelöst wenn der Wert 20 in irgendeine Richtung übersprungen wird. Also z.B. ein Sprung von 19 auf 21 (true) Grad oder von 21 auf 19 Grad (false). Temperaturänderungen die im Bereich unterhalb oder überhalb 20 Grad stattfinden bleiben unbeachtet. Bei Wertbereichen löst das eintreten bzw. austreten aus dem Wertbreich den Programmdurchlauf aus. Hierbei ist der Wertbereich z.B. 10 bis 20 Grad "true" und Werte außerhalb des Bereichs sind "false".
nicolas-eric hat geschrieben:Der einzige Unterschied zwischen Aktualisierung und Änderung sei bei diesen Geräten, dass bei Aktualisierung jedes Mal das DANN ausgeführt wird, wenn die Bedingung zutrift (auch vorher die selbe Temperatur wie nachher), bei Änderung aber nur, wenn die Bedingung von einer Seite der "Schwelle" auf die andere gewechselt ist.
Es sei bei diesen Geräten sogar so, dass ein Programm gestartet wird, was Ein/Aus als Bedingung hat, wenn dieses Gerät z. B. den Status des Messwertkanals sendet und das EIN/AUS sich gar nicht geändert hat.
Naja, das ist etwas verwirrend und missverständlich geschrieben.
Wie bereits oben gesagt bestimmt die Auswahl "Änderung" oder "Aktualisierung" wann ein Programm durchlaufen/geprüft wird. Sobald die Überprüfung des Programms angestoßen wurde ist es absolut egal ob Aktualisierung, Änderung oder nur prüfen ausgewählt wurden. Ab dem Zeitpunkt des Starts werden ALLE Zeilen behandelt als würde "nur prüfen" am Zeilenende stehen. Ob ein DANN ausgeführt wird bestimmt einzig die Bedingung!!
"true" führt zum Ausführen des DANN, vorausgesetzt alle Bedingung eines WENN-Blocks stehen auf "true".
nicolas-eric hat geschrieben:Genauso mit dem HM-ES-PMSw1-Pl. Selbst wenn der Entscheidungswert sich nicht geändert hat, wird mein Programm für die "Waschmaschine ist fertig" Meldung laut Zeitstempel immer exakt dann gestartet, wenn dieser Aktor seine Status gesendet hat. Natürlich findet dann keine Aktion statt, aber gestartet wird es scheinbar schon.
Das ist es doch was wir die ganze Zeit versuchen zu erklären!! Ein veränderter Zeitstempel ist keine Garantie dafür das ein Programm durchlaufen/geprüft wurde. Warum sich der Zeitstempel ändert obwohl das Programm nicht durchlaufen wurde kann keiner erklären.
Du kannst für Dich selbst aber leicht testen ob sich nur der Stempel ändert oder ob wirklich ein Durchlauf ausgelöst wurde. Füge in das betreffende Programm ein SONST ein. Damit muss zwingend bei JEDEM Durchlauf entweder ein DANN oder das SONST ausgeführt werden.
Homoran hat geschrieben:Der Timestamp ändert sich bei jedem Aufruf (=Aulösung)
Einspruch! Grundsätzlich sollte sich der Zeitstempel ändern sobald ein DANN oder SONST ausgeführt wurde. Oft aktualisiert sich der Zeitstempel auch bei einem Durchlauf ohne Aktion. Und in einigen Fällen ändert sich der Zeitstempel sogar im Takt der Zyklischen Statusmeldungen obwohl das Programm weder durchlaufen noch ausgeführt wurde. Ich erkenne auch nach vielen Tests keine eindeutiges Schema beim setzen des Zeitstempels.
Viele Grüße!
Jörg

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von Homoran » 07.04.2017, 14:58

manfredh hat geschrieben:die Erklärung reicht mir nicht
,
Böser Bube ;-)
manfredh hat geschrieben:und das Sonst ... wird nicht ausgeführt?
Auch dies wurde hier schon erklärt:

Das sonst wird nur dann ausgeführt, wenn das WENN ein false ergibt.
Wenn sich aber der Wert der Bedingung (true/false) nicht ändert passiert gar nichts.

Der Wert des Sensors interessiert nicht.


Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von Homoran » 07.04.2017, 15:00

JRiemann hat geschrieben:Einspruch!
Hier würde ich dir gerne Recht geben, wenn ich es nicht selber immer wieder anders beobachten würde :(
Für mich gilt daher die gemachte Aussage, auch wenn es nicht so sein sollte!

Immerhin hast du ja auch "zugegeben"
JRiemann hat geschrieben:Warum sich der Zeitstempel ändert obwohl das Programm nicht durchlaufen wurde kann keiner erklären.
;-)

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von JRiemann » 07.04.2017, 15:11

Es wird immer wieder anders beobachtet... Aber es ist eben nicht Grundsätzlich so! Und das ist der wichtige Unterschied!
Bei mir laufen z.B. 5 Programme mit identischem Aufbau, identischen Gerätetypen bei denen lediglich die Kanalnamen andere sind. Aber der Zeitstempel verhält sich bei jedem Programm anders obwohl sich alle Stempel synchron ändern müssten... unerklärlich...
Viele Grüße!
Jörg

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von nicolas-eric » 07.04.2017, 15:20

Das mit dem SONST einfügen habe ich grad mal gemacht, aber auch das SONST wird nicht ausgeführt, wenn sich der Status nicht ändert, sondern der selbe Status nochmal übertragen wird.

Das einfache Programm sieht so aus:

Wenn TFK offen (Änderung)
DANN Licht 1 an
SONST Licht 2 an

Mache ich die Tür auf, geht Licht 1 an, mache ich sie zu, geht Licht 2 an.
Ist die Tür jedoch zu und der TFK sendet nur seinen unveränderten Status, geht keins der Lichter an, obwohl die Uhrzeit der Statusmeldung im Zeitstempel des Programms steht.

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Verständnisfrage: laufender Start von Programmen

Beitrag von JRiemann » 07.04.2017, 15:41

Das bestätigt meine Behauptung das sich der Stempel teilweise ändert obwohl das Programm nicht ausgeführt oder ausgelöst wurde!!
Viele Grüße!
Jörg

Antworten

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