Verständnisfrage: laufender Start von Programmen
Moderator: Co-Administratoren
-
- 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
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.
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.
-
- 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
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.
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.
Re: Verständnisfrage: laufender Start von Programmen
War doch schon ganz gutmanfredh hat geschrieben:Ich finde, dass da jetzt mal einer eingreifen sollte, der die Logik besser versteht, als ich.
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!
-
- 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
Hallo Rainer,Homoran hat geschrieben:War doch schon ganz gutmanfredh hat geschrieben:Ich finde, dass da jetzt mal einer eingreifen sollte, der die Logik besser versteht, als ich.
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)
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.
Re: Verständnisfrage: laufender Start von Programmen
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!
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.
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".
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.
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.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.
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.
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: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.
Naja, das ist etwas verwirrend und missverständlich geschrieben.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.
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".
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.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.
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.
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.Homoran hat geschrieben:Der Timestamp ändert sich bei jedem Aufruf (=Aulösung)
Viele Grüße!
Jörg
Jörg
Re: Verständnisfrage: laufender Start von Programmen
,manfredh hat geschrieben:die Erklärung reicht mir nicht
Böser Bube
Auch dies wurde hier schon erklärt:manfredh hat geschrieben:und das Sonst ... wird nicht ausgeführt?
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!
Re: Verständnisfrage: laufender Start von Programmen
Hier würde ich dir gerne Recht geben, wenn ich es nicht selber immer wieder anders beobachten würdeJRiemann hat geschrieben:Einspruch!
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!
Re: Verständnisfrage: laufender Start von Programmen
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...
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
Jörg
-
- 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
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.
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.
Re: Verständnisfrage: laufender Start von Programmen
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
Jörg