Hauptmenü

Stromverbrauch per DOIF?

Begonnen von gestein, 14 Februar 2022, 16:47:37

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: dennis_n am 14 Februar 2023, 13:31:14
So sieht es bei mir aus. Also keine Werte.
Habe auch niergends ein Fehler, im Log oder bei den Readings.
Hast du auch die aktuelle DOIF-Version ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF


Damian

Zitat von: dennis_n am 14 Februar 2023, 13:41:35
Du meinst die von hier?

https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Nein, sorry. Habe eben erst gelesen, dass es eine neue gibt  :-X

Ich meine die aktuelle Version des Beispiels, sondern die aktuelle Version des Programms (update).
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

Achso ja sorry.
Habe mein fhem und somit doif letzte Woche erneuert.

Gruss
Dennis

Damian

Zitat von: dennis_n am 14 Februar 2023, 13:48:09
Achso ja sorry.
Habe mein fhem und somit doif letzte Woche erneuert.

Gruss
Dennis

Nimm am besten die aktuelle (von heute).
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Hallo Damian,

gerade eben musste ich meinen fhem nach einem Update neu starten und das DOIF für den Stromverbrauch hat es wieder nicht überlebt.
Es ist zwar noch in der fhem.cfg, aber es wird nicht angelegt.
Es erscheint auch keine Fehlermeldung im log.

Wenn ich nun das nächste Mal die Konfig abspeichere, ist natürlich das Device auch im fhem.cfg weg.

Kann das mit dem Problem zusammenhängen, dass man das Bespiel nicht einfach so kopieren und das define ausführen kann?

lg, Gerhard

Damian

Zitat von: gestein am 14 Februar 2023, 15:25:19
Hallo Damian,

gerade eben musste ich meinen fhem nach einem Update neu starten und das DOIF für den Stromverbrauch hat es wieder nicht überlebt.
Es ist zwar noch in der fhem.cfg, aber es wird nicht angelegt.
Es erscheint auch keine Fehlermeldung im log.

Wenn ich nun das nächste Mal die Konfig abspeichere, ist natürlich das Device auch im fhem.cfg weg.

Kann das mit dem Problem zusammenhängen, dass man das Bespiel nicht einfach so kopieren und das define ausführen kann?

lg, Gerhard

Die Daten werden in versteckten Readings des Devices abgelegt, diese werden bei save oder shutdown in der save-Datei vom FHEM gespeichert. Möglicherweise ist in global autosave bei dir  durch einen Absturz abgeschaltet (Wert 0).
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Hallo Damian,

es geht um das Device an sich, nicht nur um die Readings.
Bei einem Reboot wird das Device nicht mehr angelegt, obwohl es in der fhem.cfg steht.

lg, Gerhard

KernSani

ZitatKann das mit dem Problem zusammenhängen, dass man das Bespiel nicht einfach so kopieren und das define ausführen kann?
wie legst du das Ding denn an? Das sollte sich einfach über "Raw input" einfügen lassen.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

gestein

Lässt es sich aber leider nicht (siehe auch den Beitrag von z.B. Roger).

Bei komplexeren Definitionen von DOIF klappt das Anlegen per "+" nicht.
Dann muss man das DOIF mit einer leeren Definition anlegen und die komplexe Definition dann in einem zweiten Schritt in der Device-Ansicht ändern.

lg, Gerhard

Damian

Zitat von: gestein am 14 Februar 2023, 16:59:36
Lässt es sich aber leider nicht (siehe auch den Beitrag von z.B. Roger).

Bei komplexeren Definitionen von DOIF klappt das Anlegen per "+" nicht.
Dann muss man das DOIF mit einer leeren Definition anlegen und die komplexe Definition dann in einem zweiten Schritt in der Device-Ansicht ändern.

lg, Gerhard

Kann ich bei mir nicht bestätigen. Das aktuelle Beispiel kann ich  per + ohne Probleme definieren. Es handelt sich um ein Testsystem, wo zuvor dieses Device nicht existierte. Es handelte sich um einen schwachen PI-2. An der Performance des Rechners kann es also auch nicht liegen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Roger

Ich kann Entwarnung geben.
Nach update geht das Anlegen im Telnet (also auch ohne erst ein leeres Device anzulegen) ohne Fehler.
Nun muss ich die Definition an meine Konfiguration anpassen.

Danke //Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron

gestein

