@Damian
ich habe das alles gestern angelegt bisher steht aber alles noch auf 0.
Habe ich evtl. irgendwo einen Fehler drin, ich habe es mir schon mehrmals angeschaut aber ich finde nichts..!
Evtl. liegt es an dem Zähler ganz unten
Wenn ich set di_counter_new mid
kann ich das sicher einmal für nachts testen, oder
hier mal der Code
defmod di_counter_new DOIF subs { \
## Device Reading \
push (@{$_counter},["growatt.0.294937.devices.QMB39212B4.deviceData.eTotal","state"]);; ## PV-Energie Einspeisung \
\
sub midnight { ## Diese Funktion wird um Mitternacht ausgeführt\
my ($device,$reading,$mday,$yday)=@_;;\
set_Reading("$device.$reading.day_counter",ReadingsVal($device, $reading,1));; \
set_Reading("$device.$reading.last_day",get_Reading("$device.$reading.day",0),1);;\
set_Reading("$device.$reading.day",0,1);;\
set_Reading ("$device.$reading.month",int((ReadingsVal($device, $reading,0)-(get_Reading("$device.$reading.month_counter",0)))*1000)/1000,1);;\
set_Reading ("$device.$reading.year",int((ReadingsVal($device, $reading,0)-(get_Reading("$device.$reading.year_counter",0)))*1000)/1000,1);;\
\
if ($mday == 1) {\
set_Reading("$device.$reading.month_counter",ReadingsVal($device, $reading,0));;\
set_Reading("$device.$reading.last_month",get_Reading("$device.$reading.month",0),1);;\
set_Reading("$device.$reading.month",0,1);;\
}\
if ($yday == 1) {\
set_Reading("$device.$reading.year_counter",ReadingsVal($device, $reading,0));;\
set_Reading("$device.$reading.last_year",get_Reading("$device.$reading.year",0),1);;\
set_Reading("$device.$reading.year",0,1);;\
}\
}\
\
sub init_readings {\
my ($device,$reading)=@_;;\
if (get_Reading("$device.$reading.day_counter","") eq "") { ## Initialisierung der Readings\
## aktuellen Zählerstand initialisieren\
set_Reading("$device.$reading.last_counter",ReadingsVal($device, $reading,0));;\
set_Reading("$device.$reading.day_counter",ReadingsVal($device, $reading,0));; \
set_Reading("$device.$reading.month_counter",ReadingsVal($device, $reading,0));;\
set_Reading("$device.$reading.year_counter",ReadingsVal($device, $reading,0));;\
\
set_Reading ("$device.$reading.day",0);; ## aktueller Tagesverbrauch\
set_Reading ("$device.$reading.month",0);; ## aktueller Monatsverbrauch\
set_Reading ("$device.$reading.year",0);; ## aktueller Jahresverbrauch\
set_Reading ("$device.$reading.last_day",0);; ## Verbrauch des letzten Tages\
set_Reading ("$device.$reading.last_month",0);; ## Verbrauch des letzten Monats\
set_Reading ("$device.$reading.last_year",0);; ## Verbrauch des letzten Jahres\
## Log definieren\
fhem ("defmod log.counter.$device.$reading FileLog ./log/counter.$device.$reading.log $SELF:$device.$reading.(last_(day|month|year)|(day|month)_counter):.*");;\
fhem ("attr log.counter.$device.$reading room Logs");;\
}\
\
}\
} ## Ende subs-Block\
\
mid {[00:01];; ## Sicherung der Daten um Mitternacht\
for (my $i=0;;$i<@{$_counter};;$i++) { ## Für jeden Zähler wird die Funktion midnight aufgerufen\
midnight($_counter[$i][0],$_counter[$i][1],$mday,$yday);;\
}\
}\
\
init { ## initialisierung aller Readings\
for (my $i=0;;$i<@{$_counter};;$i++) {## Für jeden Zähler werden Readings über die Funktion init_readings initialisiert\
init_readings($_counter[$i][0],$_counter[$i][1]);;\
}\
}\
\
DEF TPL_stat (\
day_count_$1_$2 { ## bei einem Event des Zählers, wird der tägliche, monatliche und jährliche Verbrauch im jeweiligen Reading festgehalten\
## $1 Zählerdevice, $2 Zählerreading\
\
my $diff = int(([$1:$2,0]-(get_Reading("$1.$2.last_counter",0)))*1000)/1000;;\
set_Reading ("$1.$2.last_counter",[$1:$2,0]);;\
set_Reading ("$1.$2.day",int(([$1:$2,0]-(get_Reading("$1.$2.day_counter",0)))*1000)/1000,1);;\
set_Reading ("$1.$2.month",int(([$1:$2,0]-(get_Reading("$1.$2.month_counter",0)))*1000)/1000,1);;\
set_Reading ("$1.$2.year",int(([$1:$2,0]-(get_Reading("$1.$2.year_counter",0)))*1000)/1000,1);;\
}\
)\
\
\
## Pro Zähler wird über eine FOR-Schleife ein day_count_<Device>_<Reading>-Block generiert\
FOR(@{$_counter},TPL_stat($1$1,$1$2)) ## $1$1 entspricht dem Device, $1$2 entspricht dem Reading\
attr di_counter_new room AutomationTest
attr di_counter_new uiTable ## { package ui_Table;;\
## $TC{1.2}="align='center'" ## zentrierte Ausrichtung der zweiten und dritten Spalte\
## }\
{package ui_Table;;;;$ANIMATE=0}\
## Tabellendefinition\
card([di_counter_new:growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day:col],"Solarenergie Tagesverlauf in KWh","",0,30,30,90,["PV","Einsp."],undef,"1","160,1,1,0,1,,200","0,0,0,0,2")|\
card([di_counter_new:growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day:col4w],"Solarenergie in kWh pro Tag","",0,30,30,90,["PV","Einsp."],undef,"1","160,1,1,0,1,,200","0,0,0,0,2")|\
card([di_counter_new:growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month:col365d],"Solarenergie in kWh pro Monat","",0,600,30,90,["PV","Einsp."],undef,"0","160,1,1,0,1,,200","0,0,0,0,2")
setstate di_counter_new initialized
setstate di_counter_new 2022-08-29 16:13:40 .col_72_di_counter_new_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day_24_times ,,,,,,,,,,,,,,,,,,,,,1661721296,1661722553,1661723657,1661724060,1661725355,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1661774660,,,,,1661780901
setstate di_counter_new 2022-08-29 16:13:40 .col_72_di_counter_new_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day_24_values ,,,,,,,,,,,,,,,,,,,,,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,0
setstate di_counter_new 2022-08-29 16:13:40 .col_72_di_counter_new_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day_672_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1661721296,1661722553,1661774660
setstate di_counter_new 2022-08-29 16:13:40 .col_72_di_counter_new_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day_672_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0
setstate di_counter_new 2022-08-29 16:13:40 .col_72_di_counter_new_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month_8760_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1661726292,1661774660
setstate di_counter_new 2022-08-29 16:13:40 .col_72_di_counter_new_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month_8760_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0
setstate di_counter_new 2022-08-29 15:56:17 block_init executed
setstate di_counter_new 2022-08-29 15:56:22 block_mid executed
setstate di_counter_new 2022-08-29 15:56:22 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day 0
setstate di_counter_new 2022-08-29 15:56:22 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day_counter 3276.4
setstate di_counter_new 2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_counter 3272.9
setstate di_counter_new 2022-08-29 15:56:22 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day 0
setstate di_counter_new 2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month 0
setstate di_counter_new 2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_year 0
setstate di_counter_new 2022-08-29 15:56:22 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.month 3.5
setstate di_counter_new 2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.month_counter 3272.9
setstate di_counter_new 2022-08-29 15:56:22 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.year 3.5
setstate di_counter_new 2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.year_counter 3272.9
setstate di_counter_new 2022-08-29 15:56:17 mode enabled
setstate di_counter_new 2022-08-29 15:56:17 state initialized
setstate di_counter_new 2022-08-29 15:56:17 timer_01_c01 30.08.2022 00:01:00
das log sieht bisher so aus, Zeiten hatte ich mal eingegeben zum testen
2022-08-29_17:24:23 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_15:56:22 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_15:55:57 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_15:51:00 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_00:01:00 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0