NEWS
last change timestamp javascript (für node-red)
-
gibt es eine Möglichkeit in javascript (für node.red) den Zeitpunkt der letzten Änderung eines Datenpunktes abzufragen.
Das System "weiss" das genau weil in der Objektliste wird die Zeit angezeigt. -
Ich lasse mir mit dem "ioBroker get" Node das ganze Objekt geben und werte dann per JSONata ($number($lookup(payload, "ts")) das Attribut "ts" aus. Das beantwortet zwar die Frage nicht 100%, ist aber EINE Lösung.
Per Javascript dann wahrscheinlich
var obj = JSON.parse(<payload>)
var timestamp=obj.tsoder so ähnlich.
M.
-
@marc-berg said in last change timestamp javascript (für node-red):
Ich lasse mir mit dem "ioBroker get" Node das ganze Objekt geben und werte dann per JSONata ($number($lookup(payload, "ts")) das Attribut "ts" aus. Das beantwortet zwar die Frage nicht 100%, ist aber EINE Lösung.
M.
Ich dachte es ist unnötig "handisch" den Zeitpunkt festzuhalten wenn das System den Wert im Bauch hat oder? Ich setze die Werte im einem script. Könnte also den Zeitpunkt dort speichern; das braucht Rechenzeit und Speicher für eine Info die vom System schon gespeichert wird
-
@marc-berg Findest Du den Ansatz sinnvoll, Oder Sollte man die Zeit "zu Fuß händisch" festhalten.
-
Ich verstehe die Frage nicht wirklich. Das Attribut "ts" ist doch genau die Zeit (in Unixzeit), die auch in der Oberfläche als Zeitstempel angezeigt wird. Da muss ich nix händisch speichern.
-
@marc-berg Hallo Marc: Die Frage ist wie kann ich auf "ts" zugreifen. (bin zwar kein Anfänger aber habe meine Kenntnisse mit nicht den "zeitgemäßen" Systeme gemacht. Habe mit javascript einige ganz tolle Funktionen realisiert. Bin echt begeistert. Aber mein Wissen hat eben "Grenzen"
habe so gemacht schein aber nicht richtig zu sein
sensor {};
.....
sensor.val = msg.payload[i].val;
change = JSON.parse(msg.payload[i].val);
timechange = change.ts; -
var ts = {payload:msg.payload.ts};
oder
var ts = {payload:msg.timestamp};
Bin aber kein großer Programmierer, versuche möglichst alles mit den Nodes und max. mit JSONata zu lösen.
In diesem Beispiel prüfe ich täglich, ob ggf. einer von zwei Sensoren länger als 50h keine Daten geliefert hat (ich werte also "ts" aus) und lasse mich in diesem Fall benachrichtigen.
-
@marc-berg Hi Marc
Thank you for quick response. it worksthis is my code thank you for helping: (two different formats for testing)
// --- sensor.neulcT = (new Date(msg.payload[i].lc)).toLocaleTimeString(); sensor.neulc = (new Date(msg.payload[i].lc)).toLocaleString();