Werte für PV-Anlage in dblog manuell anpassen/ergänzen

Begonnen von Erby, 21 Februar 2025, 16:59:17

Vorheriges Thema - Nächstes Thema

RalfRog

#15
zurück zu deiner Frage #1:
welche Readings von welchem(n) Device(s) an welchem Datum müssen denn korrigiert werden.
Wenn ich das richtig verstanden habe ist das eine einmalige Anpassung.

Gruß Ralf

Edit:
ein Tool SQL Explorer (ch.eick) oder bei mir HeidiSQL macht es halt übersichtlich. Siehe mein Beispielscreenshot.
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

300P

#16
Zitat von: Erby am 21 Februar 2025, 16:59:17......

Jetzt möchte ich gerne die Monats- und Jahreswerte korrigieren, um letztendlich korrekte Werte seit Monatsangang und Jahresbeginn angezeigt zu bekommen. Nur wie korrigiere bzw. ergänze ich in der Praxis diese Werte?

Hallo Erby,

ich nutze diese Statistik schon seit Jahren artähnlich mit diversen Erweiterungen für aktuell/Heute/Gestern/Monat/Jahr/Vorjahr/Total und hatte am Anfang auch diese Themen zum Beginn.

Der ,,Haken" bei deiner Aufgabe ist allein das ,,Fehlen" der Zählerstände:
A:
Zählerstände per 01.01.2025 kurz nach 00:00:00
B:
Zählerstände per 31.01.2025 irgendwann kurz vor 23:59:59
C:
Zählerstände per 01.02.2025 kurz nach 00:00:00

Nur mit diesen vorhandenen Zählerständen kannst du die Werte ,,korrigieren".
Aber du ,,korrigierst" da nichts - du must die Voraussetzung bzw. die Zählerstände zum Berechnen der Differenzen in der SQL-Datenbank erst einmal erzeugen.

Wenn du diese Zählerstände alle noch hast - oder zurückrechnen kannst - dann ist der Schritt vollbracht.


Hast du diese alle verfügbar?

Gruß
300P


PS:
Ansonsten einfach warten bis das der neue Monat/Jahr beginnt ;) dann erledigt sich das automatisch

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

300P

#17
Und hier dann der zweite  Schritt:

Für jeden Zählerstand (bitte genau die Syntax beachten) mit den entsprechend richtigen Werten des Zählerstand-Device ergänzen.

Auszug aus den Befehls-Erläuterungen zum DBLog Device ;) 8)
set <name> addCacheLine YYYY-MM-DD HH:MM:SS|<device>|<type>|<event>|<reading>|<value>|[<unit>]

Im asynchronen Modus wird ein neuer Datensatz in den Cache eingefügt und beim nächsten Synclauf mit abgearbeitet.

Beispiel:
set <name> addCacheLine 2017-12-05 17:03:59|MaxBathRoom|MAX|valveposition: 95|valveposition|95|%


Viel Spass beim Ergänzen

Gruß
300P


Edit:
Bitte beachte noch dabei:
Deine Report-Aufrufe (Rep.xxxxxxx.yyyyy.zzzzz) für die Berechnungen der Werte sind keine DBLog-Device !!!
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

Erby

Zitat von: RalfRog am 24 Februar 2025, 13:04:18zurück zu deiner Frage #1:
welche Readings von welchem(n) Device(s) an welchem Datum müssen denn korrigiert werden.
Wenn ich das richtig verstanden habe ist das eine einmalige Anpassung.

Gruß Ralf

Edit:
ein Tool SQL Explorer (ch.eick) oder bei mir HeidiSQL macht es halt übersichtlich. Siehe mein Beispielscreenshot.

Ich muss die Werte für Erzeugung, Einspeisung und Bezug für Monat und Jahr korrigieren. Und ja ich habe alle Werte aus meinem SMA Wechselrichter und Smartmeter aus dem SMA-Portal abrufbar. Ich werde heute Abend erstmal eine Kopie meiner kompletten SD-Karte des Pi machen. Wie ich die Datenbank selbst sichere und später zurück spielen kann, weiß ich nämlich nicht.

