SFML: STATS/DEV - wünsch Dir was …

Hallo @Wolfi1

Das Thema ist schon sehr lange auf meiner Liste und um ehrlich zu sagen, habe ich das auch schon mit einem HA-DEV diskutiert. Das Problem an der Stelle ist das man (ich rede nur von der SFML DB) 3 Dinge unterscheiden muss:

  1. Recorder-Daten und Backfill Mechanismen → Das ist eine bewusste Architektur-Entscheidung! Viele nutzen Cloud-Dienste (Anker, Fronius, Ecoflow,..) und haben keinen lokalen API-Zugriff. Das führt dazu, das die Intervalle wann Daten bereitgestellt werden sehr sehr unterschiedlich sind. Home Assistant bildet Riemann-Werte zur vollen Stunde. Nun ist es einfach zu verstehen, wenn eine Cloud nicht zur vollen Stunde sondern z.B. 5 Minuten später die Daten liefert, was das für den Riemann und die Datenqualität bedeutet. Um das abzufangen habe ich den sog. Backfill eingebaut.
  2. Direkte Berechnungen → Mein Code versucht in einigen Bereichen (überall wo es geht) direkt selbst zu rechnen, um den unter Punkt 1 genannten Problem zu begegnen. Das gilt insbesondere bei Power-Sensoren, Smart-Metern,..
  3. Persistente Datenspeicherung → Um nicht jeden Mal nach einem Neustart erst wieder neu berechnen / abfragen zu müssen, speichert mein Code Snapshots. Auch ist SFML generell sehr defensiv ausgerichtet und stellt sich hinten an um nicht andere Integrationen / Prozesse zu laggen.

Ich denke es ist leicht zu erkennen, wohin das führt wenn an einer Stelle durch menschliches Eingreifen ein Wert verändert wird. Absolutes Chaos und zerstörte Commits in den DB. → Daher sage ich auch immer wieder " Bitte manipuliert nicht die DB". Sie muss zwingend synchron mit der von euch verwendeten Cloud, HA-DB. .. sein. Besonders kritisch ist hier Anker. Die Anker-Cloud hat variable Push-Routinen (auch fronius) und sendet oft Chunks über eine Zeitraum (Letter Push bis aktueller Push). Das fange ich im EOD ab.

Gibt es keine Lösung? - JaEin aktuell prüfe ich mit sogenannten Schatten Datenbanken oder auch Hilfsdatenbanken zu arbeiten. Das technische Prinzip dahinter ist, dass die original Datenbank nicht angefasst wird, aber einen Flag erhält der bei Änderungen zu einer 2 Datenbank (korrigierte Werte) führt. Prinzipiell ist das ein normaler Vorgehen, ABER kostet beim Boot von HA zusätzliche Rechenleistung. Da sind wir dann wieder beim Thema " Ha nutzt nur einen Single-Thread" und meine bisherigen Versuche sind in einem Blocking-Call oder ausgebremsten System gelandet.
Aktuell teste ich noch, meine Idee: Nur bestimmte Werte “korrigierbar” machen, so das die Last auf der Shadow-DB nicht zu groß wird. Ein Mittelmaß habe ich aber noch nicht gefunden.

Generell zum Thema SFML DB: Die Architektur hat einen automatischen Purge, das bedeutet das die DB eine maximale Größe von 200MB - 300MB in einem Jahr nicht überschreiten sollte. Interne Test liegen sogar weiter darunter (80 - 110MB) → um sie weiter zu verschlanken und kleiner zu halten habe ich die KI-Learning Steps geändert und arbeite aktuell mit einem Promotion-Gate. Ich Speicher also nur noch die Besten trainierten Modelle und nicht mehr jedes. Das ist es auch was den EOD auf unter 30 Sek drückt.
Bevor nun jemand mit WAL kommt.. nein das geht nicht! Besonders dann nicht wenn jemand seinen HA via SMB anbindet. Ich habe den Writer und reader extra zentralisiert und PAGMA ist mein Mittel der Wahl mit klaren Verträgen und Commits.. und Retry-Logik und Time-Outs im Executer!

Fazit:
Es ist komplexer als man zunächst meint! - Aber ich suche nach einer Lösung die für alle sicher funktioniert. - Ich denke damit ist nur klarer warum es noch dauern wird bis ich eine stabile Lösung präsentieren kann. Weiteres Nachfragen hilft hier nicht weiter, da es kein Zeit sondern ein technisches Thema ist.

HA DB bereinigen:
Hier rate ich zur äußersten Vorsicht und man sollte genau wissen was mach macht! - ob es überhaupt sinnvoll ist! - Besser ist via yaml Dinge auszucomitten von denen man 100% sicher ist, dass man sie nicht (niemals) benötigt.

Zara

Meine Frage tendiert hausächlich ob in der “HA DB” noch altes Zeug von SFML lagern?
Von älteren Versionen.
In dem fall nicht.
Gruss

