FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: DaCracker am 04 Juli 2022, 14:26:48

Titel: [gelöst] SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 04 Juli 2022, 14:26:48
Hallo Zusammen,

ich werte meinen Hoymiles Wechselrichter (Solaranlage) mit FHEM aus. Dabei würde ich gerne einen Plot erstellen der mir für 365 Tage im Jahr die Stromerzeugung pro Tag anzeigt. Also jeden Tag einen Wert und zwar den letzten im Log für diesen Tag. Ist das überhaupt umsetzbar? Und wenn ja, wie?

Im Moment bekomme ich über MQTT alle 5 Sekunden den aktuellen Wert für diesen Tag.

Viele Grüße
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Nobbynews am 04 Juli 2022, 14:32:06
Am einfachsten über ein at jeden Tag um z.b. 23:59 den Tageswert in ein separates reading schreiben, dieses reading loggen und aus diesem Logfile dann den Plot erzeugen.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 04 Juli 2022, 14:55:18
Theoretisch kann ich dir folgen, praktisch bin ich leider überfordert:
define dailyStromerzeugungSchreiben at *23:30:00 ...

Das Reading lege ich als UserReading im Device von meinem Inverter an? Und wie schreib ich dort rein? Hast du evtl. ein Beispiel für mich?

Danke schonmal :)

Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Helmi55 am 04 Juli 2022, 15:28:27
Servus
ich messe mein BKW mit einem EM und verwende das statistics Modul-
Da hab ich dann kWh Day, DayLast, Hour HourLast, Month mit Month Last und Year
Dann nehme ich für den Plot delta-d und bekomme so einen schönen BAR Chart

Hoffe es ist ein Ansatz und hilft weiter
Gruß
Helmut
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Nobbynews am 04 Juli 2022, 16:10:51
Zitat von: DaCracker am 04 Juli 2022, 14:55:18
define dailyStromerzeugungSchreiben at *23:30:00 ...

Das Reading lege ich als UserReading im Device von meinem Inverter an?
Nein, kein userreading.
define dailyStromerzeugungSchreiben at *23:30:00 {
my $temp = ReadingsNum("<device>" ,"Tageswert",0);
fhem("setreading <device> TageswertLetzter $temp");
}

Eingabe über den def-Editor.
Dann noch das Logfile erstellen, wobei ein Jahresfile reicht. Also in der Definition

./log/TageserzeugungSolar-%Y.log <device>:TageswertLetzter:.*


<device> muss natürlich entsprechend ersetzt werden.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Prof. Dr. Peter Henning am 04 Juli 2022, 16:15:18
Erstens ist es (nach meiner Erfahrung von 15 Jahren PV-Anlage in FHEM) ziemlich unsinning, den WR alle 5 Sekunden abzufragen. Alle 60 Sekunden reicht vollkommen aus, denn die Aufsummierung zur Energie macht die Kiste ja in der Regel selbst.

Zweitens ist es nicht sehr instruktiv, das gesamte Jahr tageweise zu plotten - daraus kann man gar nichts entnehmen, das Rauschen ist viel zu groß. Sehr viel sinnvoller ist eine Aggregation pro Monat, und die Monatsergebnisse dann in einem Jahresplot. Oder einen gleitenden Mittelwert über mindestens 7 Tage ==> Siehe movingAverage im Wiki.

LG

pah

Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 04 Juli 2022, 16:35:12
Die Software sendet leider alle 5s mir würden auch locker 60s Intervall ausreichen. Und ja, du hast vermutlich recht, dass es keine Auswertung pro Tag sein muss, aber wenn das hier mal funktioniert, dann kann man es ja noch beliebig anpassen.

@Nobbynews
define dailyStromerzeugungSchreiben at *23:30:00 {my $temp = ReadingsNum(,,inverter" ,"YieldDay",0); fhem(,,setreading inverter InverterTageswert $temp");}

Wenn ich das so eingebe, dann bekomme ich folgende Fehlermeldung:
Zitat

Unrecognized character \xE2; marked by <-- HERE after adingsNum(<-- HERE near column 77 at (eval 74340) line 1.

Unknown command fhem(,,setreading, try help.
Unknown command }, try help.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Nobbynews am 04 Juli 2022, 16:42:44
Zitat von: DaCracker am 04 Juli 2022, 16:35:12
define dailyStromerzeugungSchreiben at *23:30:00 {my $temp = ReadingsNum(,,inverter" ,"YieldDay",0); fhem(,,setreading inverter InverterTageswert $temp");}
Mach mal aus
,,inverter"  ==> "inverter"
und aus
,,setreading   ==> "setreading
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 04 Juli 2022, 16:43:36
Ja ist mir auch aufgefallen, man sollte sowas nicht mit dem iPad machen :(
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 09 Juli 2022, 09:13:07
Leider ist das Thema noch nicht gelöst, aus irgendeinem Grund passiert nichts, wenn der ,,at" läuft. Wenn ich das setreading Kommando manuell abschicke, ohne Variable, dann wird der Wert eingetragen. Auch mit einem execnow funktioniert es nicht.

Internals:
   CFGFN     
   COMMAND    {my $temp = ReadingsNum("inverter" ,"YieldDay", 0)}; fhem ("setreading inverter InverterTageswert $temp")
   DEF        *23:30:00 {my $temp = ReadingsNum("inverter" ,"YieldDay", 0)}; fhem ("setreading inverter InverterTageswert $temp")
   FUUID      62c2fc64-f33f-52b2-d5dc-e03baef80e760298
   NAME       dailyStromerzeugungSchreiben
   NR         760
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 23:30:00
   TIMESPEC   23:30:00
   TRIGGERTIME 1657402200
   TRIGGERTIME_FMT 2022-07-09 23:30:00
   TYPE       at
   eventCount 3
   READINGS:
     2022-07-08 23:30:00   state           Next: 23:30:00
Attributes:
   room       Garten


Internals:
   FUUID      62b76e64-f33f-52b2-a2eb-42c900338bf21ef1
   IODev      pi_mqtt
   NAME       inverter
   NR         220
   STATE      ???
   TYPE       MQTT_DEVICE
   eventCount 805655
   READINGS:
     2022-07-09 09:10:42   Effiency        95.490
     2022-07-09 09:10:42   Freq            49.990
     2022-07-03 06:17:31   IODev           pi_mqtt
     2022-07-09 09:10:42   I_AC            0.580
     2022-07-08 21:12:13   InverterTageswert 3619.000
     2022-07-09 09:10:42   P_AC            135.500
     2022-07-09 09:10:42   P_DC            141.900
     2022-07-09 09:10:42   Temp            23.900
     2022-07-09 09:10:42   U_AC            234.700
     2022-07-09 09:10:42   YieldDay        198.000
     2022-07-09 09:10:42   YieldTotal      46.070
     2022-07-09 09:10:42   transmission-state incoming publish received
     2022-06-27 11:49:48   uptime          2624
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Nobbynews am 09 Juli 2022, 10:14:10
In der def des at fehlt am Ende die }.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: MadMax-FHEM am 09 Juli 2022, 10:15:53
Zitat von: Nobbynews am 09 Juli 2022, 10:14:10
In der def des at fehlt am Ende die }.

Ich denke eher die Klammer kam schon zu früh ;)

Zitat
COMMAND    {my $temp = ReadingsNum("inverter" ,"YieldDay", 0)}; fhem ("setreading inverter InverterTageswert $temp")

Die Klammer muss nach ganz hinten...

EDIT: also

{my $temp = ReadingsNum("inverter" ,"YieldDay", 0); fhem ("setreading inverter InverterTageswert $temp")}


EDIT: {Perl};irgendwas ;)

https://wiki.fhem.de/wiki/Klammerebenen

Gruß, Joachim
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: Nobbynews am 09 Juli 2022, 10:19:51
Ah, ok. Habe ich auf dem Smartphone übersehen.
Das at dann aber mal über
set dailyStromerzeugungSchreiben execNow
ausprobieren.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 09 Juli 2022, 10:38:37
Irgendwas haut immer noch nicht hin, obwohl alle Klammern geschlossen werden. Oder bin ich blind?

define dailyStrom at *23:30:00 {my $temp = ReadingsNum("inverter" ,"YieldDay", 0); fhem ("setreading inverter InverterTageswert $temp")}

Missing right curly or square bracket at (eval 321988) line 1, at end of line
syntax error at (eval 321988) line 1, at EOF

Unknown command fhem, try help.


Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: MadMax-FHEM am 09 Juli 2022, 11:42:55
Wie hast du das eingeben?

Über FhemWeb?
Dann die Strichpunkte doppeln!

ODER (besser): ein "leeres" at definieren:

define atName at 00:00:10 {}

Und dann mit dem DEF-Editor bearbeiten...

Gruß, Joachim
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 09 Juli 2022, 13:17:12
Okay, das war mein Fehler. Jetzt funktioniert es. Danke euch!
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: MadMax-FHEM am 09 Juli 2022, 13:45:28
Zitat von: DaCracker am 09 Juli 2022, 13:17:12
Okay, das war mein Fehler. Jetzt funktioniert es. Danke euch!

Gerne.

Wie wär's dann mit einem [geköst] o.ä. "vorne dran"? :)


Gruß, Joachim
Titel: Antw:[gelöst] SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 07 Januar 2023, 14:59:21
Hallo Zusammen,

bis jetzt hat der Plot genau das getan, was er sollte. Leider werden die Wertr seit dem Jahreswechsel nicht mehr angezeigt. Hat jemand eine Idee woran es liegen könnte? Ich lasse mir immer die Werte der letzten 31 Tage im Tablet UI anzeigen.

  <header>Monatsverlauf</header>
                <div data-type="chart"
                     data-device="inverter"
                     data-logdevice="FileLog_DailyStrom"
                     data-logfile="CURRENT"
                     data-columnspec='["4:InverterTageswert"]'
                     data-style='["ftui l0fill"]'
                     data-ptype='["bars"]'
                     data-legend='["Gesamt"]'
                     data-yunit="Wh"
                     data-minvalue="0"
                     data-maxvalue="5000"
                     data-height="300"
                     data-daysago_start='31d'
                     data-daysago_end='now'>
                 </div>


Das Logile wird pro Jahr geschrieben.

logfile ,,./log/DailyStrom-%Y.log"

Damit wird es vermutlich zusammenhängen. Aber da das 2023 das Current Logfile ist, hätte ich eher erwartet, dass er die Werte aus 2022 nicht mehr anzeigt. Hat jemand eine Idee?
Titel: Antw:[gelöst] SVG / Plot mit einem Wert pro Tag
Beitrag von: betateilchen am 07 Januar 2023, 15:06:35
Zitat von: DaCracker am 07 Januar 2023, 14:59:21
Das Logile wird pro Jahr geschrieben.

logfile ,,./log/DailyStrom-%Y.log"

Damit wird es vermutlich zusammenhängen. Aber da das 2023 das Current Logfile ist,

Hast Du mal nachgeschaut, ob in dem currentlogfile tatsächlich etwas drinsteht?
Mach doch mal ein list vom FileLog device.

Und kannst Du bitte mit diesem unsinnigen "Anführungszeichen unten" aufhören? Das macht in Programmcode überhaupt keinen Sinn. Danke.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 07 Januar 2023, 19:38:15
Ich mach sowas meistens in fünf freien Minuten zwischendurch und dann mit dem iPad. Und das kann offensichtlich nur die falschen. :(
Im currentlogfile steht für jeden Tag ein Wert drin, genauso wie vorher im 2022er.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 07 Januar 2023, 19:44:19
Habe gerade nochmal reingeschaut, an dieser Stelle stehen gar keine Anführungszeichen. Die habe ich wohl hier im Forum eingetragen.
Titel: Antw:[gelöst] SVG / Plot mit einem Wert pro Tag
Beitrag von: OdfFhem am 07 Januar 2023, 19:58:36
Zitat von: DaCracker am 07 Januar 2023, 14:59:21
Aber da das 2023 das Current Logfile ist, hätte ich eher erwartet, dass er die Werte aus 2022 nicht mehr anzeigt. Hat jemand eine Idee?

Dein FTUI-Widget geht immer 31 Tage zurück ... das Startdatum der gewünschten Daten liegt also momentan immer noch in 2022.
Da die gewünschten Daten im Normalfall aus ein- und derselben Datei kommen müssen, kriegst Du nur Daten aus 2022.

Um Daten aus mehreres Dateien zu mixen, gibt es für den TYPE FileLog ein spezielles Attribut:
ZitatcreateGluedFile
Falls gesetzt (1), und im SVG-Plot ein Zeitbereich abgefragt wird, was in mehreren Logdateien gespeichert ist, dann wird für die Anfrage eine temporäre Datei mit dem Inhalt aller Dateien erzeugt.
Titel: Antw:[gelöst] SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 07 Januar 2023, 20:04:57
Zitat von: OdfFhem am 07 Januar 2023, 19:58:36
Um Daten aus mehreres Dateien zu mixen, gibt es für den TYPE FileLog ein spezielles Attribut:

Ich habe das Attribut gesetzt. Bis jetzt noch keine Änderung. Verändert sich das evtl. erst beim nächsten Schreibvorgang?
Titel: Antw:[gelöst] SVG / Plot mit einem Wert pro Tag
Beitrag von: OdfFhem am 07 Januar 2023, 20:51:52
Zitat von: DaCracker am 07 Januar 2023, 20:04:57
Ich habe das Attribut gesetzt. Bis jetzt noch keine Änderung. Verändert sich das evtl. erst beim nächsten Schreibvorgang?

Die nächste Anfrage sollte das gesetzte Attribut nutzen.

Hilfreich bei der Problemsuche wäre vielleicht, dass Du eine der gesendeten Abfragen im Browser "abfängst" und hier zeigst ...
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: betateilchen am 07 Januar 2023, 21:22:10
"createGluedFile" bedeutet aber, den Teufel mit dem Beelzebub auszutreiben...
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: OdfFhem am 07 Januar 2023, 21:39:32
Zitat von: betateilchen am 07 Januar 2023, 21:22:10
"createGluedFile" bedeutet aber, den Teufel mit dem Beelzebub auszutreiben...

Gibt es bzgl. FileLog Alternativen ?
... mal abgesehen davon, dass man immer in eine einzige Datei schreibt

Wer lieber DbLog nutzt, wäre natürlich im Vorteil
... obwohl gerade FTUI-Charts zwar auf ein Event reagieren, aber die DB den neuen Wert noch gar nicht kennt
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: betateilchen am 07 Januar 2023, 22:32:43
Zitat von: OdfFhem am 07 Januar 2023, 21:39:32
Gibt es bzgl. FileLog Alternativen ?
... mal abgesehen davon, dass man immer in eine einzige Datei schreibt

Bezüglich FileLog nicht, aber wieso fängt FTUI zum Beispiel nicht mit den neuesten Werten an und lässt lieber die alten weg?

Zitat von: OdfFhem am 07 Januar 2023, 21:39:32
... obwohl gerade FTUI-Charts zwar auf ein Event reagieren, aber die DB den neuen Wert noch gar nicht kennt

Kommt vermutlich auf die Konfiguration des DbLog an.
Titel: Antw:SVG / Plot mit einem Wert pro Tag
Beitrag von: DaCracker am 08 Januar 2023, 12:10:39
Auch wenn ich jetzt wohl nicht die Optimallösung habe, funktioniert es auf jeden Fall wieder. Danke euch!

Vielleicht steige ich irgendwann, wenn mir furchtbar langweilig ist, auf eine DB Lösung um. Aber bis dahin, komme ich sicher auch damit klar.