ch.eick

#19
Zitat von: Erby am 24 Februar 2025, 16:18:53Ich werde heute Abend erstmal eine Kopie meiner kompletten SD-Karte des Pi machen. Wie ich die Datenbank selbst sichere und später zurück spielen kann, weiß ich nämlich nicht.
Achtung,
niemals eine Datenbank auf einer SD-Card betreiben, das macht die SD-Card nicht lange mit!


Backup mache ich mit SQLBackupAndFTP am WinPC, mit einem kleinen Trick gehen auch Incrementel Backups ;-)
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Erby

Zitat von: ch.eick am 24 Februar 2025, 17:48:12
Zitat von: Erby am 24 Februar 2025, 16:18:53Ich werde heute Abend erstmal eine Kopie meiner kompletten SD-Karte des Pi machen. Wie ich die Datenbank selbst sichere und später zurück spielen kann, weiß ich nämlich nicht.
Achtung,
niemals eine Datenbank auf einer SD-Card betreiben, das macht die SD-Card nicht lange mit!


Backup mache ich mit SQLBackupAndFTP am WinPC, mit einem kleinen Trick gehen auch Incrementel Backups ;-)

Danke für den Tipp aber dieser Hinweis kommt leider zu spät :-(. Meine SD-Card hat heute den Geist aufgegeben.
Was wäre die Alternative zur SD-Card an einem Pi?

Grüße Micha

300P

Guten Morgen!

Ich habe eine ausreichend große SSD-Festplatte (1TB) an dem RPI von dem aus der RPI direkt gebootet wird.
Also alles ganz ohne SD-Card.

Setz dazu erst den RPI wieder ,,Neu" mittels einer SD-Card auf und wechsel dann direkt auf eine leere SSD-Festplatte um.

Schau bzw. Lese dir dazu eine der vielen Anleitungen für den RPI im Netz an - ist aber ein anderes Thema.

Gruß
300P
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

Erby

#22
Zitat von: 300P am 25 Februar 2025, 09:17:59Guten Morgen!

Ich habe eine ausreichend große SSD-Festplatte (1TB) an dem RPI von dem aus der RPI direkt gebootet wird.
Also alles ganz ohne SD-Card.

Setz dazu erst den RPI wieder ,,Neu" mittels einer SD-Card auf und wechsel dann direkt auf eine leere SSD-Festplatte um.

Schau bzw. Lese dir dazu eine der vielen Anleitungen für den RPI im Netz an - ist aber ein anderes Thema.

Gruß
300P

Guten Morgen 300P,

ich hoffe das funktioniert auch, da mein Startpunkt/Ausgangspunkt ein Image ist (Fhem+VCCU3+Homebridge+ioBroke), dass ich fertig konfiguriert bei technikkram.net gekauft hatte.

Grüße Micha

300P

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

Erby

Hallo,

ich habe bisher noch keine SSD zum Laufen bekommen. Liegt wahrscheinlich am Controller. Hier warte ich auf die nächste Amazon Lieferung.

Ich habe mich aber weiter mit der Datenbank befasst und per phpmyadmin Zugriff erhalten. Was mich jetzt schockte, dass ich mehrere Millionen Einträge (Logs von Zwischensteckern z.B.) in der Datenbank habe und es werden sekündlich mehr. Fhem schreibt alle logs (readings) in die Datenbank. Eigentlich wollte ich nur meine PV-Auswertung damit realisieren.

Wir stoppe ich diese Datenflut?

rabehd

#25
Zitat von: Erby am 28 Februar 2025, 10:37:59Wir stoppe ich diese Datenflut?
Durch ordentliche Konfiguration des Datenbankdevices.
Mein Tipp:
attr logdb DbLogSelectionMode Include
und ein wenig lesen.
ZitatMit dem Attribut DbLogInclude werden die Readings definiert, die in der Datenbank gespeichert werden sollen.
Die Definition der zu speichernden Readings erfolgt über einen regulären Ausdruck und alle Readings, die mit dem regulären Ausdruck matchen, werden in der Datenbank gespeichert.
Der optionale Zusatz <MinInterval> gibt an, dass ein Wert dann gespeichert wird wenn mindestens <MinInterval> Sekunden seit der letzten Speicherung vergangen sind.

Und dort wo Du was loggen willst: z.B.
attr shellyplug_03 DbLogInclude ENERGY_Power,ENERGY_Today,ENERGY_Total,ENERGY_Yesterday,Kosten_gesamt,Kosten_gestern
Auch funktionierende Lösungen kann man hinterfragen.

RalfRog

#26
Zitat von: rabehd am 28 Februar 2025, 10:45:47Durch ordentliche Konfiguration des Datenbankdevices.

Im Prinzip geht es ja schon vor der Festlegung des Attributs mit der Definition des DBLOG los.
defmod <Name Logdevice> DbLog /opt/fhem/db.conf shelly_3em_haus:.*|shelly_1pm_garage:.*|Jet:E10.*
Bei mir zum Beispiel werden hiermit nur die drei angegebenen Devices in der DB geloggt (alles davon .*). Das kann man noch weiter auf Readings einschränken.
Wenn da statt dessen ".*:.*" (wie in manchen Beispielen genannt) steht wird natürlich alles von allem geloggt.

Gruß Ralf

Edit:
Ok Einschränkung
attr logdb DbLogSelectionMode Includeschließt die Betrachtung der RegEx in der Def aus.
Muss man sich halt aussuchen wie man es machen will. Nur .*:.* wäre definitiv zu viel  ;)
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

