Benachrichtigungen
Alles löschen

Mit SQL noch mehr Daten in Home Assistant nutzen

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

Hallo Olli

vielen Dank für die schnelle Antwort.

Leider total verstanden.

Auszug aus InluxDB. Grau der Eintrag mit 3, der eigentlich nicht vorkommen kann

grafik

Input_select und Sensoren auf HA

grafik

Man sieht zur InfluxDB die Abweichung, die ich versuche zu ergründen. Dazu wollte ich mit SQL auf die HA-DB zugreifen, denn es muss in HA den Wert 3 geben, wo sollte er sonst herkommen, und das nicht nur einmal.

Daher meine bitte, kannst du einmal den obigen SELECT prüfen.

Danke

 

 

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

Mitglied
Beiträge: 736

@jove02 Danke für die weiteren Details! 

Was ich in dem Video und Blogbeitrag beschreibe, ist wie man eine Wertentwicklung einer Entität durch das "vergleichen" zweier Werte generiert (also Wert a (neu) abzüglich Wert b (alt) ergibt die Wertentwicklung).

Was du benötigst ist vollkommen anders gelagert und du wirst das anhand meines Beispiels nur mit unnötig viel Aufwand hinbekommen (also möglich ist es sicherlich, aber alles andere als pragmatisch).

An deiner Stelle würde ich mir direkten Zugriff auf die DB verschaffen um dort direkt (also ohne den Umweg über HA) Selects absetzen zu können. Das beschreibe ich in dem Video auch (https://youtu.be/qe8Syxfo-LY?si=5XVF19W1qKPfglIC&t=886). Wenn du direkten Zugriff auf die DB hast, kann ich dir gerne mit dem Select behilflich sein.

Antwort
Beiträge: 6
(@jove02)
Active Member
Beigetreten: Vor 4 Monaten

Ich hatte wohl die Integration SQL installiert und nicht das Addon. Aber auch damit stoße ich an meine Grenzen, denn die relationale DB ist ohne strukturkenntnisse  mal nicht eben pre Klick abzufragen. Wie ich das sehe, muss der Select über mehrere Tabellen gehen.

Daher nehme ich gerne dein Angebot tur Unterstützung beim Select an.

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

Mitglied
Beiträge: 736

@jove02 Probier mal folgenden Select aus:

SELECT state FROM statistics INNER JOIN statistics_meta ON statistics.metadata_id=statistics_meta.id WHERE statistics_meta.statistic_id='sensor.tibber_status_solvis_sg_ready_num' AND created_ts > strftime('%s','2025-02-04 12:09:00') AND created_ts < strftime('%s','2025-02-04 13:00:00') ORDER BY created_ts DESC 

Durch die Angaben "created_ts > ..." und "created_ts < ..." sollte die Ergebnisliste deinem XLS-Screenshot von weiter ohne entsprechen bzw. den auffälligen Eintrag mit "3" beinhalten.

Wenn du in der DB arbeitest, beachte, dass du keine Inserts, Updates oder Dinge in die Richtung machst, da du damit dein HA "beschädigen" kannst. SELECT-Abfragen stellen hingegen kein Problem dar!

Antwort
Beiträge: 6
(@jove02)
Active Member
Beigetreten: Vor 4 Monaten

Im Add On habe ich auf Basis deiner Beispiele ein erstes Query gebastelt. Dabei ist mir aufgefallen, dass für den Template-Sensor keine Statistik in der DB war. Ursache ein fehlendes "state_class: measurement".

Jetzt kann ich natürlich darüber rätseln, ob das die Ursache für den falschen Wert in der InflzxDB ist.

Voreinmal vielen Dank für deine Unterstützung.

Antwort
Beiträge: 6
(@jove02)
Active Member
Beigetreten: Vor 4 Monaten

Hallo Olli

jetzt benötige ich bitte doch nochmals deine Unterstützen beim Anzeigen "ts" im gängigen Format

SELECT mean, datetime(created_ts) FROM statistics INNER JOIN statistics_meta 
  ON statistics.metadata_id=statistics_meta.id
  WHERE statistics_meta.statistic_id='sensor.tibber_status_solvis_sg_ready_num' AND 
  created_ts > strftime('%s','2025-02-04 00:00:00') ORDER BY created_ts
grafik
Antwort
Beiträge: 736
 Olli
Admin
Themenstarter
(@olli)
Mitglied
Beigetreten: Vor 10 Jahren

Versuche mal folgenden Code um created_ts zu transformieren:

SELECT mean, DATETIME(created_ts, 'auto') FROM statistics INNER JOIN statistics_meta 
  ON statistics.metadata_id=statistics_meta.id
  WHERE statistics_meta.statistic_id='sensor.tibber_status_solvis_sg_ready_num' AND 
  created_ts > strftime('%s','2025-02-04 00:00:00') ORDER BY created_ts
Antwort
Seite 2 / 3

Produktempfehlungen