NEWS
Änderung Timestamp
-
Hallo, wie ist es möglich den Timestamp-Wert zu ändern ?
-
@dgr Am einfachsten indem der gleich Wert erneut geschrieben wird.
-
@haus-automatisierung
ich habe mich nicht korrekt ausgedrückt. Ich möchte einen Wert von gestern mit dem originalen Timestamp in eine andere Datenbank übernehmen. Wenn ich einfach nur den Wert übernehme, dann wird der Timestamp in die Zeit der Übernahme geändert. -
@dgr Achso - wie genau wird denn der Wert geschrieben? Per JavaScript (im JavaScript-Adapter) kann man den Timestamp auch manuell mitgeben.
setState('0_userdata.0.beispiel', { val: 42, ts: 1734424585000 });
-
@haus-automatisierung
ich muss leider zugeben, dass ich mich mit JavaScript nicht so auskenne.. Ich mache das alles mit Blockly.
Beispiel: aktualisiere xyz mit Wert von abc -
@dgr Für Blockly gibt es momentan keinen Baustein wo man einen Zeitstempel manuell übergeben kann. Das soll ja einfach gehalten sein.
Aber stell doch mal eine konkrete Frage wo es am Verständnis hängt. Du musst Dich ja nicht mit JavaScript auskennen, sondern nur die Objekt-ID anpassen und den Zeitstempel.
Ich dachte, hier geht es um eine einmalige Sache um einen Wert in die Datenbank zu bekommen. Für doch Dein Problem mal ganz genau aus - dann kann man auch konkreter helfen. Gerade, wenn Detailwissen fehlt.
-
@haus-automatisierung ich hatte mir sowas auch einmal gewünscht, da ich alte Zählerstände einlesen wollte. Da bin ich dann auch an den Zeitstempeln gescheitert.
-
@siggi0904 Woran denn genau? Klappt der vorgeschlagene Weg von mir nicht?
Das kann ja beliebig flexibel ausgestaltet werden. Man muss halt nur darauf achten, dass man das Datum in der richtigen Zeitzone definiert. Sonst landet man schnell bei UTC und hat 1-2 Stunden (je nachdem ob MEZ/MESZ) Abweichung.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date const d = new Date('2024-12-17T15:34:00Z'); // UTC!! setState('0_userdata.0.beispiel', { val: 42, ts: d.getTime() });
-
@haus-automatisierung naja mangels richtigen Workflow die Datensätze in die Datenbank zu bekommen, hatte ich das aufgegeben.
Ich hätte das gern per Blockly realisiert.
-
@haus-automatisierung
es ist kein wirkliches Problem für mich. Es geht eigentlich um die Darstellung in Grafana. Ich zeige dort den Gasverbrauch der letzten 7 Tage anhand der Daten um jeweils 23:59 des Vortages. Diese Darstellung ging bisher logischerweise nich aktuell für den laufenden Tag. Hier ändern sich die Werte nach einer von mir vorgegebenen Zeit. Ich habe für die tagesaktuellen Werte einen eigenen Datenpunkt mit Übergabe an influxdb2v erstellt, in den ich die aktuellen Werte des Tages eintrage. Für die Darstellung in Grafana lösche ich diese Datenbank mit dem Wert und trage anschließend den neuen aktuellen Wert ein. In Grafana wird dieser Wert natürlich nur als Punkt dargestellt, da es keinen Bezug zu einem vorhergehenden Wert gibt. Dieser vorhergehende Wert wäre der Wert des Vortages um 23:59 Uhr. Wenn ich diesen Wert und zusätzlich den jeweils aktuellen Wert in diese Datenbank eintrage, dann wird der Zeitstempel des Werts vom Vortag in den Zeitstempel des Eintrags geändert. Damit ist es so nicht möglich, eine Verbindungslinie zwischen dem letzten Wert (Vortag) zum aktuellen Wert darzustellen.Wie gesagt, es ist nicht wirklich ein richtiges Problem.
-
@dgr sagte in Änderung Timestamp:
Ich habe für die tagesaktuellen Werte einen eigenen Datenpunkt mit Übergabe an influxdb2v erstellt, in den ich die aktuellen Werte des Tages eintrage.
In dem Fall könntest Du entweder immer nur den letzten Wert je aggregiertem Zeitraum auswählen (last) oder den Wert immer wieder überschreiben. Das macht InfluxDB ja dann automatisch. Also den Zeitstempel für das Ende des Tages berechnen und diesen immer wieder setzen.
@dgr sagte in Änderung Timestamp:
In Grafana wird dieser Wert natürlich nur als Punkt dargestellt, da es keinen Bezug zu einem vorhergehenden Wert gibt.
Werte in InfluxDB stehen generell nie in Bezug zueinander. Oder was verstehe ich falsch.
-
@haus-automatisierung
Mit "Bezug zueinander" meinte ich nur, dass eine Linie vom vorhergehenden Wert zum folgenden Wert dargestellt wird in Grafana.
Meine Abfrage in Grafana sieht so aus:from(bucket: "iobroker_all") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "ViessmannGas" or r["_measurement"] == "Gasverbr" or r["_measurement"] == "Gas-aktuellerStand") |> filter(fn: (r) => r["_field"] == "value") |> truncateTimeColumn(unit: 1d)
Wobei hier "ViessmannGas" z.Zt. nicht dargestellt wird. Die gelbe Linie kommt von den Daten aus "Gasverbr" und der einzelne Punkt aus "Gas-aktuellerStand"