rabehd

Wenn man nur eine Handvoll Devives loggt, dann finde ich das in der Definition gut.
Irgendwann wird es übersichtlich, deshalb mein Vorschlag.
Auch funktionierende Lösungen kann man hinterfragen.

Erby

Vielen Dank für Eure Beiträge.

Ich habe meine 3 Devices jetzt über die Datenbank-Definition geloggt und bin super zufrieden mit dem Ergebnis.

ch.eick

#29
Moin,
dazu gibt es im Wiki meine ich eine Anleitung.
Man muss sich nur halt für eine Lösung entscheiden.

In jedem neu angelegten Device wird automatisch ein Attribut gesetzt, welches das Logging für alle READINGS in dem Device unterdrückt.
DbLogExclude .*
Ihr sollte das autocreate Device bereits haben und müsstet nur etwas ergänzen
defmod autocreate autocreate
attr autocreate DbLogExclude .*
attr autocreate device_room Neu
attr autocreate filelog ./log/%NAME-%Y.log

Hier noch das DbLog Device
defmod LogDB DbLog ./db.conf .*:.*
attr LogDB DbLogExclude .*
attr LogDB DbLogSelectionMode Exclude/Include
attr LogDB DbLogType History
attr LogDB asyncMode 1
attr LogDB colEvent 0
attr LogDB disable 0
attr LogDB room System
attr LogDB showproctime 1
attr LogDB verbose 0

Anschließend geht man in die jeweiligen Devices, die man loggen möcht und setzt dort dann die READINGS, die man haben möchte. Bitte darauf achten, dass dies auch einen Event erzeugt :-)
Es können auch Regex angegeben werden.
DbLogInclude redings1,reading2

Gerade beim Loggen von solchen Verbrauchswerten kommt schnell mal eine Menge zusammen, da könnte auch event-on-change-reading und event-on-update-reading hilfreich sein.
Auch wenn man natürlich manchmal Nachteile hat schreibe ich Verbrauchswerte mit event-on-change-reading in die DB, was mir stundenlange Folgen von 0W oder änliches erspart, man muss dann jedoch bei der Darstellung etwas tricksen.

Für jedes neue Device erscheint dann zwar immernoch ein Datenbankeintrag, es wird aber nichts weiter eingetragen. Von Jahr zu jahr lösche ich diese auch mal in der DB, damit es sauber bleibt.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick