Zitat von: Beta-User am 22 März 2026, 07:58:13Na ja, "irgendwann" muss man halt konsequent sein und "deprecated" features deaktivieren. Vermutlich war das aber schon unter bullseye ein (nicht so verbreitetes) Problem. Die Entscheidung scheint schon 2018 gefallen zu sein: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897916.Muss man dann aber nicht verstehen warum im PI-OS mit Bookworm (und Trixie?) die USB-Interfaces "plugdev" bekommen haben.
Zitat von: KölnSolar am 21 März 2026, 18:54:25Du meinst die Group plugdev ?(Dein Link ist falsch)Ja sorry, da war Copy&Paste auf dem Smartphone etwas daneben. Ich habe den Link oben korrigiert.
Can't locate URL/Encode.pm in @INC (you may need to install the URL::Encode module) ...git clone http://github.com/chansen/p5-url-encode
{{::DOIF_set_card_data ("di_counter","di_counter","Zaehler180.last_month","bar2year",0,fhem("get counter.di_counter.Zaehler180.log - - 2022-11-01 2023-02-03 4:Zaehler180.last_month"))}}führt zum gleichen Fehler. Die log-Dateien (z.B. counter.di_counter.Zaehler180.log) kann ich einsehen.defmod di_counter DOIF subs {\
## Device Reading \
push (@{$_counter},["SolaxModbus","wr_cum"]);; ## Solarenergie\
push (@{$_counter},["Smartmeter","Zaehler280"]);; ## Einspeisezähler\
push (@{$_counter},["Smartmeter","Zaehler180n"]);; ## Bezugszähler neg\
push (@{$_counter},["di_counter","EgZaehler"]);; ## Eigenverbrauch\
push (@{$_counter},["di_counter","Zaehler180"]);; ## Bezugszähler pos\
push (@{$_counter},["SD_WS_207_D34B","rain_total"]);; ## Regenmenge\
push (@{$_counter},["Smartmeter","Zaehler180"]);; ## Bezugszähler\
\
sub midnight { ## Diese Funktion wird um Mitternacht ausgeführt\
my ($device,$reading,$mday,$yday)=@_;;\
set_Reading("EgZ_last", 0,0);;\
set_Reading("$device.$reading.day_counter",ReadingsVal($device, $reading,0));;\
set_Reading("$device.$reading.last_day",get_Reading("$device.$reading.day",0),1);;\
set_Reading("$device.$reading.day",0,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 == 0) {\
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):.*");;\
fhem ("attr log.counter.$device.$reading room Filelogs");;\
}\
}\
} ## Ende subs-Block\
\
get_data { ## Optionale Übernahme bestehender Daten aus dem Log\
for (my $i=0;;$i<@{$_counter};;$i++) {\
## my $i=3;;\
set_Reading("$i last_hour $_counter[$i][0] $_counter[$i][1]", "log.counter.$_counter[$i][0].$_counter[$i][1] ./log/counter.$_counter[$i][0].$_counter[$i][1].log - 2000 3000 4:last_hour",1);;\
::DOIF_set_card_data ("$SELF","$SELF","$_counter[$i][0].$_counter[$i][1].last_hour","bar2day",-10,fhem("get log.counter.$_counter[$i][0].$_counter[$i][1] ./log/counter.$_counter[$i][0].$_counter[$i][1].log - 2000 3000 4:last_hour"));;\
::DOIF_set_card_data ("$SELF","$SELF","$_counter[$i][0].$_counter[$i][1].last_day","bar2month",-300,fhem("get log.counter.$_counter[$i][0].$_counter[$i][1] ./log/counter.$_counter[$i][0].$_counter[$i][1].log - 2000 3000 4:last_day"));;\
::DOIF_set_card_data ("$SELF","$SELF","$_counter[$i][0].$_counter[$i][1].last_month","bar2year",-300,fhem("get log.counter.$_counter[$i][0].$_counter[$i][1] ./log/counter.$_counter[$i][0].$_counter[$i][1].log - 2000 3000 4:last_month"));;\
::DOIF_set_card_data ("$SELF","$SELF","$_counter[$i][0].$_counter[$i][1].last_year","bar2decade",-300,fhem("get log.counter.$_counter[$i][0].$_counter[$i][1] ./log/counter.$_counter[$i][0].$_counter[$i][1].log - 2000 3000 4:last_year"));;\
}\
}\
\
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);;\
}\
}\
tgz { if ([$SELF:EgZ] > [$SELF:EgZ_last]) { \
set_Reading("EgZaehler.delta", get_Reading("EgZ",0) - get_Reading("EgZ_last",0),0);;\
set_Reading("EgZ_last", get_Reading("EgZ",0),0);;\
set_Reading("EgZaehler", get_Reading("EgZaehler",0) + get_Reading("EgZaehler.delta",0),0);;\
}\
}\
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;;\
if ($diff < 0 and get_Reading("$1.$2.last_counter",0) > 0 or $diff > 0 and get_Reading("$1.$2.last_counter",0) < 0) { ## Wenn der Zähler zurückgesetzt wurde, dann Zählerstände zurückrechnen\
set_Reading("$1.$2.day_counter",-(get_Reading("$1.$2.day",0)));;\
set_Reading("$1.$2.month_counter",-(get_Reading("$1.$2.month",0)));;\
set_Reading("$1.$2.year_counter",-(get_Reading("$1.$2.year",0)));;\
}\
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 DOIF_Readings Bilanz: sprintf("%.2f", [$SELF:Smartmeter.Zaehler280.day]*0.08 + [$SELF:di_counter.EgZaehler.day]*0.19 + [$SELF:Smartmeter.Zaehler180n.day]*0.27)
attr di_counter comment # EgZaehler: ([$SELF:EgZ] > [$SELF:EgZaehler] ? [$SELF:EgZ] : [$SELF:EgZaehler]),
attr di_counter disable 0
attr di_counter event_Readings EgVerbrauch:[$SELF:SolaxModbus.wr_cum.day] - [?$SELF:Smartmeter.Zaehler280.day],\
EgZ:sprintf("%.3f", ([$SELF:SolaxModbus.wr_cum.day] - [?$SELF:Smartmeter.Zaehler280.day])),\
Zaehler180:[Smartmeter:Zaehler180]
attr di_counter group Solar
attr di_counter room Devices,Wetter
attr di_counter uiTable {package ui_Table} ## Optionale Visualisierung der Energie-Verbräuche/-Produktion im DOIF-Device\
## Template für die Darstellung eines Wertes\
DEF TPL_single (\
card([$SELF:$2.$3.day:col1w],"$1 Tagesverlauf",$11,$4,$5,$8,$9,"$10",undef,"1","150,1,1,0,1,,250","0,0,0,0")|\
card([$SELF:$2.$3.last_day:bar1month-300],"$1 in $10 pro Tag",undef,$4,$5,$8,$9,"$10",undef,"1","150,1,1,0,1,0,250","0,0,0,0")|\
card([$SELF:$2.$3.last_month:bar1year-300],"$1 in $10 pro Monat",undef,$6,$7,$8,$9,"$10",undef,"0","150,1,1,0,1,0,250","0,0,0,0")|\
card([$SELF:$2.$3.last_year:bar1decade-300],"$1 in $10 pro Jahr",undef,$6,$7,$8,$9,"$10",undef,"0","150,1,1,0,1,0,250","0,0,0,0")\
)\
## Template für die Darstellung von zwei Werten\
DEF TPL_double (\
card([[$SELF:$3.$4.day:col1w],[$SELF:$6.$7.day:col1w]],"$1 Tagesverlauf in $14",undef,$8,$9,$12,$13,["$2","$5"],undef,"1","130,1,1,0,1,,200","0,0,0,0,2")|\
card([[$SELF:$3.$4.last_day:bar2month-300],[$SELF:$6.$7.last_day:bar1month-300]],"$1 in $14 pro Tag",undef,$8,$9,$12,$13,["$2","$5"],undef,"1","130,1,1,0,1,0,200","0,0,0,0,2")|\
card([[$SELF:$3.$4.last_month:bar2year-300],[$SELF:$6.$7.last_month:bar1year-300]],"$1 in $14 pro Monat",undef,$10,$11,$12,$13,["$2","$5"],undef,"0","130,1,1,0,1,0,200","0,0,0,0,2")|\
card([[$SELF:$3.$4.last_year:bar2decade-300],[$SELF:$6.$7.last_month:bar1year-300]],"$1 in $14 pro Jahr",undef,$10,$11,$12,$13,["$2","$5"],undef,"0","130,1,1,0,1,0,200","0,0,0,0,2")\
)\
## card([$SELF:di_counter.EgZaehler.day:100col1w],"Eigenverbrauch in kWh pro Tag","solar_icon",0,20,90,0,"kWh",undef,"1","150,,1,0,1,,250","0,0,0,0")|\
## card([$SELF:di_counter.EgZaehler.month:100col365d],"Eigenverbrauch in kWh pro Monat","solar_icon",0,200,90,0,"kWh",undef,"0","150,,1,0,1,,250","0,0,0,0")\
TPL_single (Bezug,di_counter,Zaehler180,0,20,0,800,90,0,kWh,"measure_power_meter\@Darkorange")\
TPL_single (Ertrag,SolaxModbus,wr_cum,0,80,0,1200,0,90,kWh,"measure_photovoltaic_inst\@LightGreen")\
TPL_single (Eigenverbrauch,di_counter,EgZaehler,0,10,0,400,0,90,kWh,"svgs/solid/home")\
TPL_single (Einspeisung,Smartmeter,Zaehler280,0,80,0,1200,0,90,kWh,"measure_power_meter\@lightGreen")\
TPL_single (Regen,SD_WS_207_D34B,rain_total,0,20,0,200,180,230,l/m²,"weather_rain_gauge\@LightBlue")
setstate di_counter initialized
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_SD_WS_207_D34B.rain_total.last_day_1_month_values 21,24314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_SD_WS_207_D34B.rain_total.last_month_1_year_values 2,2026,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_SD_WS_207_D34B.rain_total.last_year_1_decade_values 6,202,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_Smartmeter.Zaehler280.last_day_1_month_values 21,24314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_Smartmeter.Zaehler280.last_month_1_year_values 2,2026,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_Smartmeter.Zaehler280.last_year_1_decade_values 6,202,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_SolaxModbus.wr_cum.last_day_1_month_values 21,24314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_SolaxModbus.wr_cum.last_month_1_year_values 2,2026,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_SolaxModbus.wr_cum.last_year_1_decade_values 6,202,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_di_counter.EgZaehler.last_day_1_month_values 21,24314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_di_counter.EgZaehler.last_month_1_year_values 2,2026,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_di_counter.EgZaehler.last_year_1_decade_values 6,202,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_di_counter.Zaehler180.last_day_1_month_values 21,24314,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_di_counter.Zaehler180.last_month_1_year_values 2,2026,,,,,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .bar_di_counter_di_counter.Zaehler180.last_year_1_decade_values 6,202,,,,,,,,,,,,,,,,,,,,
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_Smartmeter.Zaehler180n.day_168_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774021005,,1774030351,1774035796,1774044302,1774049810,1774055151,1774059984,,,,,,1774098993,1774103558,1774108855,,,,1774136776,,,,,,,,,1774189595,,1774201922
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_Smartmeter.Zaehler180n.day_168_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,0,0,0,0,0,0,,,,,,0,0,0,,,,0,,,,,,,,,0,,0
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_Smartmeter.Zaehler180n.month_8760_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774204422
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_Smartmeter.Zaehler180n.month_8760_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_Smartmeter.Zaehler280.month_8760_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774204422
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_Smartmeter.Zaehler280.month_8760_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_di_counter.EgZaehler.month_8760_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774204422
setstate di_counter 2026-03-22 21:33:55 .col_100_di_counter_di_counter.EgZaehler.month_8760_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,103.5
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_SD_WS_207_D34B.rain_total.day_168_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774205655,1774206277
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_SD_WS_207_D34B.rain_total.day_168_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3024.8,3024.8
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_Smartmeter.Zaehler280.day_168_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774205655,1774206277
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_Smartmeter.Zaehler280.day_168_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_SolaxModbus.wr_cum.day_168_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774205655,1774206277
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_SolaxModbus.wr_cum.day_168_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_di_counter.EgZaehler.day_168_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774205655,1774206277
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_di_counter.EgZaehler.day_168_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,40.9,40.9
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_di_counter.Zaehler180.day_168_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1774205655,1774206277
setstate di_counter 2026-03-22 21:33:55 .col_72_di_counter_di_counter.Zaehler180.day_168_values ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0
setstate di_counter 2026-03-22 19:54:15 0 counter: SolaxModbus.wr_cum.last_hour
setstate di_counter 2026-03-22 21:59:28 0 last_hour SolaxModbus wr_cum log.counter.SolaxModbus.wr_cum ./log/counter.SolaxModbus.wr_cum.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:52:38 1 counter: Smartmeter.Zaehler280.last_hour
setstate di_counter 2026-03-22 21:49:45 1 last_hour Smartmeter Zaehler280 log.counter.Smartmeter.Zaehler280 ./log/counter.Smartmeter.Zaehler280.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:52:38 2 counter: Smartmeter.Zaehler180n.last_hour
setstate di_counter 2026-03-22 21:49:45 2 last_hour Smartmeter Zaehler180n log.counter.Smartmeter.Zaehler180n ./log/counter.Smartmeter.Zaehler180n.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:52:38 3 counter: di_counter.EgZaehler.last_hour
setstate di_counter 2026-03-22 21:49:45 3 last_hour di_counter EgZaehler log.counter.di_counter.EgZaehler ./log/counter.di_counter.EgZaehler.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:52:38 4 counter: di_counter.Zaehler180.last_hour
setstate di_counter 2026-03-22 21:49:45 4 last_hour di_counter Zaehler180 log.counter.di_counter.Zaehler180 ./log/counter.di_counter.Zaehler180.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:52:38 5 counter: SD_WS_207_D34B.rain_total.last_hour
setstate di_counter 2026-03-22 21:49:45 5 last_hour SD_WS_207_D34B rain_total log.counter.SD_WS_207_D34B.rain_total ./log/counter.SD_WS_207_D34B.rain_total.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:52:38 6 counter: Smartmeter.Zaehler180.last_hour
setstate di_counter 2026-03-22 21:49:45 6 last_hour Smartmeter Zaehler180 log.counter.Smartmeter.Zaehler180 ./log/counter.Smartmeter.Zaehler180.log - 2000 3000 4:last_hour
setstate di_counter 2026-03-22 19:08:03 Bilanz 7.77
setstate di_counter 2026-03-22 21:56:18 EgVerbrauch 0
setstate di_counter 2026-03-22 21:56:18 EgZ 0.000
setstate di_counter 2026-03-22 19:08:03 EgZaehler 103.5
setstate di_counter 2026-03-22 00:00:07 EgzLastDay 62.6
setstate di_counter 2026-03-22 19:08:03 Eigenverbrauch_Tag 40.9
setstate di_counter 2026-03-22 19:08:03 Einspeisung 0.0
setstate di_counter 2026-03-22 19:08:03 Ertrag 40.9
setstate di_counter 2026-03-22 19:08:03 EtZaehler 103.5
setstate di_counter 2026-03-22 00:00:07 EtzLastDay 62.6
setstate di_counter 2026-03-22 21:42:14 SD_WS_207_D34B.rain_total.day 3024.8
setstate di_counter 2026-03-22 00:01:00 SD_WS_207_D34B.rain_total.day_counter 0
setstate di_counter 2026-03-22 21:42:14 SD_WS_207_D34B.rain_total.last_counter 3024.8
setstate di_counter 2026-03-22 00:01:00 SD_WS_207_D34B.rain_total.last_day 0
setstate di_counter 2026-03-20 16:36:45 SD_WS_207_D34B.rain_total.last_month 0
setstate di_counter 2026-03-20 16:36:45 SD_WS_207_D34B.rain_total.last_year 0
setstate di_counter 2026-03-22 21:42:14 SD_WS_207_D34B.rain_total.month 3024.8
setstate di_counter 2026-03-20 16:36:45 SD_WS_207_D34B.rain_total.month_counter 0
setstate di_counter 2026-03-22 21:42:14 SD_WS_207_D34B.rain_total.year 3024.8
setstate di_counter 2026-03-20 16:36:45 SD_WS_207_D34B.rain_total.year_counter 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.day 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.day_counter 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.last_counter 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.last_day 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.last_month 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.last_year 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.month 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.month_counter 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.year 0
setstate di_counter 2026-03-22 19:18:06 Smartmeter.Zaehler180.year_counter 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler180n.day 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler180n.day_counter 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler180n.last_counter 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler180n.last_day 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler180n.last_month 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler180n.last_year 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler180n.month 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler180n.month_counter 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler180n.year 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler180n.year_counter 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler280.day 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler280.day_counter 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler280.last_counter 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler280.last_day 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler280.last_month 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler280.last_year 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler280.month 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler280.month_counter 0
setstate di_counter 2026-03-22 00:01:00 Smartmeter.Zaehler280.year 0
setstate di_counter 2026-03-20 16:36:45 Smartmeter.Zaehler280.year_counter 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.day 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.day_counter 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.last_counter 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.last_day 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.last_month 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.last_year 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.month 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.month_counter 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.year 0
setstate di_counter 2026-03-22 19:18:06 SolaxModbus.wr_cum.year_counter 0
setstate di_counter 2026-03-22 21:56:18 Zaehler180
setstate di_counter 2026-03-22 21:56:18 block_day_count_di_counter_Zaehler180 executed
setstate di_counter 2026-03-22 21:59:28 block_get_data condition c01: Can't use string ("") as a HASH ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 1552.\
setstate di_counter 2026-03-22 21:59:11 block_init executed
setstate di_counter 2026-03-22 21:56:18 block_tgz executed
setstate di_counter 2026-03-22 19:08:03 di_counter.EgZaehler.day 40.9
setstate di_counter 2026-03-22 00:01:00 di_counter.EgZaehler.day_counter 62.6
setstate di_counter 2026-03-22 19:08:03 di_counter.EgZaehler.last_counter 103.5
setstate di_counter 2026-03-22 00:01:00 di_counter.EgZaehler.last_day 0
setstate di_counter 2026-03-20 16:36:45 di_counter.EgZaehler.last_month 0
setstate di_counter 2026-03-20 16:36:45 di_counter.EgZaehler.last_year 0
setstate di_counter 2026-03-22 19:08:03 di_counter.EgZaehler.month 103.5
setstate di_counter 2026-03-20 16:36:45 di_counter.EgZaehler.month_counter 0
setstate di_counter 2026-03-22 19:08:03 di_counter.EgZaehler.year 103.5
setstate di_counter 2026-03-20 16:36:45 di_counter.EgZaehler.year_counter 0
setstate di_counter 2026-03-22 19:08:03 di_counter.EtZaehler.day 40.9
setstate di_counter 2026-03-22 00:01:00 di_counter.EtZaehler.day_counter 62.6
setstate di_counter 2026-03-22 19:08:03 di_counter.EtZaehler.last_counter 103.5
setstate di_counter 2026-03-22 00:01:00 di_counter.EtZaehler.last_day 0
setstate di_counter 2026-03-20 16:36:45 di_counter.EtZaehler.last_month 0
setstate di_counter 2026-03-20 16:36:45 di_counter.EtZaehler.last_year 0
setstate di_counter 2026-03-22 19:08:03 di_counter.EtZaehler.month 103.5
setstate di_counter 2026-03-20 16:36:45 di_counter.EtZaehler.month_counter 0
setstate di_counter 2026-03-22 19:08:03 di_counter.EtZaehler.year 103.5
setstate di_counter 2026-03-20 16:36:45 di_counter.EtZaehler.year_counter 0
setstate di_counter 2026-03-22 21:56:18 di_counter.Zaehler180.day 0
setstate di_counter 2026-03-22 19:18:06 di_counter.Zaehler180.day_counter 0
setstate di_counter 2026-03-22 21:56:18 di_counter.Zaehler180.last_counter
setstate di_counter 2026-03-22 19:18:06 di_counter.Zaehler180.last_day 0
setstate di_counter 2026-03-22 19:18:06 di_counter.Zaehler180.last_month 0
setstate di_counter 2026-03-22 19:18:06 di_counter.Zaehler180.last_year 0
setstate di_counter 2026-03-22 21:56:18 di_counter.Zaehler180.month 0
setstate di_counter 2026-03-22 19:18:06 di_counter.Zaehler180.month_counter 0
setstate di_counter 2026-03-22 21:56:18 di_counter.Zaehler180.year 0
setstate di_counter 2026-03-22 19:18:06 di_counter.Zaehler180.year_counter 0
setstate di_counter 2026-03-22 21:56:18 e_di_counter_EgZ 0.000
setstate di_counter 2026-03-22 21:56:18 e_di_counter_Zaehler180
setstate di_counter 2026-03-22 21:56:18 mode enabled
setstate di_counter 2026-03-22 21:56:18 state initialized
setstate di_counter 2026-03-22 21:56:18 timer_01_c02 23.03.2026 00:01:00ZitatWeglassen geht nicht weil Pflichtangabe.
Bei dir ist diese Richtung immer 0 weil die nichts vom Hausnetz in die Batterie speist. ac2dc=0:W wird vermutlich funktionieren, ist aber unschön weil der Wert daraus undef ist.
Ich würde dir vorschlagen in zendure_bridge_b0b21c980b18 ein Reading 'SF_ac2dc' mit dem festen Wert '0' anzulegen und dieses Reading in der Definition anzugeben. Dann liest das Modul immer definiert 0 W.
Anzugeben dann so:attr SolarForecast_dach setupInverterDev02 zendure_bridge_b0b21c980b18\
strings=none\
dc2ac=output_home_power:W\
ac2dc=SF_ac2dc:W\
capacity=1200\
asynchron=0
Edit: Ein kleiner Hinweis zum userReadings. Du hast keinen definierten Trigger angegeben. D.h. das userReading berechnet bei jedem Event des Device MQTT2_shellypro3em_34987a465e38 neu. Wenn du das öfter in deinem System machst, geht das ganz schön auf die Rechnerleistung/Performance. Besser ist es ein bestimmtes Reading des Device als Trigger zu benutzen. Und dann im Attr angeben z.B. so:attr MQTT2_shellypro3em_34987a465e38 userReadings gcon:TriggerReading.* { ReadingsVal($name,"total_act_power",0) > 0 ? ReadingsVal($name,"total_act_power",0) : 0 },\
gfeedin:TriggerReading.* { ReadingsVal($name,"total_act_power",0) < 0 ? abs(ReadingsVal($name,"total_act_power",0)) : 0 }
LG,
Heiko
Zitatmuss ich ac2dc=0:W so definieren, oder kann ich das auch weglassen?Weglassen geht nicht weil Pflichtangabe.
attr SolarForecast_dach setupInverterDev02 zendure_bridge_b0b21c980b18\
strings=none\
dc2ac=output_home_power:W\
ac2dc=SF_ac2dc:W\
capacity=1200\
asynchron=0
attr MQTT2_shellypro3em_34987a465e38 userReadings gcon:TriggerReading.* { ReadingsVal($name,"total_act_power",0) > 0 ? ReadingsVal($name,"total_act_power",0) : 0 },\
gfeedin:TriggerReading.* { ReadingsVal($name,"total_act_power",0) < 0 ? abs(ReadingsVal($name,"total_act_power",0)) : 0 }
Zitat von: satprofi am 22 März 2026, 19:04:51hast du auf allen devices tailscale laufen, oder nur auf fritz ?Ich verstehe die Frage nicht.