NEWS
SQL.0 loggt Daten viel zu oft
-
Hallo zusammen,
habe gerade mal die letzten Werte eines States bzgl. Logging mit sql.0 angeschaut und festgestellt, dass etwa jede Sekunde ein Wert geschrieben wird. Da es sich um einen Stromzähler handelt (also das Zählwerk, nicht der aktuelle Verbrauch), reicht es mir, wenn der Wert ein paar Mal am Tag aufgezeichnet wird. Jede Sekunde ist völlig übertrieben und müllt die DB zu …
Einstellungen sind:
- aktiviert: ja
- Änderungen aufzeichnen: nein
- Intervall aufzeichnen: 21600 (alle 6 Stunden)
- Speichern als: automatisch
- Entprellzeit: 100
- minimale Abweichung: 0
- keine automatische Löschung
Was mache ich da falsch?
SQL: V1.9.2
Admin: 3.5.10
Braucht Ihr noch mehr Daten, um etas sagen zu können?
Viele Grüße
Sneak-L8
-
reicht es mir, wenn der Wert ein paar Mal am Tag aufgezeichnet wird. `
Änderungen aufzeichnen: jaIntervall aufzeichnen: 0
Entprellzeit: 21600000 (6 Stunden)
-
@paul53: Nein!
Entprellzeit ist ein "Delay bis der Wert stabil ist", sich also nicht mehr ändert. Mit der Einstellung wird nur geloggt wenn der Wert mehr als 6h unverändert bleibt. Wenn er öfter geändert wird würde es immer weiter auf "Stabilität" warten und somit nie loggen.
Der Adapter hat faktisch kein "Den Wert nur alle 6h loggen" weil das komplett gegen den Sinn der Aufgabenstellung geht.
Im Standard loggt der Adapter jeden Wert, man kann es ggf auf "mindestens X Abweichung" konfigurieren dann werden weniger Werte geloggt. Das wäre vllt für dich eine Option. z.B. nur Loggen wenn die Abweichung >10 (kWh) ist.
"Intervall aufzeichnen" wird nur mit "Nur Änderungen loggen" beachtet und sorgt dafür das auch wenn es keine Änderung gibt der Wert mindestens alle X Zeit geloggt wird - das ist sinnvoll um die grafische Darstellung in Diagrammen zu optimieren.
-
Hallo Apollon77,
danke für die Erläuterungen. Sie wegen sehr hilfreich.
Wichtig ist der Punkt, dass das Intervall nur für „nur Änderungen aufzeichnen“ gilt.
Wenn ich den Delta-Wert also eher hoch setze und die Änderungen aufzeichne, dann hab ich letztlich auch da Intervall, das ich will.
Das Delta kann ich gleich noch dazu nutzen, größere Sprünge zusätzlich aufzuzeichnen.
Viele Grüße
Sneak-L8
-
"Intervall aufzeichnen" wird nur mit "Nur Änderungen loggen" beachtet und sorgt dafür das auch wenn es keine Änderung gibt der Wert mindestens alle X Zeit geloggt wird - das ist sinnvoll um die grafische Darstellung in Diagrammen zu optimieren. `
Schließt sich das nicht gegenseitig aus? Entweder ich logge in gleichen Zeitabständen, oder nur dann, wenn sich der Wert ändert.
-
> Schließt sich das nicht gegenseitig aus?
Nein, ich denke, es ergänzt sich. Ich will nur die Änderungen, aber (aus welchem Grund auch immer) zumindest alle x Stunden/Minuten/Sekunden einen Wert geloggt haben.Logische "Oder"-Verknüpfung, nicht "und" ;-).
-
Korrekt. Die Bezeichnung müsste anstelle "Intervall aufzeichen" eher "… aber minderstens loggen alle" heissen
Das ist dafür hut das man bei Werten die sich selten ändern sonst nahezu keine gescheite grafische Darstellung bekommt. Wenn sich der Wert im graphen Zeitraum nicht geändert hat ist nichts da was man anzeigen könnte
-
Das bedeutet ja, dass garnichts aufgezeichnet wird, wenn das Interval 0 ist und zusätzlich der Haken bei „Änderungen aufzeichnen“ nicht gesetzt ist?
Das finde ich irgendwie komisch.
-
Wenn der Haken bei „ nur Änderungen loggen“ nicht gesetzt ist wird jeder Wert geloggt.
Gesendet vom Handy …
-
Also dann bei jeder Aktualisierung des Datenpunktes?
-
Korrekt. Egal ob wert geändert oder gleich.
Gesendet vom Handy …
-
Danke für die Aufklärung.
-
Servus zusammen,
da mich das Thema SQL-Logging auch gerade beschäftigt - kurz eine Frage.
Fragt der SQL-Adapter einen Temperatur/Humidity Sensor dann auch viel öfter ab
als bei keiner Aufzeichnung?
Da müsste ja die Batterie extrem darunter leiden…
mfg
-
Der SQL-Adapter fragt gar nichts ab. Er hat nur den state abonniert und bekommt mit, wenn dort Werte (auch gleiche) geschrieben werden.
Die Werte werden nur vom Temperatur-Adapter gesetzt.
-
Der SQL-Adapter fragt gar nichts ab. Er hat nur den state abonniert und bekommt mit, wenn dort Werte (auch gleiche) geschrieben werden.
Die Werte werden nur vom Temperatur-Adapter gesetzt. `
Somit bleibt die Lauftzeit der Sensoren also gleich - egal ob geloggt oder nicht.Danke für die Aufklärung
-
@apollon77 @paul53 Ich muss dieses alte Thema wieder öffnen. Habe gerade festgestellt, dass sql.0 mal wieder jede Sekunde loggt anstelle nur alle Minute oder seltener.
Die Daten komemn von einem EnergyMeter, das seine Daten im Sekundentakt sendet.
Eingestellt habe ich:aktiviert: ja Änderungen aufzeichnen: ja trotzdem gleiche Werte aufzeichnen: 0 Speichern als: automatisch Entprellzeit: 60000 (alle Minute) minimale Differenz zum letzten Wert: 150 keine automatische Löschung
Neu habe ich aktiviert, keine Null- und 0-Werte zu loggen.
In den Verlaufsdaten sehe ich aber wie gesagt ca. jede Sekunde einen Eintrag mit Werten:
- 16:05:36 => 3482
- 16:05:35 => 3491,4
- 16:05:34 => 3484,60000000004
- 16:05:33 => 3483,4
- 16:05:32 => 3489,8
- 16:05:31 => 3487,10000000004
- 16:05:30 => 3473,4
Das sind ja deutlich geringere Abweichungen als 150 (W). Mache ich etwas falsch?
Der Datenpunkt ist definiert als
- Zustandstyp: Zahl
- Rolle: value
Im JSON ist es noch mal schön zusammengrfasst:
{ "type": "state", "role": "value", "common": { "name": "psurplus", "type": "number", "role": "value", "custom": { "sql.0": { "enabled": true, "changesOnly": true, "debounce": "60000", "maxLength": 10, "retention": 0, "changesRelogInterval": 0, "changesMinDelta": 150, "storageType": "", "aliasId": "", "counter": false, "ignoreZero": true, "ignoreBelowZero": false } } }, "native": {}, "_id": "sma-em.0.1901706890.psurplus", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1647874776659 }
Vielleicht hab ich auch einfach nur einen Denkfehler?
-
@sneak-l8 entprellzeit ist (und war es nicht nie!!!!) der logging Abstand!!!!!
Ja der „Bug“ ist immer noch da der hier Zuviel loggt. Ansonsten würdest du mit deiner Einstellung wohl nie auch nur einen Wert geloggt bekommen.
Entprellzeit bedeutet: logge nur wenn wert für diese Zeitspanne stabil - also gleich- ist!! -
@apollon77 Danke für die Info. Dann setze ich die Entprellzeit wieder nach unten (die Option, frühesten nach x Sekunden wieder zuloggen fände ich aber auch hilfreich
).
Und dass das zuviel-Loggen noch ein Bug ist, beruhigt mich dahingehend, dass ich doch nichts falsch eingestellt hab (von der Entprellzeit abgesehen
Bug ist aber in Anführungszeichen. Hab ich vielleicht dochwas falsch verstanden?
Denn durch minDelta = 150 sollte ja eigentlich nur bei großen Änderungen was geloggt werden. -
@sneak-l8 sagte in SQL.0 loggt Daten viel zu oft:
Denn durch minDelta = 150 sollte ja eigentlich nur bei großen Änderungen was geloggt werden.
ja!
-
@homoran aber warum werden die Daten dann alle paar Sekunden geschrieben, wenn sich die werte nur um ein paar Watt verändert haben?