Ankündigung

Einklappen
Keine Ankündigung bisher.

Database: Zeitstempel manuell setzen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Database: Zeitstempel manuell setzen?

    Hallo,

    ein nächtlich ausgeführtes Script liefert von verschiedenen Websites kumulierte Werte des Vortages (24h, 0:00-23:59:59). Vor 1:00 morgens am Folgetag stehen die Werte aber leider nicht vollständig zur Verfügung, da diese durch die Websites auch erst aus verschiedensten externen Quellen zusammengetragen und aufbereitet werden müssen.

    Wenn nun die Werte um 1:00 abgerufen, in Items gestopft und somit in die Datenbank geschrieben werden, erhalten die Datenbankeinträge den jeweils aktuellen Zeitstempel ('heute 1:00:00'). Gewünscht wäre aber einer vom Vortag, z.B. 'gestern 23:59:59', da die Daten ja auch von gestern sind. db-Calls wie sum/min/max/avg/count und insbesondere Plots -z.B. Balkendiagramme mit den Tagesdaten der letzten 30 Tage- sind dadurch um jeweils einen Tag verfälscht.

    Gibt es im database-Plugin eine Möglichkeit, den Zeitstempel beim Schreiben in die Datenbank zu beeinflussen, oder kann man diesen gezielt nachträglich ändern? Oder andersherum gedacht: Wenn die Daten 'falsch' in der Datenbank stehen - kann man die Ergebnisse beim Datenabruf für diese konkreten Items (z.B. für einen sV-Plot) irgendwie modifizieren?

    /tom

    #2
    Das Thema ist IMHO für einige Anwendungen interessant, so zum Beispiel auch für Betreiber von Solaranlagen, die ihre Tages-Erträge darstellen wollen.
    Für die nachträgliche Korrektur der Zeitstempel in smartVISU gab es für eine solche Anwendung schonmal einen Hack im smartVISU Forum. Ich finde es aber sinnvoller, die Daten gleich an der Quelle richtig zu stellen und habe den Hack nicht in das Plot Widget aufgenommen.

    Laut README des Database Plugins gibt es die Methoden "dbplugin.insertLog()" und "dbplugin.updateLog()". Eine Logik, die verschiedene Werte des Vortags zusammenträgt, müsste also entweder die items gleich mit der insertLog()-Methode für 23:59:59 abspeichern, oder nachträglich mit der updateLog()-Methode den Zeitstempel und die Duration aktualisieren. Letzteres dürfte mühsam sein, da der Eintrag mit dem vorhandenen Zeitstempel angesprochen werden muss. D.h. den müsste man erst über ein Query ermitteln.

    Wäre es denkbar, dem item eine weitere Eigenschaft "dbTimestamp" zu geben, die defaultmäßig leer ist und die man auf einen beliebigen Zeitstempel setzen kann, bevor man den item-Wert aktualisiert? Das Plugin müsste dann "nur" den intern ermittelten Zeitstempel mit "dbTimestamp" überschreiben, falls die Eigenschaft nicht leer ist und anschließend die Eigenschaft wieder leeren. Wäre das eine ausreichende Skizze für einen Feature Request?

    Gruß
    Wolfram

    Kommentar

    Lädt...
    X