Hallo zusammen!
Hat jemand hier die Anwesenheitssimu von Enertex (erfolgreich) am laufen?
Ich habe sie schon eine Weile eingerichtet - nutze sie aber nicht wirklich häufig. Das einzige was mir bisher aufgefallen war ist, das scheinbar irgendwas passiert, nur nicht das was ich erwarte.
Somit hab ich mit die lib jetzt mal angeschaut und verstehe nicht wirklich wie die überhaupt funktionieren soll:
Laut Handbuch S. 109 "CodeTeil 1" wird nacheinander getestet ob die potentiell zu simulierende GA in der Liste ist.
Dummerweise besteht aber jeder einzelne test aus einem IF-Else konstrukt, womit also in jedem Fall Sim_MyGA verändert wird - und somit überhaupt nur der letzte Makroaufruf überhaupt Wirkung hat.
Vieleicht verstehe ich ja da irgendeine Funktionalität in der Makrosprache nicht,
aber nach meinem Verständniss kann das Makro so gar nicht funktionieren:
Was ich da sehe:
Nach dem Ablauf des Schedulers entscheiden nacheinander die Rec_GA aufrufe (ja, ich weiß - es ist eigentlich kein Aufruf), ob die zuletzt empfangene GA einer zu loggenden entspricht ODER NICHT.
Letzteres sorgt dafür das in jedem Fall alle zuvor getroffenen Entscheidungen diesbezüglich wieder verworfen werden, und somit immer das letzte Rec_GA entscheidend ist.
Desweiteren sehe ich da ein noch eine Inkonsistenz im Ablauf:
Die "Datenaufbereitung" zum Speichern (Dies geschieht später im InternalSchedulerW) passiert nur dann wenn ein event(readrawknx) erfolgt ist.
Das passt so nicht, denn das Speichern geschieht so zwangsläufig immer in zwei Schedulerzyklen nach folgendem Ablauf:
- 1. SchedulerZyklus: RawMessage wird empfangen, die GA extrahiert.
- Abarbeitung der einzelnen Rec_GA fälle
- 2. Scheduler Zyklus: Die Rohdaten werden aufgearbeitet und später in InternalSchedulerW gespeichert.
ABER: Wie bereits gesagt erfolgt auch diese Aufbereitung nur nach dem receive-event, d.h. Nachdem Nachricht1 empfangen wurde - und festgestellt wurde das diese zu speichern ist wird zunächst auf den Empfang von Nachricht2 gewartet.
Tja, dummerweise werden bei diesem Empfang allerdings die Empfangenen Daten von Nachricht2 überschrieben. Somit wird also jetzt der Inhalt von Nachricht 2 gespeichert .....
DAS deckt sich durchaus mit meiner Beobachtung das die Anwesenheitssimulation beim Replay schon "irgendwas" macht, aber irgendwie nichts mit den GA's die eigentlich zu simulieren wären.
Wenn obiges zutrifft wäre das auch kein Wunder, denn es wird ja das Telegram abgespielt das NACH der eigentlich interessanten GA empfangen wird.
DAS kann dann wiederum alles mögliche sein ...
Meiner Meinung nach muss zum Einen der ELSE-Zweig in Rec_GA weg,
zum anderen gehört in Scheduler_2Wochen der "if Sim_MyGA then {" - zweig aus dem event-Zweig raus.
Sehe ich da was falsch ?
Meinungen?
Hat jemand hier die Anwesenheitssimu von Enertex (erfolgreich) am laufen?
Ich habe sie schon eine Weile eingerichtet - nutze sie aber nicht wirklich häufig. Das einzige was mir bisher aufgefallen war ist, das scheinbar irgendwas passiert, nur nicht das was ich erwarte.
Somit hab ich mit die lib jetzt mal angeschaut und verstehe nicht wirklich wie die überhaupt funktionieren soll:
Laut Handbuch S. 109 "CodeTeil 1" wird nacheinander getestet ob die potentiell zu simulierende GA in der Liste ist.
Dummerweise besteht aber jeder einzelne test aus einem IF-Else konstrukt, womit also in jedem Fall Sim_MyGA verändert wird - und somit überhaupt nur der letzte Makroaufruf überhaupt Wirkung hat.
Vieleicht verstehe ich ja da irgendeine Funktionalität in der Makrosprache nicht,
aber nach meinem Verständniss kann das Makro so gar nicht funktionieren:
Was ich da sehe:
Nach dem Ablauf des Schedulers entscheiden nacheinander die Rec_GA aufrufe (ja, ich weiß - es ist eigentlich kein Aufruf), ob die zuletzt empfangene GA einer zu loggenden entspricht ODER NICHT.
Letzteres sorgt dafür das in jedem Fall alle zuvor getroffenen Entscheidungen diesbezüglich wieder verworfen werden, und somit immer das letzte Rec_GA entscheidend ist.
Desweiteren sehe ich da ein noch eine Inkonsistenz im Ablauf:
Die "Datenaufbereitung" zum Speichern (Dies geschieht später im InternalSchedulerW) passiert nur dann wenn ein event(readrawknx) erfolgt ist.
Das passt so nicht, denn das Speichern geschieht so zwangsläufig immer in zwei Schedulerzyklen nach folgendem Ablauf:
- 1. SchedulerZyklus: RawMessage wird empfangen, die GA extrahiert.
- Abarbeitung der einzelnen Rec_GA fälle
- 2. Scheduler Zyklus: Die Rohdaten werden aufgearbeitet und später in InternalSchedulerW gespeichert.
ABER: Wie bereits gesagt erfolgt auch diese Aufbereitung nur nach dem receive-event, d.h. Nachdem Nachricht1 empfangen wurde - und festgestellt wurde das diese zu speichern ist wird zunächst auf den Empfang von Nachricht2 gewartet.
Tja, dummerweise werden bei diesem Empfang allerdings die Empfangenen Daten von Nachricht2 überschrieben. Somit wird also jetzt der Inhalt von Nachricht 2 gespeichert .....
DAS deckt sich durchaus mit meiner Beobachtung das die Anwesenheitssimulation beim Replay schon "irgendwas" macht, aber irgendwie nichts mit den GA's die eigentlich zu simulieren wären.
Wenn obiges zutrifft wäre das auch kein Wunder, denn es wird ja das Telegram abgespielt das NACH der eigentlich interessanten GA empfangen wird.
DAS kann dann wiederum alles mögliche sein ...
Meiner Meinung nach muss zum Einen der ELSE-Zweig in Rec_GA weg,
zum anderen gehört in Scheduler_2Wochen der "if Sim_MyGA then {" - zweig aus dem event-Zweig raus.
Sehe ich da was falsch ?
Meinungen?
Kommentar