Sicher ist meine Anforderung sehr speziell und ich denke das nur ein DOIF das kann, welches aber sicher mit Perl arbeiten muss und davon habe ich so gut wie gar keine Ahnung, aber evtl. schaffe ich es mit eurer Hilfe.
Folgendes möchte ich erreichen den Jahres Ertrag meiner PV Anlage, denn den kann ich nicht auslesen, ich habe aber die Monatserträge, sicher ahnt ihr schon was jetzt kommt...!! :D
Das DOIF soll jetzt immer am letzten Monatstag, das ja der 29., 30. und 31. sein kann, den Wert aus einem dummy (dummy hat den Monatswert, siehe list) gegen 23 Uhr auslesen.
Desweiteren soll es eben dann die ausgelsenene Werte addieren bis eben 12 Monate um sind.
Ist das möglich mit einem DOIF oder muss ich mehrere Module nutzen/haben..?
defmod growatt.0.294937.devices.QMB39212B4.deviceData.eMonth dummy
attr growatt.0.294937.devices.QMB39212B4.deviceData.eMonth alias eMonth
attr growatt.0.294937.devices.QMB39212B4.deviceData.eMonth comment Auto-created by ioBroker fhem.0
attr growatt.0.294937.devices.QMB39212B4.deviceData.eMonth group growatt.0.294937.devices.QMB39212B4.deviceData
attr growatt.0.294937.devices.QMB39212B4.deviceData.eMonth room ioB_IN
Hallo moonsorrox
ich selber habe das mit einen at und at_ultimo gelöst aber mit einen DOIF sollte das auch gehen.
vieleicht hilft das hier weiter
https://forum.fhem.de/index.php/topic,71398.msg629063.html#msg629063 (https://forum.fhem.de/index.php/topic,71398.msg629063.html#msg629063)
https://forum.fhem.de/index.php/topic,117269.msg1116447.html#msg1116447 (https://forum.fhem.de/index.php/topic,117269.msg1116447.html#msg1116447)
gruss Stephan
Natürlich geht das. Auf verschiedenen Wegen. ABER: was ist, wenn am Ultimo um 23 Uhr gerade kein Fhem geht? Dann fehlt dir ein Monat. Wer setzt den Wert der PV eigentlich zurück?
ich werde mir das alles mal anschauen ob ich damit weiterkomme.
Zitat von: Per am 26 August 2022, 22:35:09
Natürlich geht das. Auf verschiedenen Wegen. ABER: was ist, wenn am Ultimo um 23 Uhr gerade kein Fhem geht? Dann fehlt dir ein Monat. Wer setzt den Wert der PV eigentlich zurück?
man kanns relativ robust machen, wenn man es wie folgt umsetzt, da du ja wohl auch immer den absoluten zählerstand haben wirst? dafür bräuchte man dann 2 dummys/readings (zählerstandvortag,ertrag). dann legt man zb ein notify auf den zähler an und prüft dort als erstes wann der zählerstandvortag das letzte mal aktualisiert wurde (mit ReadingsTimestamp() ). wenn man es tagweise erfassen will, müsste man also prüfen, ob der tag des aktuellen timestamp - tag des timestamp des readings größer als 1 ist. wenn dem so ist, dann wird der wert des zählers - zählerstandvortag als neuer wert in ertrag geschrieben. da kann man dann auch noch weitere sachen berücksichtigen, um es noch robuster zu machen.
das ginge auch noch viel sparsamer, aber zählerstände werden normal nicht sekündlich erfasst, was dann auch nicht viel ausmacht, wenn da ein paar if abfragen umsonst gemacht werden. davon ab würde es dann noch deutlich komplexer werden. ich hab das so zb für die erfassung meines gasverbrauches umgesetzt, der nur alle 5 minuten aktualisiert wird.
Besser ist es mit absoluten Angaben eines Zähler zu hantieren, denn dann kann ruhig zwischendurch etwas verloren gehen.
Daraus kann man auch Leistung bestimmen:
https://forum.fhem.de/index.php/topic,97959.msg1225965.html#msg1225965
Und hiermit kann ich die Energie pro Tag, Monat, Jahr ermitteln, loggen und visualisieren. Es reicht die Angabe des Readings der verbrauchten Energie des Zählers, alles andere ist hier programmiert:
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
@Damian
das ist ein mächtiges Teil und ich habe versucht für mich anzupassen, aber das gelingt mir nicht recht, da ich ja kein Tasmota nutze für PV und somit bekomme ich immer Fehler.
Das log.counter habe ich auch nicht.
Werde es aber weiter probieren
Da einiges an Perl drin ist weiß ich nicht recht was ich dort nutzen kann/soll und was nicht. Ich habe ja die Tageswerte und Monatswerte alle als dummy vorhanden damit muss ich es ausprobieren.
@Guybrush
Tages werte sind nicht das was ich brauche die habe ich... ich möchte aus den Monatswerten den Jahresverbrauch errechnen, denn den habe ich nicht.
Der Monastwert wird immer am 1. des Monats auf 0 gestellt, deshalb möchte ich jeweils am Ende des Monats den Wert zu den den schon vorhandenen Monaten dazu rechnen.
Einige Ansätze habe ich ja hier schon und werde es probieren ob ich das hin bekomme
Das nutze ich bisher das ist einmal der Monatswert und der Gesamtwert (Wert seit Installation der Anlage).
Jahreswert fehlt mir also obwohl das DOIF *di_growatt_monatJahr heißt
defmod di_growatt_monatJahr DOIF {}
attr di_growatt_monatJahr alias PV - Anlage - Monats Leistung - Jahres Leistung
attr di_growatt_monatJahr group 1_PV Anlage
attr di_growatt_monatJahr room ioB_OUT
attr di_growatt_monatJahr sortby 02
attr di_growatt_monatJahr uiTable { package ui_Table;;\
$TC{1.2}="align='center'" ## zentrierte Ausrichtung der zweiten und dritten Spalte\
\
}\
\
## Tabellendefinition\
## Farbe grün 1.Card\
## card([growatt.0.294937.devices.QMB39212B4.deviceData.eMonth:state:col4w],"Leistung Monat","measure_power",0,1340,undef,undef,"KW",[500,120,1000,60,1250,0],"1","220,,,,,1,200",undef,undef)|\
##\
card([growatt.0.294937.devices.QMB39212B4.deviceData.eMonth:state:col4w],"Leistung Monat","measure_power",0,1350,undef,undef,"KW",\&temp_hue,"1","220,,,,,1",undef,undef)|\
card([growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state:col52w],"Leistung Gesamt","measure_power_meter",0,undef,undef,undef,"KW",[500,120,1000,60,1250,0],"1","220,,,,,1,210",undef,undef)|
Ich (!) würde den Gesamtwert nehmen und am 01.01. speichern. Und den gespeicherten Wert vor dem überschreiben vom aktuellen Wert abziehen. Das kann dann auch etwas später erfolgen (im Notfall), sooo exakt muss der Wert ja nicht sein.
Wie heißt das Reading von deinem Growatt, wo fortlaufend die Energie gezählt wird?
Ich hatte mit jetzt überlegt es so zu machen: erst mal nur mit Zeiten ausprobiert. Ich habe es in der commandref von DOIF gefunden die Zeiten zu addieren.
die erste Zeit soll dann das Monatsende sein, also at_ultimo
die zweite Zeit soll dann Datum 01.01. sein.
Muss mir nur noch die Zeiten dafür zusammen suchen.
Kann ich für ([19:00]) auch das ([at_ultimo]) einsetzen..? Das wäre dann Monatsende
defmod di_ultimo_pvanlage DOIF ([19:00]) (set du_pvjahr {([du_pvjahr]+[growatt.0.294937.devices.QMB39212B4.deviceData.eMonth:state])}) DOELSEIF ([18:58]) (set du_pvjahr 0)
attr di_ultimo_pvanlage alias Anzeige Jahr PV-Anlage
attr di_ultimo_pvanlage group 1_PV Anlage
attr di_ultimo_pvanlage room AutomationTest
Folgende Readings gibt es:
growatt.0.294937.devices.QMB39212B4.deviceData.pac --> Tageswert aktuell
growatt.0.294937.devices.QMB39212B4.deviceData.eToday --> Tages Gesamt Wert - wird am nächsten Tag auf 0 gesetzt
growatt.0.294937.devices.QMB39212B4.deviceData.eMonth --> Monatswert - wird am Tag des neuen Monats zurück gesetzt
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal --> Gesamt Wert seit Installation
ZitatKann ich für ([19:00]) auch das ([at_ultimo]) einsetzen..? Das wäre dann Monatsende
Da bin ich mir nicht sicher {at_ultimo} ist eine Funktion die man im at Aufrufen kann.
In Deinen DOIF würde für
([19:00])
dieses funktionieren.
([23:59] and (strftime ("%d",localtime time+86400) == 01))
hier wird jetzt jeden Tag um 23:59 geprüft ob der nächste Tag 01 ist.
Aber vieleicht ist das statistic Modul für Deine Anwendung noch geeigneter.
Damit kannst Du alle laufenden Zähler automatisch aufaddieren und sie werden dann wie Du möchstest als Stunden Tag Monat und Jahres Zahlen abgelegt.
Und das ganze dann auch noch für die lezte Stunde Tag Monat Jahr.
https://wiki.fhem.de/wiki/Statistics (https://wiki.fhem.de/wiki/Statistics)
Gruss
Stephan
Du brauchst nur in meinem geposteten Beispiel die push-Zeilen gegen diese eine Zeile ersetzen:
push (@{$_counter},["growatt.0.294937.devices.QMB39212B4.deviceData.eTotal","state"]);
und schon wird täglich, monatlich und jährlich die Energie berechnet und geloggt.
Und wenn du es noch visualisieren willst, dann kannst du diese drei Zeilen in die uiTable einsetzen:
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","130,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","130,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","130,1,1,0,1,,200","0,0,0,0,2")
Mehr muss man nicht tun. Ich hatte gehofft, die Beispiele wären verständlich gewesen ;)
Zitat von: moonsorrox am 28 August 2022, 15:55:09
@Guybrush
Tages werte sind nicht das was ich brauche die habe ich... ich möchte aus den Monatswerten den Jahresverbrauch errechnen, denn den habe ich nicht.
Der Monastwert wird immer am 1. des Monats auf 0 gestellt, deshalb möchte ich jeweils am Ende des Monats den Wert zu den den schon vorhandenen Monaten dazu rechnen.
das war ja nur ein Beispiel. Wenn es jahresbasiert sein soll, musst du halt nur das Jahr statt des Tages vergleichen ::)
von deinem geschilderten szenario her, würde ich den monatszähler nicht verwenden, sondern nur den gesamtzähler. das ist im zweifel robuster und bei dem von mir aufgezeigten weg hast du dann auch kein problem, wenn fhem mal ausfallen sollte. läuft bei mir so seit jahren fehlerfrei
@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
Sieht doch gut aus. Wenn du set di_counter_new mid aufrufst, dann wird die Mitternachtsroutine ausgeführt, damit wird dein Tageszähler wieder auf Null gesetzt.
Ansonsten sollten sich bei jedem Trigger deines growatt-total-Readings die Readings ...day, ....month, .....year erhöhen. Um Mitternacht siehst du bei ....last_day den Tagesverbrauch, am Monatsende bei ....last_month den Monatsverbrauch usw.
Es war aber den ganzen Tag nichts zu sehen, deshalb dachte ich ich habe einen Fehler gemacht
Hiernach werden die Readings gefüllt:
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
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day sollte sich ebenfalls erhöhen, solange du den set-Befehl nicht aufrufst.
Für die Diagrammdarstellung musst du ggf. die Grenzen anpassen. Der Maximalbetrag beim Tagesverbrauch steht hier auf 30 (30 KWh).
Beim Diagramm war noch ein Fehler drin, es müsste eher heißen
card([di_counter_new:growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day:col],"Solarenergie Tagesverlauf in KWh","",0,30,30,90,"kWh",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,"kWh",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,"kWh",undef,"0","160,1,1,0,1,,200","0,0,0,0,2")
das mit dem anpassen mache ich noch denn soviel erzeugt meine Anlage nicht, aber ich wollte erst einmal in den Card's Werte haben aber da sind keine Werte drin und ich habe heute mittag das erste mal drauf geschaut da war alles 0.
Habe schon das neue Format eingegeben nun sind sie auch untereinander gerutscht, ich weiß man kann es einstellen das suche ich mir aber wieder zusammen
Zitat von: moonsorrox am 29 August 2022, 22:00:37
das mit dem anpassen mache ich noch denn soviel erzeugt meine Anlage nicht, aber ich wollte erst einmal in den Card's Werte haben aber da sind keine Werte drin und ich habe heute mittag das erste mal drauf geschaut da war alles 0.
Habe schon das neue Format eingegeben nun sind sie auch untereinander gerutscht, ich weiß man kann es einstellen das suche ich mir aber wieder zusammen
Wenn uiTable editierst, dann darf am Ende nicht \ stehen.
Zitat von: Damian am 29 August 2022, 22:03:31
Wenn uiTable editierst, dann darf am Ende nicht \ stehen.
OK, dass war mir neu habe es jetzt :D :
jetzt muss ich nur nochmal nachschauen warum er mir am Tage nichts angezeigt hat und den Ertrag pro Tag, denn er hat heute 4,4 KWh gemacht
Zitat von: moonsorrox am 29 August 2022, 22:05:27
OK, dass war mir neu habe es jetzt :D :
jetzt muss ich nur nochmal nachschauen warum er mir am Tage nichts angezeigt hat und den Ertrag pro Tag
Es wird ja auch ein Logfile automatisch erzeugt (Raum logs) dort sollten alle Werte geloggt werden.
da muss ich noch irgendwo ein Fehler haben denn da steht nichts weiter drin.
2022-08-29_17:32:17 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_17:30:07 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
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
Zitat von: moonsorrox am 29 August 2022, 22:10:53
da muss ich noch irgendwo ein Fehler haben denn da steht nichts weiter drin.
2022-08-29_17:32:17 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_17:30:07 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
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
Wahrscheinlich hast du so oft den set-Befehl aufgerufen. Ich habe bei mir geschaut, es werden nur die last_-Werte um Mitternacht geloggt
Ja das kann sein, weil nichts zu sehen war... ich warte mal auf morgen und lasse den in Ruhe.
Habe die Card angepasst und morgen schaue ich dann mal und melde mich
Zitat von: moonsorrox am 29 August 2022, 22:19:10
Ja das kann sein, weil nichts zu sehen war... ich warte mal auf morgen und lasse den in Ruhe.
Habe die Card angepasst und morgen schaue ich dann mal und melde mich
Wenn Strom produziert wird, dann muss sich das Reading ...day, ...month, ...year (nicht die last-Readings) mit der Genauigkeit von eine Nachkommastelle im Laufe des Tages erhöhen.
Als du den ersten set-Befehl aufgerufen hast, hast du bereits 3,5 kWh produziert - das kann man in den Readings sehen;)
Heute nun aktuell wieder die Anzeigen alle auf "0"
log zeigt dieses
2022-08-30_00:01:00 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_17:32:17 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
2022-08-29_17:30:07 di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day: 0
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
aktuelle Readings von 14.14 Uhr
READINGS:
2022-08-29 22:13:58 block_init executed
2022-08-30 00:01:00 block_mid executed
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day 0
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day_counter 3277.3
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_counter 3272.9
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day 0
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month 0
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_year 0
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.month 4.4
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.month_counter 3272.9
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.year 4.4
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.year_counter 3272.9
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.day 0
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.day_counter 3277
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_counter 3277
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_day 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_month 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_year 0
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.month 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.month_counter 3277
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.year 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.year_counter 3277
2022-08-29 18:15:35 mode enabled
2022-08-29 18:15:35 state initialized
2022-08-30 00:01:00 timer_01_c01 31.08.2022 00:01:00
hier nochmal das komplette list vom DOIF
Internals:
DEF 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
FUUID 630bd9d8-f33f-b063-1079-ce0c5cef23a3ed33
MODEL Perl
NAME di_counter_new
NOTIFYDEV global,di_counter_new
NR 1566
NTFY_ORDER 50-di_counter_new
STATE initialized
TYPE DOIF
VERSION 26182 2022-06-29 18:57:26
eventCount 5
READINGS:
2022-08-29 22:13:58 block_init executed
2022-08-30 00:01:00 block_mid executed
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day 0
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day_counter 3277.3
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_counter 3272.9
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day 0
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month 0
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_year 0
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.month 4.4
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.month_counter 3272.9
2022-08-30 00:01:00 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.year 4.4
2022-08-28 23:11:41 growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.year_counter 3272.9
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.day 0
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.day_counter 3277
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_counter 3277
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_day 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_month 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.last_year 0
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.month 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.month_counter 3277
2022-08-29 17:46:54 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.year 0
2022-08-29 17:46:42 growatt.0.294937.devices.QMB39212B4.totalData.eTotal.state.year_counter 3277
2022-08-29 18:15:35 mode enabled
2022-08-29 18:15:35 state initialized
2022-08-30 00:01:00 timer_01_c01 31.08.2022 00:01:00
Regex:
accu:
collect:
di_counter_new:
collect:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day ^di_counter_new$:^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day ^di_counter_new$:^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month ^di_counter_new$:^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month:
uiTable:
di_counter_new:
di_counter_new_uiTable_c_0_0_0_0:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day ^di_counter_new$:^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day:
di_counter_new_uiTable_c_0_1_0_0:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day ^di_counter_new$:^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day:
di_counter_new_uiTable_c_0_2_0_0:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month ^di_counter_new$:^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month:
card:
animate 0
collect:
di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day:
24:
animate 0
dim 72
hours 24
last
last_v 0
last_value 0
max_value 0
max_value_slot 71
max_value_time 1661861454
min_value 0
min_value_slot 71
min_value_time 1661861454
name di_counter_new
reading growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day
time 1661861580
value 0
times:
undef
undef
undef
undef
1661780901
undef
undef
undef
1661786299
1661786652
1661787888
1661789583
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
1661802761
1661803291
undef
undef
undef
undef
undef
1661810460
1661811753
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
1661857893
undef
undef
1661861454
values:
undef
undef
undef
undef
0
undef
undef
undef
0
0
0
0
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
0
0
undef
undef
undef
undef
undef
0
0
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
0
undef
undef
0
di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day:
672:
animate 0
dim 72
hours 672
last
last_v 0
max_value 0
max_value_slot 71
max_value_time 1661857893
min_value 0
min_value_slot 71
min_value_time 1661857893
name di_counter_new
reading growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day
time 1661861580
value 0
times:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
1661721296
1661722553
1661774660
1661789583
undef
1661857893
values:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
0
0
0
0
undef
0
di_counter_new growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month:
8760:
animate 0
dim 72
hours 8760
last_v 0
max_value 0
max_value_slot 71
max_value_time 1661789583
min_value 0
min_value_slot 71
min_value_time 1661789583
name di_counter_new
reading growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month
time 1661861580
value 0
times:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
1661726292
1661789583
values:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
0
0
condition:
0 ::DOIF_time_once($hash,0,$wday); for (my $i=0;$i<@{$hash->{var}{counter}};$i++) { midnight($hash->{var}{counter}[$i][0],$hash->{var}{counter}[$i][1],$mday,$yday);
}
1 for (my $i=0;$i<@{$hash->{var}{counter}};$i++) { init_readings($hash->{var}{counter}[$i][0],$hash->{var}{counter}[$i][1]);
}
days:
defs:
tpl:
TPL_stat
day_count_$1_$2 {
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);
}
helper:
NOTIFYDEV global,di_counter_new
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
triggerDev
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
intervalfunc:
localtime:
0 1661896860
perlblock:
0 mid
1 init
realtime:
0 00:01:00
time:
0 00:01:00
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1661896860:
localtime 1661896860
hash:
uiState:
uiTable:
dev di_counter_new
header
<table uitabid='DOIF-di_counter_new' class=' block wide uiTabledoif doif-di_counter_new ' style='border-top:none;'>
package package ui_Table;
reading growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month
table:
0:
0:
0:
0 package ui_Table;::DOIF_Widget($hash,$reg,'di_counter_new_uiTable_c_0_0_0_0',card(::ReadingValDoIf($hash,'di_counter_new','growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day','','col'),"Solarenergie Tagesverlauf in KWh","",0,10,30,90,"kWh",undef,"1","160,1,1,0,1,,200","0,0,0,0,2"),"")
1:
0:
0 package ui_Table;::DOIF_Widget($hash,$reg,'di_counter_new_uiTable_c_0_1_0_0',card(::ReadingValDoIf($hash,'di_counter_new','growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_day','','col4w'),"Solarenergie in kWh pro Tag","",0,10,30,90,"kWh",undef,"1","160,1,1,0,1,,200","0,0,0,0,2"),"")
2:
0:
0 package ui_Table;::DOIF_Widget($hash,$reg,'di_counter_new_uiTable_c_0_2_0_0',card(::ReadingValDoIf($hash,'di_counter_new','growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.last_month','','col365d'),"Solarenergie in kWh pro Monat","",0,600,30,90,"kWh",undef,"0","160,1,1,0,1,,200","0,0,0,0,2"),"")
tc:
td:
0:
tr:
var:
counter:
ARRAY(0x55e9ea93a4e0)
Attributes:
room AutomationTest
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,10,30,90,"kWh",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,10,30,90,"kWh",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,"kWh",undef,"0","160,1,1,0,1,,200","0,0,0,0,2")
## 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")
wenn ich wieder zuhause bin werde ich mal auf Fehlersuche gehen, denn ich habe einige Cards mit einzelnen Werten von dir umgesetzt die allesamt Werte anzeigen.
Das Modul wird nicht von [growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state] getriggert.
Offenbar gibt es dazu keine Events.
kommt aber alles rein vom Wechselrichter und eTotal hat sich gegenüber gestern schon erhöht hier mal das list vom device
Internals:
FUUID 6204abc3-f33f-b063-fe91-204795cdcfb4fce1
NAME growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
NR 1375
STATE 3281.1
TYPE dummy
eventCount 1516
READINGS:
2022-08-30 15:38:17 state 3281.1
Attributes:
alias eTotal
comment Auto-created by ioBroker fhem.1
group growatt.0.294937.devices.QMB39212B4.deviceData
room ioB_IN
evtl. habe ich irgendwo ein Fehler im Perlcode, durch das kopieren vllt. ne Leerzeile oder sonstiges falsch drin.
Ich werde es mal überprüfen soweit es mir möglich ist da wenig Perl Kenntnisse
ich habe jetzt das gesamte DOIF nochmals komplett neu erstellt, wenn es neu erstellt wurde liest er einmal komplett die neuen Werte ein das ist der eTotal state der jetzt auf 3281.4 steht.
Dieser Wert wird aus dem dummy genommen
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
Ich habe hier eine weitere Card von dir im Einsatz für den Monatswert und ebenfalls den eTotal Wert dieser nutzt ja das gleiche dummy und hier funktioniert es mit dieser Def.
hier mal das list:
Internals:
DEF {}
FUUID 60d1fb64-f33f-a6c6-2021-c2788dfd549325e7
FVERSION 98_DOIF.pm:0.261820/2022-06-29
MODEL Perl
NAME di_growatt_monatJahr
NOTIFYDEV global,growatt.0.294937.devices.QMB39212B4.deviceData.eMonth,growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
NR 5983
NTFY_ORDER 50-di_growatt_monatJahr
STATE initialized
TYPE DOIF
VERSION 26182 2022-06-29 18:57:26
READINGS:
2022-02-11 19:12:32 mode enabled
2021-06-22 17:01:56 state initialized
Regex:
accu:
collect:
growatt.0.294937.devices.QMB39212B4.deviceData.eMonth:
collect:
state ^growatt.0.294937.devices.QMB39212B4.deviceData.eMonth$:^state:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:
collect:
state ^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal$:^state:
uiTable:
growatt.0.294937.devices.QMB39212B4.deviceData.eMonth:
di_growatt_monatJahr_uiTable_c_0_0_0_0:
state ^growatt.0.294937.devices.QMB39212B4.deviceData.eMonth$:^state:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:
di_growatt_monatJahr_uiTable_c_0_1_0_0:
state ^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal$:^state:
card:
collect:
growatt.0.294937.devices.QMB39212B4.deviceData.eMonth state:
672:
animate 0
dim 72
hours 672
last
last_v 169.6
max_value 172.8
max_value_slot 71
max_value_time 1661869455
min_value 150.5
min_value_slot 59
min_value_time 1661486379
name growatt.0.294937.devices.QMB39212B4.deviceData.eMonth
reading state
time 1661869877
value 172.8
times:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
1661486379
1661519566
1661531877
1661584295
1661620353
1661620931
1661687455
1661705475
1661721935
1661788701
1661813262
1661855910
1661869455
values:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
150.5
154.3
155.4
155.5
157.5
157.5
160.8
164.3
164.3
168.5
168.7
169.6
172.8
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal state:
8736:
animate 0
dim 72
hours 8736
last_v 3264.1
max_value 3281.4
max_value_slot 71
max_value_time 1661869455
min_value 3264.1
min_value_slot 70
min_value_time 1661587173
name growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
reading state
time 1661869877
value 3281.4
times:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
1661587173
1661869455
values:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
3264.1
3281.4
condition:
0
helper:
NOTIFYDEV global,growatt.0.294937.devices.QMB39212B4.deviceData.eMonth,growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
globalinit 1
last_timer 0
sleeptimer -1
perlblock:
0 block_01
uiState:
uiTable:
dev growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
header
<table uitabid='DOIF-di_growatt_monatJahr' class=' block wide uiTabledoif doif-di_growatt_monatJahr ' style='border-top:none;'>
package package ui_Table;
reading state
table:
0:
0:
0:
0 package ui_Table;::DOIF_Widget($hash,$reg,'di_growatt_monatJahr_uiTable_c_0_0_0_0',card(::ReadingValDoIf($hash,'growatt.0.294937.devices.QMB39212B4.deviceData.eMonth','state','','col4w'),"Leistung Monat","measure_power",0,1350,undef,undef,"KW",\&temp_hue,"1","220,,,,,1",undef,undef),"")
1:
0:
0 package ui_Table;::DOIF_Widget($hash,$reg,'di_growatt_monatJahr_uiTable_c_0_1_0_0',card(::ReadingValDoIf($hash,'growatt.0.294937.devices.QMB39212B4.deviceData.eTotal','state','','col52w'),"Leistung Gesamt","measure_power_meter",0,undef,undef,undef,"KW",[500,120,1000,60,1250,0],"1","220,,,,,1,210",undef,undef),"")
tc:
1.2 align='center'
td:
0:
tr:
Attributes:
alias PV - Anlage - Monats Leistung - Jahres Leistung
group 1_PV Anlage
room ioB_OUT
sortby 02
uiTable { package ui_Table;
$TC{1.2}="align='center'" ## zentrierte Ausrichtung der zweiten und dritten Spalte
}
## Tabellendefinition
card([growatt.0.294937.devices.QMB39212B4.deviceData.eMonth:state:col4w],"Leistung Monat","measure_power",0,1350,undef,undef,"KW",\&temp_hue,"1","220,,,,,1",undef,undef)|
card([growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state:col52w],"Leistung Gesamt","measure_power_meter",0,undef,undef,undef,"KW",[500,120,1000,60,1250,0],"1","220,,,,,1,210",undef,undef)|
## 2.Card rosa
##card([growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state:col52w],"Leistung Gesamt","measure_power_meter",0,2800,undef,undef,"KW",\&temp_hue,"1","220,,,,,1",undef,undef)
das dummy wird alle 5min. getriggert und der Wert wird aucheingetragen.
Ich weiß jetzt nicht mehr wo ich noch gucken könnte, warum das DOIF die Werte nicht nimmt
In deiner ursprünglichen Definition wurde, warum auch immer, NOTIFYDEV nicht richtig gesetzt:
ZitatNOTIFYDEV global,di_counter_new
ich habe ein zweites DOIF in meiner Produktivumgebung erstellt.
Es gibt in beiden DOIF dieses
NOTIFYDEV di_counter_new,global
Produktiv Fhem
NOTIFYDEV di_pvanlage_1,global
Was kann ich jetzt noch machen.?
Ich habe die dummys beobachtet es sind teilweise nur 90sec. das es aktualisiert wird wobei jetzt auf dem Nachmittag die kWh nicht mehr so steigen.
Diese dummys werden vom ioBroker erstellt, weil es dort dieses Growatt Modul gibt sonst hätte ich gar keine Werte, aber wie gesagt die Übermittlung funktioniert tadellos.
Die Readings müssen zum Zeitpunkt der Definition des DOIF (defmod) existieren, sonst klappt das nicht.
Beim anderen DOIF (mit den beiden Diagrammen) sieht es dagegen besser aus:
ZitatNOTIFYDEV global,growatt.0.294937.devices.QMB39212B4.deviceData.eMonth,growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
ja das habe ich schon verglichen und auch gesehen.
Aber wie bekomme ich das denn hin.?
Kann ich das im nachhinein erstellen.?
NOTIFYDEV global,growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
Wenn ich dieses DOIF erstellen gehe ich in die Kommandozeile und trage folgendes ein
define di_counter_new DOIF {}
weil ich ja das ganze DOIF nicht in der Kommandozeile erstellen kann.
Dann gehe ich in die RAW Definition und trage es komplett ein und speichere. Dabei sollte er doch das
NOTIFYDEV
erstellen..! oder nicht?
NOTIFYDEV wird von FHEM selbst erstellt, es bringt nichts es selbst zu manipulieren.
Du musst dich herantasten an das Problem.
Wird NOTIFYDEV gesetzt, bei
define di_growatt_test DOIF ([growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state])()
?
ja es wird erstellt
Internals:
CFGFN
DEF ([growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state])()
FUUID 630e3f6a-f33f-b063-5dc8-07e16a8ba4b91330
MODEL FHEM
NAME di_growatt_test
NOTIFYDEV global,growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
NR 1602
NTFY_ORDER 50-di_growatt_test
STATE cmd_1
TYPE DOIF
VERSION 26182 2022-06-29 18:57:26
eventCount 2
READINGS:
2022-08-30 18:50:27 Device growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
2022-08-30 18:49:57 cmd 1
2022-08-30 18:49:57 cmd_event growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
2022-08-30 18:49:57 cmd_nr 1
2022-08-30 18:50:27 e_growatt.0.294937.devices.QMB39212B4.deviceData.eTotal_state 3281.9
2022-08-30 18:48:42 mode enabled
2022-08-30 18:49:57 state cmd_1
Regex:
accu:
collect:
cond:
growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:
0:
state ^growatt.0.294937.devices.QMB39212B4.deviceData.eTotal$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'growatt.0.294937.devices.QMB39212B4.deviceData.eTotal','state')
do:
0:
0
1:
helper:
NOTIFYDEV global,growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
event 3281.9
globalinit 1
last_timer 0
sleeptimer -1
timerdev growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
timerevent 3281.9
triggerDev growatt.0.294937.devices.QMB39212B4.deviceData.eTotal
timerevents:
3281.9
timereventsState:
state: 3281.9
triggerEvents:
3281.9
triggerEventsState:
state: 3281.9
internals:
readings:
all growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state
trigger:
uiState:
uiTable:
Attributes:
OK, dann poste mal deine komplette Definition von di_counter_new als RAW-Definition, damit ich es bei mir nachvollziehen kann.
gerne
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;;;;$ANIMATE=0}\
## Tabellendefinition\
card([di_counter_new:growatt.0.294937.devices.QMB39212B4.deviceData.eTotal.state.day:col],"Solarenergie Tagesverlauf in KWh","",0,10,30,90,"kWh",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,10,30,90,"kWh",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,"kWh",undef,"0","160,1,1,0,1,,200","0,0,0,0,2")
Es liegt wohl an den Punkten in deinem growatt-Devicenamen. Der Devicename wird intern auch als DOIF-Blockname genutzt und Punkte sind dort nicht vorgesehen.
Wenn du statt Punkte _ benutzen kannst, dann sollte es gehen.
da ich dieses dummy mit den Punkten vom ioBroker bekomme habe ich darauf keinen Einfluss.
ich müßte mir ein etwas erstellen welches jedesmal dieses device übernimmt und dann umwandelt.
Puuh das ist ja ein Aufwand, ich denke ich muss mir dann was anderes einfallen lassen wie ich die Werte oder besser den Wert bekomme.
Es ging ja hauptsächlich darum einen Wert jährlich zu bekommen weil ich den nicht habe, die anderen Werte habe ich ja bereits mit deinen Card's umgesetzt.
Ich denke mal etwas nach.... was ich am besten mache ;)
Vielen Dank ersteinmal für die Unterstützung.
Du brauchst doch nur definieren:
define my_growatt DOIF {set_State([growatt.0.294937.devices.QMB39212B4.deviceData.eTotal:state])}
und im anderen DOIF die push-Zeile ändern in:
push (@{$_counter},["my_growatt","state"]);; ## PV-Energie Einspeisung\
hier nun mal die Rückmeldung von mir, ist ja erst seit gestern so, aber es scheint zu funktionieren ;) Vielen Dank Damian
Muss jetzt nochmal schauen wie er den Jahreswert berechnet, denn den habe ich ja noch nicht visualisiert mit "uiTable"
Ein Momentan Screeshot
Zitat von: moonsorrox am 01 September 2022, 17:04:57
hier nun mal die Rückmeldung von mir, ist ja erst seit gestern so, aber es scheint zu funktionieren ;) Vielen Dank Damian
Muss jetzt nochmal schauen wie er den Jahreswert berechnet, denn den habe ich ja noch nicht visualisiert mit "uiTable"
Ein Momentan Screeshot
Das sieht doch schon mal gut aus, da du ja alle wichtigen Daten im log hast (last_day, last_month, last_year), kannst du dir zusätzlich zu uiTable auch svg-plots bauen. Den Jahresverlauf kann man im dritten Diagramm sehen, der Jahresverbrauch selbst wird am 01.01 im Reading last_year erscheinen.
Ja klar das mit den Plots weiß ich, aber ich bin nicht so der PlotFan ;)
Wobei das bei der PV Anlage sicher mal eine Idee wäre, denke ich mal drüber nach.
Was mich ein wenig stört grad ist das er eben den gesamten Jahresverbrauch nicht anzeigt, kann er ja auch nicht weil er ja die Werte nicht hat, dass heißt auch am 01.01.2023 hat er nur die Werte von gestern ab.
Habe schon überlegt ob ich ihn nicht irgendwie überlisten ;) kann, denn ich habe sie ja als Monatswerte vorliegen und brauche sie nur zusammen rechnen.
Aber das wird wohl nicht funktionieren diese einzupflegen.
Einen Vesuch habe ich schon gestartet in dem ich mit "deletereading" die Werte lösche und mit setreading wieder die errechneten rein bringe, hat aber nicht funktioniert, er hat dann den einen Wert doppelt gehabt und nicht überschrieben das war der Wert mit *.year am Ende. Weißt du ob das gehen würde, dann hätte ich schon mal den Wert dann für das aktuelle Jahr.
Der hohe Wert von aktuell 3295.6 ist ja der Gesamtwert seit der Installation am 21.04.2012.
Zitat von: moonsorrox am 01 September 2022, 23:31:29
Ja klar das mit den Plots weiß ich, aber ich bin nicht so der PlotFan ;)
Wobei das bei der PV Anlage sicher mal eine Idee wäre, denke ich mal drüber nach.
Was mich ein wenig stört grad ist das er eben den gesamten Jahresverbrauch nicht anzeigt, kann er ja auch nicht weil er ja die Werte nicht hat, dass heißt auch am 01.01.2023 hat er nur die Werte von gestern ab.
Habe schon überlegt ob ich ihn nicht irgendwie überlisten ;) kann, denn ich habe sie ja als Monatswerte vorliegen und brauche sie nur zusammen rechnen.
Aber das wird wohl nicht funktionieren diese einzupflegen.
Einen Vesuch habe ich schon gestartet in dem ich mit "deletereading" die Werte lösche und mit setreading wieder die errechneten rein bringe, hat aber nicht funktioniert, er hat dann den einen Wert doppelt gehabt und nicht überschrieben das war der Wert mit *.year am Ende. Weißt du ob das gehen würde, dann hätte ich schon mal den Wert dann für das aktuelle Jahr.
Der hohe Wert von aktuell 3295.6 ist ja der Gesamtwert seit der Installation am 21.04.2012.
Dann ist dir wahrscheinlich entgangen, dass im Reading ..year (nicht ...last_year) der aktuelle Jahresverbrauch drin steht, dieser wird täglich um Mitternacht aktualisiert, also brauchst du nur diesen darzustellen.
Zitat von: Damian am 02 September 2022, 07:45:27
Dann ist dir wahrscheinlich entgangen, dass im Reading ..year (nicht ...last_year) der aktuelle Jahresverbrauch drin steht, dieser wird täglich um Mitternacht aktualisiert, also brauchst du nur diesen darzustellen.
Damian, dass weiß ich hast ja alles gut erklärt... ;)
Was ich aber meine ist er kann ja nicht den Jahresverbrauch anzeigen, wenn er erst seit ein paar Tagen die Werte bekommt, soll soviel heißen wie der Wert von Januar bis letzte Woche als ich das DOIF erstellt habe der fehlt ja.
Also kann er eigentlich erst ab nächstes Jahr richtig anzeigen oder habe ich da einen Denkfehler..?
Es gibt ja in meinen Readings die vom Modul des ioBroker kommen keinen Wert der das Jahr anzeigt, dass muss er sich ja im Laufe des Jahres errechnen.
In meinem Reading für dieses Jahr steht ja erst
di_growatt.state.year 16.4
drin und das ist der Verbrauch von da ab als ich das DOIF richtig eingestellt habe. Weißt du wie ich es meine?
ja, das Modul kann ja nicht wissen, was vor der Definition war. Im Reading year_counter, wird der Zählerstand abgelegt, der am Anfang des Jahres festgehalten wird oder wenn man die Definition zum ersten Mal laufen lässt.
Wenn du für dieses Jahr den korrekten Jahresverbrauch haben willst, dann musst du den year_counter um so viele Einheiten zurücksetzen, wie viele dir für dieses Jahr fehlen.