DBLog Current in History schreiben

Begonnen von gent, 25 Mai 2022, 23:09:34

Vorheriges Thema - Nächstes Thema

gent

Hi,

ich habe in meiner Current-Table noch Werte, die einen ziemlich alten Timestamp haben. Wie kann ich denn dafür sorgen, dass die Current-Table-Rows in die History-Table übertragen werden? Oder muss ich das per insert into select... machen?

LG, Holger
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

gent

Hat niemand eine Antwort hierzu? Ich kann doch nicht der einzige sein, der das sieht?

LG
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

betateilchen

Falscher Forumbereich für Deine Frage und außerdem ist die Frage an sich sehr merkwürdig.
Warum sollten die Werte in der current-Tabelle nicht schon in der history-Tabelle vorhanden sein?
Wenn das wirklich so ist, wäre das ein inkosistenter Zustand und Du solltest die Fehlerursache dafür auf Deinem System suchen.

Generell sollten alle Werte, die in "current" stehen, auch in "history" vorhanden sein und müssen nicht manuell dorthin übertragen werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

gent

Wenn die Frage mal genau gelesen worden wäre, wäre sie auch nicht merkwürdig: Ich weiß, dass es ein inkonsistenter Zustand ist und ich bin mir auch bewusst, wie das passiert sein kann. Ich wollte nur wissen, ob es einen Befehl im DBLog Modul dafür gibt oder ob ich die Werte per "Insert into Select" in die history Tabelle übertragen muss (sofern sie mich überhaupt noch interessieren).

ZitatGenerell sollten alle Werte, die in "current" stehen, auch in "history" vorhanden sein und müssen nicht manuell dorthin übertragen werden.

Ich würde mir zur Verifizierung, dass es sich nicht alleine um meine current-Tabelle handelt, wünschen, dass andere sich mal die current Tabelle genauer ansehen. Da werde ich sicherlich nicht der Einzige sein, der da Einträge findet, die einen Timestamp haben, der älter ist als z.B. der aktuelle Tag.
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

betateilchen

Zitat von: gent am 01 September 2022, 20:08:21
Da werde ich sicherlich nicht der Einzige sein, der da Einträge findet, die einen Timestamp haben, der älter ist als z.B. der aktuelle Tag.

Da bist Du sicherlich nicht der Einzige, aber die Tatsache, dass der Timestamp in der current-Tabelle älter als der aktuelle Tag ist, ist an sich ja erstmal nicht falsch.

Die current-Tabelle enthält den aktuellsten Wert eines readings, der zuletzt geloggt wurde. Der bleibt so lange in der Tabelle, bis ein neuerer Wert kommt. Auch in meiner current-Tabelle gibt es Werte, die schon mehrere Monate "alt" sind. Für mich ist das völlig normal. Aber ich habe ja auch das Funktionsprinzip dieser Tabelle verstanden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: gent am 01 September 2022, 20:08:21
Ich wollte nur wissen, ob es einen Befehl im DBLog Modul dafür gibt oder ob ich die Werte per "Insert into Select" in die history Tabelle übertragen muss

Wenn überhaupt, würde ich eine solche Möglichkeit eher in DbRep suchen statt in DbLog. DbRep bietet zumindest die Möglichkeit, die current-Tabelle zu leeren oder auch die current-Tabelle mit einem Extrakt aus der history-Tabelle vorzubelegen. Außerdem kann DbRep auch SQL-Befehle direkt ausführen.

commandref lesen könnte helfen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Guybrush

also meinem verständnis nach geht es hier nur um eine einmalige Übertragung der Werte aus current nach history, da current nicht mehr benutzt wird?

dann ist das aber der falsche Ort hier und sollte direkt in der mysql shell gemacht werden.

deine überlegungen waren insoweit ja schon richtig:

insert into history select * from current;


sowas einmaliges in fhem umzusetzen dürfte um zig faktoren aufwendiger sein, dass man da nicht einmal drüber nachdenken sollte. sowas lohnt sich nur, wenn es wiederkehrend zu machen wäre, was aber von der dblog struktur her unsinnig wäre, da die werte ohnehin drin stehen sollten. wenn du nicht sicher bist, ob die werte in der history Tabelle nicht doch schon enthalten sind, dann müsstest du das noch mit einem left join auf die history table versehen


gent

Zitat von: betateilchen am 02 September 2022, 11:59:33
Da bist Du sicherlich nicht der Einzige, aber die Tatsache, dass der Timestamp in der current-Tabelle älter als der aktuelle Tag ist, ist an sich ja erstmal nicht falsch.

Die current-Tabelle enthält den aktuellsten Wert eines readings, der zuletzt geloggt wurde. Der bleibt so lange in der Tabelle, bis ein neuerer Wert kommt. Auch in meiner current-Tabelle gibt es Werte, die schon mehrere Monate "alt" sind. Für mich ist das völlig normal. Aber ich habe ja auch das Funktionsprinzip dieser Tabelle verstanden.

Ja, ich aber nicht. Daher die Frage im Anfängerbereich. Ich würde jetzt mal ganz provokant die Frage stellen: Wo bitte schön kann ich mich über das "Funktionsprinzip dieser Tabelle" informieren

Und hier sind wir wieder bei dem ewigen Problem von FHEM: "Wenn Du keine Ahnung hast, lies Dir doch einfach dröfltausend Forenbeiträge durch, dann checkst Du das schon irgendwann". Anstatt einmal zu jedem Modul eine vernünftige Erklärung zu schreiben.

Mir hätte einfach diese Information - nachzulesen z.B. in der Commandref - völlig gereicht:

Zitat
Die current-Tabelle enthält den aktuellsten Wert eines readings, der zuletzt geloggt wurde. Der bleibt so lange in der Tabelle, bis ein neuerer Wert kommt.

Warum steht so etwas nicht einfach mal in der Modulbeschreibung?
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

betateilchen

Zitat von: gent am 09 September 2022, 20:17:59
Mir hätte einfach diese Information - nachzulesen z.B. in der Commandref - völlig gereicht:

Warum steht so etwas nicht einfach mal in der Modulbeschreibung?

Tut es doch...

ZitatThe database contains two tables: current and history.
The latter contains all events whereas the former only contains the last event for any given reading and device.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!