NEWS
Objekt zu bestimmten Zeitpunkt Speichern
-
Hi, ich habe das pvforcast-modul im Einsatz. Wie bring ich dem System denn jetzt bei den 06:00:00 Uhr Wert mit 1,253kwh auch wirklich in der Influxdb Datebank um 06:00:00 zu speichern und nicht zum Zeitpunkt der Abfrage?
Ich hoffe ich habe mich verständlich ausgedrückt.
Grüße
Vince -
@derboehsevincent mit einem Skript und einem Zeitplan. Da kannst du genau die Zielseiten für eine Aktion einstellen
A.
-
hast du da mal ein Beispiel wie man in Blockly Datenpunkte in ne influxdb schreibt?
-
@derboehsevincent sagte in Objekt zu bestimmten Zeitpunkt Speichern:
wirklich in der Influxdb Datebank um 06:00:00 zu speichern und nicht zum Zeitpunkt der Abfrage?
Indem Du einfach das InfluxDB-Feature in den Instanzeinstellungen von PV-Forecast aktivierst... dann passiert das alles automatisch und die Datenpunkte werden "in die Zukunft" geschrieben. Hatte ich im Video dazu aber erklärt glaube ich
-
das hab ich aktiviert:
von alleine passiert da aber nichts bei mir. Hast du mal einen Link zu dem Video?
-
@derboehsevincent sagte in Objekt zu bestimmten Zeitpunkt Speichern:
von alleine passiert da aber nichts bei mir.
Die Daten sind bestimmt längst in der Datenbank. Die heißen dann aber (logischerweise) nicht wie die einzelnen Datenpunkte, sondern werden in einem gesammelt (gesamt und je Ausrichtung)
-
@haus-automatisierung
ich senke mein Haupt in Demut - habs gefunden. -
@derboehsevincent Glaub ich baue da mal noch eine Info ein, unter welchen Measurements das dann zu finden ist - bist nicht erste der darüber stolpert
-
@derboehsevincent sagte in Objekt zu bestimmten Zeitpunkt Speichern:
Hi, ich habe das pvforcast-modul im Einsatz. Wie bring ich dem System denn jetzt bei den 06:00:00 Uhr Wert mit 1,253kwh auch wirklich in der Influxdb Datebank um 06:00:00 zu speichern und nicht zum Zeitpunkt der Abfrage?
Ich hoffe ich habe mich verständlich ausgedrückt.
Grüße
Vincemal davon abgesehen das du ja eine andere Lösung gefunden hast hier für die Zukunft:
In eine Datenbank kann man nicht nur den Wert schreiben. Bei ioBroker hat jeder Wert bei History/MySQL oder InfluxDB auch einen Zeitstempel.
Der Trick beim schreiben in die Datenbank wäre also nicht nur den Wert zu schreiben sondern der Zeitstempel gleich mit.
Du kannst als um 12:00 Uhr Mittags auch Werte mit einem Zeitstempel um 6 Uhr morgens (in der Vergangenheit) und 6 Uhr Abends (in der Zukunft) schreiben.
Ich nutze PV-Forecast z.B. mit einer MySQL Datenbank und mach genau das -
@bananajoe Hallo, ich komm mal noch dazu, auch wenn der Thread schon etwas älter ist, meine Frage stellt sich aber ähnlich: Ich möchte zu einem bestimmten Zeitpunkt, also genau um 23:59 Uhr einen Wert in die influxDB schreiben und finde keine Möglichkeit, dies zu tun. Das bisher gesagte führt mich nicht ans Ziel oder ich habe es mangels Beispiel nicht verstanden.
Was habe ich vor?
Ich starte derzeit mit dem pvforecast-Modul und möchte am Tagesende einen Vergleich zwischen dem anfänglichen Forecastwert und dem späteren Istwert der PV-Produktion am Tagesende herstellen.
Am Ende wünsche ich mir eine Säulengrafik mit täglichen Gegenüberstellungen auf der Zeitachse. Beide Datenpunkt existieren natürlich, ich möchte aber z.B. nur den Tagesendwert der PV-Produktion (nennen wir ihn "PV-heute") abfragen, bevor der neue Tag beginnt und "PV-heute" um 0:01 ja überschrieben wird.
Beim Mitschreiben der Daten lässt sich ja eine Menge einstellen, eine Uhrzeit aber nicht. Denkbar ist aber auch, dass genau zum gewünschten Zeitpunkt kein Wert geschrieben wurde, sondern beispielsweise bereits um 23:58 Uhr.
Gibt es dafür eine Lösung? -
@nobbiman sagte in Objekt zu bestimmten Zeitpunkt Speichern:
Ich möchte zu einem bestimmten Zeitpunkt, also genau um 23:59 Uhr einen Wert in die influxDB schreiben und finde keine Möglichkeit, dies zu tun.
Einfach mit
sendTo
an die influxdb Instanz: https://github.com/ioBroker/ioBroker.influxdb?tab=readme-ov-file#storestate -
@haus-automatisierung Danke für die schnelle Antwort, da bin ich aber gespannt, ob ich aus der Quellenangabe schlau werde, ich werde es aber versuchen. Danke für die schnelle Unterstützung!
-
@nobbiman Mit dem generischen sendTo Blockly-Baustein und den Bausteinen für Objekte kommt man da recht schnell zum Ziel mittlerweile. Muss also nicht in JavaScript sein.
-
@haus-automatisierung Danke, bin schon dran, denke, das müsste klappen.
-
@haus-automatisierung Ich habe doch mehr Probleme, mit Blockly-Bausteinen ans Ziel zu kommen.
Ich hab mal ein paar Bausteine zusammnegebastelt, in meiner Datenbak taucht mein neuer Datensatz "PVtag" nicht auf.
Hier mein Ansatz - einer von vielen:
Was fehlt denn da noch? Finde ich den Datensatz dann nur in der Datenbank?
Weitere Frage: wie bekomme ich den Zeitstempel z.B. auf den Zeitpunkt der Abfrage? -
@nobbiman sagte in Objekt zu bestimmten Zeitpunkt Speichern:
Was fehlt denn da noch?
Keine Ahnung was die Funktion genau da macht (was steht da drin?). Die brauchst Du ja eigentlich nicht. Das leere sendTo an
influxdb.0
ist ja auch wenig zielführend. -
Am Ende musst Du doch nur die Struktur aus der Doku nachbauen:
Habe ich ja schon öfter ausführlich erklärt. Gern mal reinschauen.
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="sendto_custom" id="vYj7*qr_)Kt8ujY-LU|C" x="-62" y="288"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="id,state"></mutation> <field name="INSTANCE">influxdb.0</field> <field name="COMMAND">storeState</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text" id="iV%e!=QZ0qUy{tTxN^Q$"> <field name="TEXT">bla.bla.bla</field> </shadow> </value> <value name="ARG1"> <shadow type="text" id="n[O=eUR5XOaJ*}h(AM4q"> <field name="TEXT"></field> </shadow> <block type="object_new" id="sF+Q/RpoVjpFdFALV{r8"> <mutation xmlns="http://www.w3.org/1999/xhtml"> <attribute id="ATTR_0" name="ts"></attribute> <attribute id="ATTR_1" name="val"></attribute> <attribute id="ATTR_2" name="ack"></attribute> <attribute id="ATTR_3" name="from"></attribute> </mutation> <value name="ATTR_0"> <shadow type="text" id="#SVhaEl-;bp~B+IGUV]4"> <field name="TEXT"></field> </shadow> <block type="time_get" id="Idi0.dT@~d;8|=HW9#9+"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> <value name="ATTR_1"> <shadow type="text" id="nJ~fU/AB1:9igOBsKX*t"> <field name="TEXT"></field> </shadow> <block type="math_number" id="e=IIr;*7nLBq]zsbU@~A"> <field name="NUM">12345</field> </block> </value> <value name="ATTR_2"> <shadow type="text" id="!K/Q}@dZJqu/=P-*/_Oh"> <field name="TEXT"></field> </shadow> <block type="logic_boolean" id="X5NuTg=%t!+tbVu+3k%z"> <field name="BOOL">TRUE</field> </block> </value> <value name="ATTR_3"> <shadow type="text" id="d4~f,%Bzatt18Ofu-?-)"> <field name="TEXT">system.adapter.javascript.0</field> </shadow> </value> </block> </value> </block> </xml>
-
@haus-automatisierung sagte in Objekt zu bestimmten Zeitpunkt Speichern:
Habe ich ja schon öfter ausführlich erklärt. Gern mal reinschauen
Ich habe mir das mal angeschaut und ein wenig mehr von der Struktur verstanden. Die Umsetzung zu Blockly will dennoch noch nicht gelingen.
Mir ist noch nicht ganz klar, welche Bedeutung dieses Attribut "from" (ganz unten) hat. Ist es der Datensatz PVtag, den ich oben unter DataInfluxDB erstellt habe oder brauche ich den oberen Teil gar nicht und "from" ist der Wert (eToday), den ich schreiben will?
Einige Zeit später:
Ich denke, so sollte es im ersten Ansatz passen:
Die "id" ist das measurement, aber wo kann ich den Wert benennen? Im Moment erscheint in meiner Datenbank nur "value" ohne Bezeichnung?
Will ich mehrere Werte zum gleichen Zeitpunkt speichern bleibt die Frage, wie ich die in Blockly einbauen kann, damit sie genau zum gleichen Zeitpunkt abgespeichert werden? -
@nobbiman sagte in Objekt zu bestimmten Zeitpunkt Speichern:
Will ich mehrere Werte zum gleichen Zeitpunkt speichern bleibt die Frage, wie ich die in Blockly einbauen kann, damit sie genau zum gleichen Zeitpunkt abgespeichert werden?
Na einfach als Array übergeben. Siehe Doku. Und den Timestamp vorher in eine Variable schreiben und überall in den Objekten verwenden.
-
@haus-automatisierung sagte in Objekt zu bestimmten Zeitpunkt Speichern:
Array übergeben. Siehe Doku
Ich stelle mich zu unbeholfen an, da ich nur wenig Erfahrung mit Blockly, geschweige denn mit Javscript habe. Meine Fragen sind grundlegender Art: Ich hatte in der Doku gesehen, wie das Query verändert wird (Thema Array), das war mir aber bereits bekannt. In meinem Blockly-Modell kann ich aber keine Änderung in Java erstellen, da beim Switchen auf Javascript der Code schreibgeschützt ist. Wo sollte ich das Array erstellen? Wahrscheinlich stelle ich mich nur dumm an, hoffe aber dennoch auf Hilfe.
Ich kann aber auch 2 verschiedene Anweisungen für 2 Datenpunkte mit Blockly wie oben angezeigt erstellen, ich dachte es geht eleganter.
Es bliebe aber dann immer noch die Frage der unterschiedlichen Feldbezeichnungen, wo kann ich die festlegen?Ergebnisnachtrag:
Das ist jetzt meine Lösung, vielleicht geht es auch eleganter, aber nicht mit meinen Kenntnisstand!
Danke für die Unterstützung.