NEWS
[gelöst] Zeitstempel anpassen für Vergleich
-
Hallo Zusammen,
folgendes Problem. Ich möchte die Zeitstempel "letzte Änderung" von zwei Werten miteinander vergleichen und wenn diese gleich sind etwas ausführen.
Problem ist, dass die Zeitstempel zu genau sind und das damit unmöglich ist.
Gibt es eine Möglichkeit die Zeit auf Sekunden aufzurunden um die Werte dann miteinander vergleichen zu können?
Danke und Gruß,
Claus
-
@claus1985-0 du brauchst doch nur auf eine Differenz zwischen +/- xyz Millisekunden zu prüfen
Betrag von (TSa-TSb) < x msec -
@homoran Ich glaube ich verstehe die Logik hinter dem "letzte Änderung" Wert noch nicht.. Wenn ich bei den Objekten gucke steht da im Klartext der letzte Änderungszeitpunkt und der unterscheidet sich zwischen den beiden Werten nur in Millisekunden:
Wenn ich mir die Werte im Debug ausgeben lasse, sind die allerdings Grund verschieden:
-
@claus1985-0 sagte in Zeitstempel anpassen für Vergleich:
Wenn ich mir die Werte im Debug ausgeben lasse, sind die allerdings Grund verschieden:
das ist der Unixtimestamp in Millisekunden (seit dem 01.01.1970)
die musst du subtrahieren und erhältst eine Differenz in MillisekundenMöglich, dass ich nicht alles richtig entziffern konnte.
bitte keibe Screenshots von code
Diesen als Text in code-tags posten! -
@homoran Hm irgendwie scheint da was in Blockly falsch zu laufen..
Ich verwende folgenden Code:on({ id: 'loxone.0.1add0b61-0042-12f2-ffff59e675957bea.AI6.rgb' /* Alle Lampen in WZ, EZ u. Flur EG: Stehlampen EZ: RGB */, change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; console.warn(getState('loxone.0.1add0b61-0042-12f2-ffff59e675957bea.AI6.level').ts); });
Wenn ich im Objekte Browser gucke, zeigt er mir die richtige Zeit an, wenn ich den Unix Timestamp umwandle ist der Timestamp 3 Minuten alt..
Gibt es da etwas zu beachten was ich übersehe?
-
@claus1985-0 said in Zeitstempel anpassen für Vergleich:
on({ id: 'loxone.0.1add0b61-0042-12f2-ffff59e675957bea.AI6.rgb' /* Alle Lampen in WZ, EZ u. Flur EG: Stehlampen EZ: RGB */, change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
console.warn(getState('loxone.0.1add0b61-0042-12f2-ffff59e675957bea.AI6.level').ts);
});Dir ist aber schon bewusst, dass du den Zeitstempel von .level nur dann holst, wenn sich .rgb geändert hat? Sind 2 verschiedene Datenpunkte!
-
@homecineplexx Hab den Fehler gefunden... Das Skript hat die Werte bei Veränderung quasi sofort gelesen. Das Problem war, dass der Adapter der die Werte liefert 50ms Zeit benötigt um die Werte zu aktualisieren. D.h. das Skript hat immer den vorherigen Wert gegriffen weil der Adapter zu langsam war.. Hab nun ein Delay von 50ms eingebaut und es funktioniert wie es soll.