Mit GetSnapshotChanges(0) lese ich den aktellen TimeStamp aus (z.B 600).
Wenn ich jetzt GetSnapshotChanges(600) aufrufe bekomme ich alle Ereignisse seit dem TimeStamp 600.
Das funktioniert.
Verändere ich ein Relais funktioniert GetSnapshotChanges(600).
Verändere ich aber ein Binäreingang and bekomme ich von GetSnapshotChanges(600) nichts mehr zurück!!!
Hat sich etwas an der Funktion GetSnapshotChanges() geändert?
Danke.
Veränderst oder aktualisierst du es nur? Damals gab es noch VM_CHANGED… ich glaube seit der 4.0 gibt es nur noch VM_UPDATE und einer der Daten ist das flag ob eine Änderung vorlag.
Ich verändere es, zur Zeit nur in IP Symcon über Simulation.
Muss so einiges auf IP Symcon 4.2 portieren und testen bevor es zum Kunden geht.
Bei den Relais funktioniert es und alle anderen LCN Werten (Temperatur/Ausgang) auch.
Tipp: Schau dir das WebFront an und öffne den Entwicklermodus. Dort in der Konsole siehst du alle relevanten Änderungen der Variable… Wenn es dort auftaucht, muss es auch bei dir auftauchen. Ebenfalls: Wenn es in der Konsole auftaucht, dann kam es auch über den Rückkanal.
Ich arbeite nicht mit dem WebFront. Leider weiß ich auch nicht wie ich in den Entwicklermodus komme.
In IP Symcon verändere ich den Status des Binäreingang und in IP Symcon wird der Status auch geändert.
Nur wenn ich mit GetSnapshotChanges() diese Status Änderung auslesen will kommt von der Funktion nichts zurück.
Die funktion gibt erst wieder die Ereigniss nach der Status Änderung aus.
Beispiel:
GetSnapshotChanges(600); => Bekomme alle Ereignisse
Veränderung des Binäreingang
GetSnapshotChanges(600); => Bekomme nichts zurück
GetSnapshotChanges(650); => Bekomme alle Ereignisse
Die Ereignisse vor der Veränderung (mit der Veränderung) sind weg.
Wie geschrieben bei Relais Ausgängen und anderen LCN Werten ist das Verhalten nicht zu beobachten.
Wenn du bei 1. was zurück bekommst, bekommst du bei 3. auch was zurück. Nämlich mindestens die selben Elemente von 1. und noch mehr, falls mehr Änderungen passiert sind.
Sofern der Puffer (Default: 8192) Elemente nicht überläuft, haben zwei aufrufe mit identischem Parameter, mindestens den selben Inhalt ab der von dir angegebenen MessageID.
Bist du dir sicher, dass du dir die echten Daten direkt vom SnapshotChanges ansiehst und nicht irgendwie eine Funktion dazwischen hast, die da was verarbeitet/filtert?
Ja genau das ist das Problem! Nach einer Änderung des LCN Binäreinganges kommt bei Punkt3 nichts mehr zurück (TimeStamp liegt vor der Veränderung).
GetSnapshotChanges(TimeStamp); => Bekomme alle Ereignisse 2. Veränderung des Binäreingang
GetSnapshotChanges(TimeStamp); => Bekomme nichts zurück
GetSnapshotChanges(TimeStamp+50); => Bekomme alle Ereignisse
Ich mache folgendes:
$TimeStamp =600;
$msg_json = GetSnapshotChanges($TimeStamp);
print_r($msg_json);
Habe Gestern nochmal einige Sachen getestet.
Wenn ich eigene Variablen anlege bekomme ich nach Veränderung dieser Variable immer etwas von GetSnapshotChanges(TimeStamp); zurück. Funktioniert.
Habe LCN Komponenten über LCN_PCHK angeschlossen.
Relais, Target Tempertur und LCN Variablen physikalisch geändert GetSnapshotChanges(TimeStamp); funktioniert.
4. Binäreingang verändert dann GetSnapshotChanges(TimeStamp); aufgerufen => kommt nichts zurück.
Erst wenn der TimeStamp > der Binären Veränderung ist bekomme ich etwas zürück (z.B. GetSnapshotChanges(TimeStamp+50)
Liegt der TimeStamp vor der Veränderung des Binäreinganges kommt nichts zurück.
Liegt der TimeStamp nach der Veränderung des Binäreinganges bekomme ich alle Ereignisse ab dem TimeStamp.
Es sieht so aus als wenn eine Veränderung eines LCN Binäreingangs etwas in GetSnapshotChanges() kaputt macht.
Kannst du mir ein Beispiel bauen, womit ich das nachstellen kann?
Du hast mir jetzt nämlich drei mal das selbe erklärt, aber dem Problem sind wir bisher nicht näher gekommen.
Und: Da die Konsole alles korrekt anzeigt, machst du irgendetwas falsch. Ohne konkretem Beispiel glaube ich nicht, dass wir voran kommen.
Um noch mal aufs WebFront zu kommen. Im Chrome ist der Entwicklermodus mit F12 zu erreichen. Dort willst du mal schauen, ob deine VariablenID mit dem Wert auftaucht… Die Variable muss dafür im WebFront auch sichtbar sein!
Dann habe ich Dir eine Test Script programmiert, siehe Anhang. TestScript.ips.txt (905 Bytes)
Hier gebe ich in einer while Schleife den Timestamp von GetSnapshotChanges(FirstTimeStamp) aus.
Wenn ich die Binärvariable geändert habe kommt nichts mehr
und im Output Fenster kommt eine Notice, siehe Bilder.
Leider das gleiche Verhalten:
Wenn ich die Binärvariable geändert habe kommt von der Funktion nichts mehr zurück
und im Output Fenster kommt eine Notice, siehe Bilder.