Hallo Nakai,
Zitat1. Mir ist jetzt nicht direkt aufgefallen wo dort der Verbrauch ausgerechnet wird + ob dieser auch in der DB im Anschluss gespeichert wird.
Der Wiki Beitrag sollte dir zunächst die Möglichkeiten und die prinzipielle Vorgehensweise der DB Auswertung mit dem Modul näherbringen.
Ein konkreterer Hinweis steht im DbRep-Wiki (https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Speichern_von_Berechnungswerten_in_der_Datenbank_und_Erstellen_eines_Plots_.28ab_Version_7.5.1.29).
Der Verbrauch zum Beispiel ist mit dem Befehle diffValue zu ermitteln sofern der Zählerstand stetig steigend geloggt wird. Mit den time* - Attributen stellt man den Auswertungszeitraum ein und das attr aggregation ergibt die Bwertungsabschnitte.
Konkretes Beispiel:
Die Energiebezug wird mit device SMA_Energymeter und reading Bezug_Wirkleistung_Zaehler geloggt. Es soll der monatliche Bezug des aktuellen Jahres angezeigt werden.
Also stellt man die attr ein:
timestamp_begin = current_year_begin
device = SMA_Energymeter
reading = Bezug_Wirkleistung_Zaehler
aggregation = month
Nun können damit die unterschiedlichen Auswertungen vorgenommen werden. Im Beispiel zeigt ein:
set <DbRep> diffValue [display]
den monatlichen Bezug an. "display" ist optional. Ein
set <DbRep> diffValue writeToDB
zeigt die Ergebnisse an und speichert die berechneten Ergebnisse auch wieder mit anderem Readingnamen in der DB.Infos dazu in der Hilfe "help dbrep".
Zitat2. Bei den DBRep Devices erstellt du jeweils einen für einen Tag und einen für einen Monat. Diese beziehen sich jedoch nur auf den aktuellen Monat / Tag. Was ich mir jedoch vorgestellt hatte war dass ich auch die vergangenen Monate miteinander vergleichen kann. Ich bin mir nicht sicher ob ich hier komplett falsch denke mit dem "current_day" und "current_month".
Die Wikis sollen wie gesagt den Einstieg erleichtern. Das obige Beispiel mit der aggregation zeigt dir die monatlichen Einzelergebnisse an bzw. speichert sie. Willst du jetzt zum Beispiel die Differenz der einzelnen Monatsverbräuche zueinander ermitteln, kann man eigenen Code zur Auswertung integrieren. Dazu gibt es das attr userExitFn. Wieder eine Hilfe zum Wirkprinzip gibt es hier (https://wiki.fhem.de/wiki/Summe_aller_Einschaltzeiten_eines_Ger%C3%A4tes).
Man kann sich auch viele DbRep-Devices anlegen um zum Beipiel jeweils einen Monat separat auszuwerten. Die Ergebnisse kann man automatisch in einen Dummy übertragen lassen und dort über userReadings weitere Berechnungen vornehmen. Mit userReadings kannman natürlich auch direkt in einem DbRep arbeiten wenn man die Events zulässt.
Es gibt wirklich sehr viele Möglichkeiten. Die Lösung ist immer vom ganz speziellen Anwendungsfall, den Ausgangsdaten und dem Ziel abhängig was man erreichen will.
LG,Heiko