Benachrichtigungen
Alles löschen

Mit SQL noch mehr Daten in Home Assistant nutzen

21 Beiträge
4 Benutzer
0 Reactions
550 Ansichten
Beiträge: 6
(@jove02)
Active Member
Beigetreten: Vor 3 Monaten

Hallo Olli

vielen Dank, das war es

Jürgen

Antwort
Beiträge: 5
(@markus)
Active Member
Beigetreten: Vor 1 Monat

Hallo Olli,

ich habe zwei Anwendungsfälle, die ich separat poste.

Anwendungsfall 1: Ich lese meinen Stromzähler mit einen IR Kopf und Tibber aus. Beide Zählerstände landen in HA. Aus mir nicht erklärlichen Gründen, waren für die Einspeisewerte vom Zähler nur die letzten 3 oder 4 Monate in HA. Die Tibber Werte waren aber durchgängig vorhanden.

Hast Du eine Idee, wie man das versehentlich hinbekommt? Im SQLite Web habe ich bewusst nur Select Statements ausgeführt, aber viel in den Developertools HA unter die Haube geschaut.

Die Werte vom Tibber (Medadata_id 179) habe ich über INSERT INTO auf den Zähler (Metadata_id 168) übertragen. Da noch Werte vorhanden waren, nur die vor dem ersten start_ts Eintrag für ID 168

INSERT INTO statistics (created,start, mean, min, max, last_reset, state, sum, metadata_id, created_ts, start_ts, last_reset_ts)
SELECT
  created,
  start,
  mean,
  min,
  max,
  last_reset,
  state,
  sum,
  168 AS metadata_id,
  created_ts,
  start_ts,
  last_reset_ts
FROM statistics
WHERE metadata_id = 179 AND start_ts < 1765400000.0 AND true

Grüße

Markus

Antwort
1 Antwort
 Olli
Admin
(@olli)
Beigetreten: Vor 10 Jahren

Mitglied
Beiträge: 706

@markus Verstehe ich dich richtig, dass deine eigentliche Frage ist, warum die Daten für einen Zeitraum weg sein können?

Und wenn ich es weiter richtig verstanden habe, hast du es durch den INSERT geheilt?

Antwort
Beiträge: 5
(@markus)
Active Member
Beigetreten: Vor 1 Monat

Hallo Olli,

hier mein zweiter Fall, und ich knacke noch an der Nuss, bei dem Du mir vielleicht helfen kannst. 

Mein Stromzähler hat sich über einen Zeitraum von 3 Monaten verschluckt und die Werte um 6 stellen nach Links verschoben. Die richigen Werte liefert mir Tibber.

Mit einem reinen Insert ist es nun nicht mehr getan, weil ja Werte vorhanden sind, die aktualisiert werden müssen.

 

Hier die fehlerhaften Werte aus "statistics" für Sensor 167

state      sum                metadata_id  start_ts
4807.297   5650.215391840034      167      1714208400.0
0.048      5650.263391840033      167      1714212000.0
0.048      5650.263391840033      167      1714215600.0
0.048      5650.263391840033      167      1714219200.0
0.048      5650.263391840033      167      1714222800.0

Hier die richtigen Werte aus "statistics" für Sensor 178

state      sum        metadata_id  start_ts
4807.297   1531.3169      178      1714208400.0
4807.317   1531.337       178      1714212000.0
4807.317   1531.337       178      1714215600.0
4807.374   1531.3939      178      1714219200.0
4807.418   1531.4379      178      1714222800.0

Die Abfrage müsste über eine virtuelle Zwischentabelle funktionieren, bei der die o.g. Tabellen erzeugt werden und dann die Werte mit dem 178 Wert aktualisiert, der den gleichen start_ts Wert hat. Das bekomme ich bisher leider nicht hin.

Update 167.state WHERE 167.start_ts=178.start_ts ist.

 

Wie berechne ich zudem aus den state-werten die richtige Summe in Spalte "sum"? Das Energy Dashboard hat bisher am Anfang und Ende meiner SQL Korrketuren einen Peak. Diese habe ich manuell in der Statistik korrigiert. Die richtigen Werte für die jeweilige Stunde habe ich ja im Sensor mit den richtigen Daten.

 

Danke und Grüße

Markus

 

Antwort
3 Antworten
 Olli
Admin
(@olli)
Beigetreten: Vor 10 Jahren

Mitglied
Beiträge: 706

Hi @markus 

eine Verständnisfrage vorweg: Wieso ist der Summenwert von 178 kleiner, als die Einzel-States jeweils? Also ist da nicht ggf. noch mehr "schief"?

Für 167 willst du State jeweils mit dem gem. start_ts passenden State von 178 überschreiben/korrigieren? Und sum von 167 soll dann dynamisch berechnet werden?

Sorry für die Rückfragen, aber ich durchblicke deinen Plan noch nicht so genau...

VG

Olli

 

Antwort
(@markus)
Beigetreten: Vor 1 Monat

Active Member
Beiträge: 5

@olli Keine Ahnung, wie sich der Summenwert bildet. Ich vermute dass die Summe zum Zeitpunkt t0 = Inbetriebnahme auf Null steht. Der Zähler aber schon bei ~3500 stand.

Korrekt. Zum Zeitpunkt x soll der 178er wert in den 167er Wert geschrieben werden.

Ich habe keine Ahnung wie sum sich berechnet und welchen Effekt sie auf das Energy-Dashboard hat. Das wäre erstmal sekundär. Vermutlich gibt es ein paar Ausreißer beim Übergang. Aber das schauen wir dann.

Hier der Screenshot meines HA: das gelbe muss ins blaue 😉

image

Danke und Grüße

Markus

Antwort
(@markus)
Beigetreten: Vor 1 Monat

Active Member
Beiträge: 5

Ich hab grad geschaut: die Summe bildet sich ab dem Zeitpunkt der Inbetriebnahme des Sensors. Der IR-Leser läuft schon länger als der Tibber Pulse.

Die Neuberechnung macht das vermutlich komplizierter, weil man nun die Differenz der aktuellen mit der vorhergehenden Zeile bilden muss. 

Ich vermute im HA wird vor dem speichern der letzte gespeicherte Wert ausgelesen, dann minus jetzt() berechnet und als sum mit dem neuen Wert weggeschrieben.

Antwort
Beiträge: 5
(@markus)
Active Member
Beigetreten: Vor 1 Monat

Ich habe rausbekommen, woran der falsche Zählerstand lag. Bei einem Stromausfall im Netz, setzt mein Zähler eBZ DD3 die Details zurück und liefert keine Leistungsdaten mehr und ändert einzelne Zählerstände über die IR Schnittstelle nach vorne mit Faktor 1Mio kleiner. Die IR Schnittstelle oben, die der Tibber Pulse abruft, liefert die richtigen Daten. Nachdem ich die Details mit der Taschenlampe wieder aktiviert habe, kommen wieder die richtigen Daten, aber ich muss nun den zweiten Zeitraum korrigieren.

Antwort
Seite 3 / 3