Auch bei mir klappt das Importieren des Beispiels nach dem gestrigen Update nun ohne Probleme.

Allerdings verschwindet mein selbstgeschriebenes DOIF nach einem Reboot immer noch.
Es steht zwar im fhem.cfg (zumindest bis ich eine Änderung speichere), wird aber nicht angelegt.
Im log erscheint dafür die gesamte Definition des Devices, aber ohne eine Fehlermeldung.

Wenn ich den Code aus fhem.cfg kopiere und per "+" in FHEM einfüge, bekomme ich wieder die altbekannte Fehlermeldung.
- Import mit "\" am Zeilenende -> Fehlermeldung "di_counter_new2 DOIF: :energy_total_kWh: subs {"
  Dann folgt der Code der Definition. Leider aber im Dialogfenster abgeschnitten, da zu lang
- Import ohne "\" am Zeilenende -> Fehlermeldung "di_counter_new DOIF: Perlblck: no right bracket: {"
  Das ist aber klar.

@Damian: Könntest Du bitte mal versuchen meine Defintion des "di_counter_new2" zu importieren?
Klappt das bei Dir auch?
Überlebt die Definition des Devices auch einen Reboot von FHEM?

Danke im Voraus
lg, Gerhard

define di_counter_new2 DOIF subs {\
\
sub CalculateSums {\
  my $Reading=::AttrVal("$SELF","EnergyReading","");;\
  my $Prefix=::AttrVal("$SELF","SummaryPrefix","");;\
  my ($DefFilterName,$DefFilter)=split /;;/, ::AttrVal("$SELF","SummaryFilter","");;\
\
##  my $readings = $::defs{$d}->{READINGS};;\
  my @Categories=split /,/, ::AttrVal("$SELF","SummaryList","");;\
\
  if (@Categories > 0) {\
    foreach my $Category (@Categories) {\
          my ($Name,$Filter)=split /;;/, $Category;;\
            $Filter =~s/$DefFilterName/$DefFilter/ig;;\
          my @Devices = ::devspec2array($Filter);;\
      my $counter_temp=0;;\
      my $hour_temp=0;;\
      my $hour_counter_temp=0;;\
      my $quarter_temp=0;;\
      my $quarter_counter_temp=0;;\
          \
          set_Reading("test_$Name","$Filter;; $DefFilterName, $DefFilter",0);;\
\
      foreach my $Device (@Devices) {\
        $counter_temp+=get_Reading("$Device\.$Reading\_counter",0);;\
        $hour_temp+=get_Reading("$Device\.$Reading\_hour",0);;\
        $hour_counter_temp+=get_Reading("$Device.$Reading\_hour_counter",0);;\
        $quarter_temp+=get_Reading("$Device\.$Reading\_quarter",0);;\
        $quarter_counter_temp+=get_Reading("$Device\.$Reading\_quarter_counter",0);;\
          }\
      set_Reading($Prefix."$Name\_counter",$counter_temp);;\
      set_Reading($Prefix."$Name\_hour",$hour_temp);;\
      set_Reading($Prefix."$Name\_hour_counter",$hour_counter_temp);;\
      set_Reading($Prefix."$Name\_quarter",$quarter_temp);;\
      set_Reading($Prefix."$Name\_quarter_counter",$quarter_counter_temp);;\
  }\
  }\
}\
\
sub SumUpCategories {\
  my ($device,$reading,$diff)=@_;;\
  my ($DefFilterName,$DefFilter)=split /;;/, ::AttrVal("$SELF","SummaryFilter","");;\
  my @Categories=split /,/, ::AttrVal("$SELF","SummaryList","");;\
  \
    return if (@Categories == 0);;\
\
        foreach my $Category (@Categories) {\
          my ($Name,$Filter)=split /;;/, $Category;;\
            $Filter =~s/$DefFilterName/$DefFilter/ig;;\
          my @Devices = ::devspec2array($Filter);;\
                if(grep(/^$device$/, @Devices )) {\
                  my $alias=::AttrVal("$device","alias","");;\
                        set_Reading("test.$device","gefunden in $Name ($alias): $diff",0);;\
                        ::Log 1, "SumUpCategories;; $diff;; $device;; $Name ($alias);; ".get_Reading("$Name.$reading.day",0);;\
##                      set_Reading("$Name.$reading.last_counter",get_Reading ("$Name.$reading.last_counter",0)+$diff,1);;\
                set_Reading("$Name.$reading.day",get_Reading("$Name.$reading.day",0)+$diff,1);;\
                set_Reading("$Name.$reading.month",get_Reading("$Name.$reading.month",0)+$diff,1);;\
                set_Reading("$Name.$reading.year",get_Reading("$Name.$reading.year",0)+$diff,1);;\
                }\
        }    \
}\
\
sub midnight { ## Diese Funktion wird um Mitternacht ausgeführt\
  my ($device,$reading,$mday,$yday,$newval)=@_;;\
  set_Reading("$device.$reading.day_counter",$newval);;\
  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(($newval-(get_Reading("$device.$reading.month_counter",0)))*1000)/1000,1);;\
  set_Reading("$device.$reading.year",int(($newval-(get_Reading("$device.$reading.year_counter",0)))*1000)/1000,1);;\
\
  if ($mday == 1) {\
    set_Reading("$device.$reading.month_counter",$newval);;\
    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",$newval);;\
      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,$newval)=@_;;\
  my $alias=::AttrVal($device, "alias","");;\
  \
  if($alias ne "") {set_Reading("$device.$reading",$alias);;}\
  if (get_Reading("$device.$reading.day_counter","") eq "") {   ## Initialisierung der Readings\
    ## aktuellen Zählerstand initialisieren\
    set_Reading("$device.$reading.last_counter",$newval);;\
    set_Reading("$device.$reading.day_counter",$newval);;       \
    set_Reading("$device.$reading.month_counter",$newval);;\
    set_Reading("$device.$reading.year_counter",$newval);;\
  \
    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\
\
resetAllEnergyData {\
  foreach my $Device (::devspec2array(::AttrVal("$SELF","UsedDevFilter",""))) {\
        if(ReadingsVal("$Device","relay_0_energy_total","err") ne "err") {\
                fhem("setreading $Device relay_0_energy_total 0");;\
                fhem("setreading $Device energy_total 0");;\
                fhem("setreading $Device energy_total_kWh 0");;\
                fhem("setreading $Device energy_total_reset done");;\
        } elsif(ReadingsVal("$Device","relay_1_energy_total","err") ne "err") {\
                fhem("setreading $Device relay_1_energy_total 0");;\
                fhem("setreading $Device energy_total 0");;\
                fhem("setreading $Device energy_total_kWh 0");;\
                fhem("setreading $Device energy_total_reset done");;\
        } elsif(ReadingsVal("$Device","light_0_energy_total","err") ne "err") {\
                fhem("setreading $Device light_0_energy_total 0");;\
                fhem("setreading $Device energy_total 0");;\
                fhem("setreading $Device energy_total_kWh 0");;\
                fhem("setreading $Device energy_total_reset done");;\
        }\
  }\
}\
\
get_data {                             ## Optionale Übernahme bestehender Daten aus dem Log\
  my $reading=::AttrVal("$SELF","EnergyReading","");;\
\
  foreach my $Device (::devspec2array(::AttrVal("$SELF","UsedDevFilter",""))) {\
    ::DOIF_set_card_data ("$SELF","$SELF","$Device.$reading.last_day","bar1month",-300,fhem("get log.counter.$Device.$reading ./log/counter.$Device.$reading.log - 2000 3000 4:last_day"));;\
    ::DOIF_set_card_data ("$SELF","$SELF","$Device.$reading.last_month","bar2year",-300,fhem("get log.counter.$Device.$reading ./log/counter.$Device.$reading.log - 2000 3000 4:last_month"));;\
        ::DOIF_set_card_data ("$SELF","$SELF","$Device.$reading.last_year","bar2decade",-300,fhem("get log.counter.$Device.$reading ./log/counter.$Device.$reading.log - 2000 3000 4:last_year"));;\
        }\
}\
\
deleteAllReadings {\
        fhem("deletereading $SELF .*");;\
}\
\
mid {[00:01];;                          ## Sicherung der Daten um Mitternacht\
  my $newval=ReadingsVal($device, $reading,0);;\
  my $reading=::AttrVal("$SELF","EnergyReading","");;\
  foreach my $Device (::devspec2array(::AttrVal("$SELF","UsedDevFilter",""))) { ## Für jeden Zähler wird die Funktion midnight aufgerufen\
    midnight($Device,$reading,$mday,$yday,$newval);;\
  }\
  my @Categories=split /,/, ::AttrVal("$SELF","SummaryList","");;\
    foreach my $Category (@Categories) {\
          my ($Name,$Filter)=split /;;/, $Category;;\
          $newval=get_Reading("$Name.$reading.day",0);;\
          midnight($Name,$reading,$mday,$yday,$newval);;\
         }\
}\
\
init {                                ## initialisierung aller Readings\
  my $reading=::AttrVal("$SELF","EnergyReading","");;\
  my $newval=0;;\
  foreach my $Device (::devspec2array(::AttrVal("$SELF","UsedDevFilter",""))) {## Für jeden Zähler werden Readings über die Funktion init_readings initialisiert\
    $newval=ReadingsVal($Device, $reading,0);;\
        init_readings($Device,$reading,$newval);;\
  }\
  my @Categories=split /,/, ::AttrVal("$SELF","SummaryList","");;\
    foreach my $Category (@Categories) {\
          my ($Name,$Filter)=split /;;/, $Category;;\
          my ($DefFilterName,$DefFilter)=split /;;/, ::AttrVal("$SELF","SummaryFilter","");;\
            $Filter =~s/$DefFilterName/$DefFilter/ig;;\
          my @Devices = ::devspec2array($Filter);;\
          set_Reading("$Name.members","@Devices");;\
          $newval=0;;\
          foreach my $Device (@Devices) {\
            $newval+=ReadingsVal("$Device","$reading",0);;\
          }\
          init_readings($Name,$reading,$newval);;\
         }\
}\
\
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);;\
          \
          if ($diff>0) {\
                SumUpCategories("$1","$2",$diff);;\
          }\
          }\
)\
\
##https://forum.fhem.de/index.php/topic,84969.msg1208710.html#msg1208710\
CalculateQuarterSums { [([+:15]+[00:01])];;\
##      set_Reading("Summary_Total_last_quarter_sum",[?#sum:"^$SELF$":"last_quarter$"]);;\
##      CalculateSums();;\
}\
CalculateHourSums { [:01];;\
##      set_Reading("Summary_Total_last_hour_sum",[?#sum:"^$SELF$":"last_hour$"]);;\
##      CalculateSums();;\
}\
\
\
## 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\
## FOR(::devspec2array("id=shelly.*:FILTER=disable!=1"), TPL_stat ($_,energy_total))\
FOR(::devspec2array(::AttrVal("$SELF","UsedDevFilter","")), TPL_stat ($_,energy_total_kWh))
attr di_counter_new2 userattr SummaryList SummaryPrefix SummaryFilter UsedDevFilter EnergyReading
attr di_counter_new2 EnergyReading energy_total_kWh
attr di_counter_new2 SummaryFilter <default>;;id=shelly.*:FILTER=disable!=1
attr di_counter_new2 SummaryList Haushalt;;<default>:FILTER=group=Haushaltsgeräte,Multimedia;;<default>:FILTER=group=Multimedia,Licht;;<default>:FILTER=group=Licht,IT;;<default>:FILTER=group=IT
attr di_counter_new2 UsedDevFilter id=shelly.*:FILTER=disable!=1
attr di_counter_new2 comment https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler
attr di_counter_new2 room Verbrauch
attr di_counter_new2 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",undef,$4,$5,$8,$9,"$10",undef,"1","130,1,1,0,1,0,200","0,0,0,0")|card([$SELF:$2.$3.last_day:col4w],"$1 in $10 pro Tag",undef,$4,$5,$8,$9,"$10",undef,"1","130,1,1,0,1,0,200","0,0,0,0")|card([$SELF:$2.$3.last_month:col365d],"$1 in $10 pro Monat",undef,$6,$7,$8,$9,"$10",undef,"0","130,1,1,0,1,0,200","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,0,200","0,0,0,0,2")|\
card([[$SELF:$3.$4.last_day:col4w],[$SELF:$6.$7.last_day:col4w]],"$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:col365d],[$SELF:$6.$7.last_month:col365d]],"$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")\
)\
\
DEF TPL_single_bar (\
card([$SELF:$2.$3.day:col1w],"$1 Tagesverlauf",undef,$4,$5,$10,$11,"$12",undef,"1","130,1,1,0,1,0,200")|\
card([$SELF:$2.$3.last_day:bar1month-300],"$1 in $12 pro Tag",undef,$4,$5,$10,$11,"$12",undef,"1","130,1,1,0,1,0,200")|\
card([$SELF:$2.$3.last_month:bar2year-300],"$1 in $12 pro Monat",undef,$6,$7,$10,$11,"$12",undef,"0","130,1,1,0,1,0,200")|\
card([$SELF:$2.$3.last_year:bar2decade-300],"$1 in $12 pro Jahr",undef,$8,$9,$10,$11,"$12",undef,"0","130,1,1,0,1,0,200")\
)\
\
DEF TPL_double_bar (\
card([[$SELF:$3.$4.day:col1w],[$SELF:$6.$7.day:col1w]],"$1 Tagesverlauf in $16",undef,$8,$9,$14,$15,["$2","$5"],undef,"1","130,1,1,0,1,0,200","0,0,0,0,2")|\
card([[$SELF:$3.$4.last_day:bar1month-300],[$SELF:$6.$7.last_day:bar1month-300]],"$1 in $16 pro Tag",undef,$8,$9,$14,$15,["$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:bar2year-300]],"$1 in $16 pro Monat",undef,$10,$11,$14,$15,["$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_year:bar2year-300]],"$1 in $16 pro Jahr",undef,$12,$13,$14,$15,["$2","$5"],undef,"0","130,1,1,0,1,0,200","0,0,0,0,2")\
)\
## Die Visualisierung einer Tabellenzeile wird über die obigen beiden Templates vorgenommen, hier zeilenweise anpassen/löschen:\
\
## Über das Template TPL_single wird jeweils pro card ein Wert visualisiert\
##          Überschrift,Device,Reading,minTag,maxTag,minMonat,maxMonat,minColor,maxColor,Einheit\
## TPL_single (Frischwasser,MQTT2_DVES_C58DCB,total_w,0,500,0,10000,90,0,Liter)\
TPL_single_bar (Kühlkombi,MQTT2_shelly1pm_8CAAB50568DC,energy_total_kWh,0,0.2,0,20,0,200,90,0,kWh)\
TPL_single_bar (Tiefkühler Küche,MQTT2_shellyswitch25_4C752533F65D_CH2,energy_total_kWh,0,1,0,20,0,200,90,0,kWh)\
TPL_single_bar (Kühlschrank Küche,MQTT2_shellyswitch25_4C752533F65D,energy_total_kWh,0,0.5,0,20,0,200,90,0,kWh)\
\
card([$SELF:MQTT2_shellyplus1pm_3C610579C02C.energy_total_kWh.day:col1w],"Backrohr Tagesverlauf",undef,0,5,90,0,"kWh",undef,"1","130,1,1,0,1,0,200")\
TPL_single_bar (Backrohr,MQTT2_shellyplus1pm_3C610579C02C,energy_total_kWh,0,3,0,20,0,200,90,0,kWh)\
TPL_single_bar (Geschirrspüler,MQTT2_shellyplug_s_EA69D4,energy_total_kWh,0,1,0,20,0,200,90,0,kWh)\
TPL_single_bar (Fernseher,MQTT2_shellyplug_s_B587C8,energy_total_kWh,0,2,0,20,0,200,90,0,kWh)\
TPL_single_bar (Haushaltsgeräte, Haushalt,energy_total_kWh,0,5,0,20,0,200,90,0,kWh)\
TPL_single_bar (IT, IT,energy_total_kWh,0,5,0,20,0,200,90,0,kWh)\
card([$SELF:IT.energy_total_kWh.day:col1w],"IT Tagesverlauf",undef,0,5,90,0,"kWh",undef,"1","130,1,1,0,1,0,200")|\
card([$SELF:IT.energy_total_kWh.last_day:bar1month-300],"IT in kWh pro Tag",undef,0,5,90,0,"kWh",undef,"1","130,1,1,0,1,0,200")|\
card([$SELF:IT.energy_total_kWh.last_month:bar2year-300],"IT in kWh pro Monat",undef,0,20,90,0,"kWh",undef,"0","130,1,1,0,1,0,200")|\
card([$SELF:IT.energy_total_kWh.last_year:bar2decade-300],"IT in kWh pro Jahr",undef,0,200,90,0,"kWh",undef,"0","130,1,1,0,1,0,200")

Damian

Hast du bei dir im Device global beim Attribut autosave schon geschaut?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Das Attribut ist tatsächlich auf "0" gesetzt.

Aber ich sichere die fhem.cfg auch immer manuell.
Und wie gesagt, in der fhem.cfg steht die definition ja auch drinnen.

Dann versuche mit mal mein Glück mit "autosave 1".

Danke, lg, Gerhard