Hallo @Wolfi1

Das ist eine generelle Frage, die ich tatsächlich nicht ausreichend mit einbezogen habe :slight_smile:

Die Antwort ist in HA selbst, seiner Architektur. Grundsätzlich speichert Home Assistant alle Sensoren die irgendwo angelegt sind - egal welche Integration!
Hier muss man sich anschauen, welche Recorder-Werte brauche ich eigentlich wirklich. Alles was man nicht benötigt sollte man via Yaml ausklammern. Klassische Kandidaten sind Zustandsänderungen, Uhrzeiten, … aber immer mit dem nötigen Augenmaß! - Eine generelle Lösung gibt es nicht! Man muss auch daran denken, dass eine Neuinstallation immer wieder neue Meta-ID´s erzeugt und es durch aus sinnvoll sein kann, alte Meta-ID`s zu mergen.

Beispiel: vorher hieß eine Sensor: sensor.gesamterzeugung_solar nun heißt er sensor_gesamt_solar → da wäre es kontraproduktiv den " alten Sensor" zu löschen, wenn man eine lange Historie möchte. Alle Tools die so kenne machen diese Unterscheidung nicht und man verliert wichtige alte Daten. → dazu hatte ich mich auch schon einmal im Showroom geäußert. Selbst wenn man die Sensoren wieder den selben Namen gibt, ist nicht immer sicher das die Historischen Daten übernommen werden..

Ich hatte dazu schon einmal einen Thread eröffnet und ein Script vorgestellt, dass genau das macht: Daten von einem alten Sensor auf einen neuen Übertragen, so das Historien nicht verloren gehen und man gefahrlos die DB aufräumen kann. → auf Grund der Kommentare " Das braucht kein Mensch, ect ect.. und Unverständnis wie HA intern arbeitet und was Meta-ID´s sind, wie HA Daten ablegt und verarbeitet" habe ich das wieder eingestellt und nutze es nur für mich.. (ich habe lange versucht zu erklären warum das für eine Datenbankpflege wichtig ist und man so “sauber starten” kann, Datenbanken klein und schnell bleiben..) meine Erklärungen dazu waren eher wie Lancelot mit seinen Windmühlen..

Am Ende des Tages habe ich es dann still und heimlich in SFML eingebaut das ist der Grund warum die SFML DB so klein und effektiv bleibt - auch nach einer Neuinstallation von HA und Zurückkopieren der alten SFML DB.

Hinweis zum Ausklammern via YAML:
Wir hatten hier auch schon Fälle wo SFML den Dienst versagt hat, da Nutzer wichtige Sensoren von HA ausgeklammert hatten und der Backfill (wie im vorangegangenen Post erklärt) nicht funktioinert und riesige Datenlücken über den Tag entstanden sind. Besonders beliebte Kandidaten: Power-Sensore, Wettersensoren,..

Fazit: Mit gesundem Menschenverstand und äußerster Vorsicht die HA DB und generell Datenbanken manipulieren - und verstehen wie HA arbeitet.. es ist eine Datenbank Software und kein klassische " Betriebssystem" eher ein Hybrid ( das BS ist die Kernel-Ebene / Linux darunter)

@Wolfi1

Es gibt ein Update:
Mit den Hilfstabellen funktioniert es. Kommt im kommenden Update als Premium-Feature → zunächst einmal nur für die Strom-Sparte, wenn es sich im Alltag bewährt im nächsten Schritt auch für andere Sensoren / Werte!
Ein korrigierter Tageswert wird im Billing und Export identisch erscheinen, wird aber weder Lernen noch die laufende Erfassung rückwirkend beeinflussen.

Ich sehe es als “Ersten Versuch / Test” - das bitte im Hinterkopf behalten!
Wie bereits erklärt, ist das nicht wirklich einfach und eine sehr kritische Operation. Meine Integrationen basieren auf 100% Home Assistant ( und den von HA gepflegten Repros) - daher halte ich mich zu 100% an die Vorgaben - das bringt Einschränkungen mit sich, die wichtig und und richtig sind.
Ich würde Dich bitten es zu testen (kommt nach dem EOD heute).

Ist in V42.0.6 enthalten.

Nicht einzeln korrigierbar bleiben:

  • Hausverbrauch – ergibt sich aus mehreren Energieflüssen
  • Solar → Haus, Solar → Akku, Netz → Haus, Netz → Akku
  • Akkuladung und Akkuentladung
  • Eigenverbrauch und Autarkie
  • Kosten, Ersparnis und Einspeiseerlös
  • Wirkungsgrade
  • Spitzenleistung und Uhrzeit
  • Forecast-, Wetter- und ML-Werte

Diese Werte hängen voneinander ab. Eine Einzelkorrektur könnte beispielsweise mehr Hausverbrauch als verfügbare Energie oder einen unmöglichen Akkuwirkungsgrad erzeugen. Die Gefahr ist zu groß, dass etwas bricht.

Weitere Hinweise zum Update:

Hallo @Tom-HA

Du meinst sicher dieses Thema

Werde ich testen.

Gruss

Hallo @Tom-HA

komme irgendwie nicht weiter. (Korrektur)
Vor allem möchte ich die DB vorher sicher wo liegt sie wieder?

Und dann muss ich ja erstmals wie rausfinden welche Tageswerte (Bezug) falsch sind?

Macht es Sinn, bei den Überschriften AC und DC in Klammern zu erwähnen? Gerade für Neueinsteiger stelle ich mir das hilfreich vor.
Nicht jedem Neueinsteiger erschließt sich sofort, dass die angezeigten W bei Solar DC sind und die W bei GRID AC, zumal man bei den Apps zu den BKW-Wechselrichtern meistens nur den AC-Wert im Blick hat, denke ich.

Dieser Pfeil bei Strombezug ist eher ein persönliches Ding. :slight_smile: Für mich sieht es optisch so aus, als ob ich Strom ans Netz abgebe, weil der Pfeil für mich gefühlt “raus” zeigt.

An welcher Steller genau?

config/solar_forecast_ml/

Ja schau Dir die Historie des Sensors an und suche den Peak

Sobald die KI sauber läuft (aktuell gibt es noch einen BUG siehe:

kümmere ich mich gern um “optische” Mängel / Verbesserungen. Ich habe mir deinen Post gespeichert. Danke Dir für den Hinweis

@Wolfi1

Es hat etwas gedauert, aber nun habe ich verstanden was Du meinst.. im kommeden Update kann man in den Tagen nach den Ausreißern suchen / finden und denn den Tageszähler gezielt korrigieren!

Und was mir jetzt noch aufgefallen ist. Wenn ich dein Beispiel Fenster Korrekturen betrachte, das Fenster "physikalische Grenzen " erscheint gar nicht.

Gruss

Das ist auch nicht notwendig, die physikalische Grenze wird an anderen Stellen verwendet. Hier geht es nur um genau das was Du angemerkt hast - vielfach angefragt wurde : Werte zu korrigieren anhand der “korrekten” Werte. Diese Werte können ja vom Quell-Sensor / Solar-App / … keine physikalische Grenze “reißen”. Die “echte” Datenbasis kann ja rein von der Logik her nicht größer sein, als das was physikalisch möglich ist. Grundsätzlich ist es aber so das man sich Gedanken machen muss was man da korrigiert.. das kann ich leider niemanden abnehmen.

Ich denke so ist es genau das was gewünscht wurde und ein mächtiges Werkzeug mit dem man 100% HA konform in den Datenbestand von SFML Datenbank eingreifen kann.

Hallo Zara kurzer Bericht bzgl. Korrektur.
Die Korrektur funktioniert !
Falsche werte im Juli sahen so aus. (16.7 – 23.7)


Vor dem 16.7 keine Tageswerte.

Korrekte aktuelle Werte so.
Aber keine Stunden Werte warum .?

Somit den Juni Bezug erfolgreich Korrigiert.

PS: weiß noch nicht ob ich heute Abend rechtzeitig zum Meeting zurück bin
Gruß

Hallo @Wolfi1
vielen Dank! Zu deiner Frage: Weil der “Zähler” ein Tageszähler ist und kein Stundenzähler.
Wäre schön wenn Du es heute Abend schaffst! - Würdest Du bitte anderen notfalls helfen wenn es um das korrigieren geht zum Beispiel @Milkaschokolade .. ich schaffe es zeitlich aktuell nicht

Öhm,

wäre es eigentlich irgendwie möglich mehr als 4 Panel-Gruppen einzutragen.

Ich hab z.b. ein BKW mit Panels nach O/W/S.

Und ich hab für jeden Gruppe auch die entsprechenden Leistungs-Sensoren.

Allerdings bräuchte ich am Ende 6 Gruppen und nicht nur 4.

Also wäre es möglich mehr als 4 Panel-Gruppen anlegen zu können?

Nein, da die benötigte Leistung dann zu hoch wird und viele Installationen das dann nicht mehr schaffen, wurde bereits mehrfach von Tom erklärt, das es nicht geht. Kannst du nicht einige von den Gruppen zusammen legen? Gegebenenfalls mit Helfern.

Gruß Ralf

Hi,

ich würde mir bei der Temperatur Ansicht der Monate eine Skala wünschen, oder das beim Mausover die Werte angezeigt werden.

Außerdem gibts im Wärmsten Monat einen kleinen Darstellungsfehler:

Das habe ich auch schon mal gemeldet gehabt :wink:

was mir da gleich noch auffällt, der Farbverlauf ist immer der selbe, kälteste temp im monat is blau, höchste Orange, ggf, sollte man die Skala festnageln…oder an das “WetterOnline”
Model anpassen, falls das technisch umsetzbar ist

image