Autor Thema: FTUI Neue Version chart_widget  (Gelesen 148984 mal)

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #705 am: 21 November 2021, 14:14:12 »
Hallo,
ich muss mich doch wieder mal zu Wort melden - leider mit einem Problem bzgl. der Darstellung meiner PV-Anlage:
In der 1. Grafik wird der Haus-Gesamtstromverbrauch dargestellt und wie er sich aus dem Netz-Bezug (gelb) und dem PV-Bezug (grün) zusammensetzt.
Ich habe vor Monaten ein Chart mit Forumshilfe entwickelt, was wirklich genau so funktioniert, wie ich es haben wollte.
Leider habe ich am Ende der "Entwicklungsarbeit" den Überblick verloren, welche Bestandteile des Codes (data-style) haben welche Funktion - aber es lief ja.
In der 2. Grafik ist der Ertragswert der Module dargestellt, aber auch die gesamte PV-Produktion seit der Erstinstalltion der Klein-PV-Anlage.

Nun habe ich aktuell eine 2. PV-Fläche mit einer anderen Himmelsausrichtung  (Richtung Westen) installiert und möchte die Ergebnisse ebenfalls in meine Grafik einbinden.
Meine Versuche in der 2. Grafik sind von Erfolg gekrönt, in der 1. Grafik sind sie leider noch fehlgeschlagen. In der ersten Grafik fehlt mir die gestapelte Funktion (PV-Ertrag West (blau) auf dem PV-Ertrag Ost (grün).

In der Folge hier mein Code, der aber leider bei der 1. Grafik noch (!) nicht läuft:
<div class="row">
<div class="cell">
                            <div data-type="chart"
data-device="FBDECT_FritzBox_08761_OST"
data-logdevice='["HS_AnlageLog"]'
data-columnspec='["4:powerfox.power.*","4:FBDECT_FritzBox_08761_OST.power.*","4:FBDECT_FritzBox_08761_WEST.power.*",["4:powerfox.power.*","4:powerfox.power.*:0:$fld[3]<=0?0:$fld[3]"]]'
data-style='[["fill",["-10000","#ff0000","0.0"],["0","#ff0000","0.0"],["0","#DDA400","1.0"],["10000","#DDA400","1.0"]],"ftui l4fill","ftui l6fill",["fill",["-10000","#ff0000","1.0"],["0","#ff0000","1.0"],["0","#DDA400","0.0"],["10000","#DDA400","0.0"]]]'
data-ptype='["lines","lines:0","lines:1","lines"]'
data-uaxis='["secondary","primary","primary","secondary"]'
data-legend='["akt. externer Leistungsbezug [W]","akt. Ost-Solar-Ernte [W]","akt. West-Solar-Ernte [W]",""]'
data-daysago_start="1"
data-daysago_end="-1"
data-nofulldays="false"
data-timeformat="ee\LF\hh:mm dd.MMM"
data-showlegend="true"
data-legendpos='["left","top"]'
data-crosshair="true"
data-minvalue="-200"
data-maxvalue="800"
data-yunit=""
data-ytext="akt. Leistungsbedarf [W]"
data-minvalue_sec="-200"
data-maxvalue_sec="800"
data-yunit_sec=""
data-ytext_sec="akt. PV-Leistung [W]"
data-title="Hausleistungsbedarf, gestapelt [W]"
data-title_class="myHeader"
data-prefetch="true">
</div>
</div>
                    </div>

    <div class="row">
<div class="cell">
                            <div data-type="chart"
data-device='["FBDECT_FritzBox_08761_OST"]'
data-logdevice='["PV_AnlageLog"]'
data-columnspec='["4:FBDECT_FritzBox_08761_OST.power.*","4:FBDECT_FritzBox_08761_WEST.power.*","4:FBDECT_FritzBox_08761_OST.energy:0:$val=($fld[3]/1000)","4:FBDECT_FritzBox_08761_WEST.energy:0:$val=($fld[3]/1000)"]'
data-style='["ftui l4fill","ftui l6fill","ftui l5","ftui l6"]'
data-ptype='["lines","lines:0","steps","steps:2"]'
data-uaxis='["primary","primary","secondary"]'
data-legend='["akt. Leistung Ost-Module [W]","akt. Leistung West-Module [W]","kum. Leistung Ost [kWh]","kum. Leistung West [kWh]"]'
data-daysago_start="1"
data-daysago_end="-1"
data-nofulldays="false"
data-timeformat="ee\LF\hh:mm dd.MMM"
data-showlegend="true"
data-legendpos='["left","top"]'
data-crosshair="true"
data-minvalue="0"
data-maxvalue="200"
data-yunit=""
data-ytext="akt. Leistung [W]"
data-minvalue_sec="316"
data-maxvalue_sec="336"
data-yunit_sec=""
data-ytext_sec="Kumulierte Leistung [kWh]"
data-title="solare Ernte der PV-Anlage"
data-title_class="myHeader"
data-prefetch="true">
</div>
</div>
                    </div>

Kann mir jemand helfen?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline dirk.k

  • Full Member
  • ***
  • Beiträge: 262
Antw:FTUI Neue Version chart_widget
« Antwort #706 am: 21 November 2021, 22:26:37 »
@Eki
ok, danke.
Ich habe mal zusätzlich ein filelog eingebaut und werde im Fehlerfall mal schauen, ob es damit nachvollziehbar ist. Das kann ich dann schicken. Kann etwas dauern.

Offline eki

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1454
Antw:FTUI Neue Version chart_widget
« Antwort #707 am: 22 November 2021, 08:21:19 »

In der Folge hier mein Code, der aber leider bei der 1. Grafik noch (!) nicht läuft:
<div class="row">
<div class="cell">
                            <div data-type="chart"
data-device="FBDECT_FritzBox_08761_OST"
data-logdevice='["HS_AnlageLog"]'
data-columnspec='["4:powerfox.power.*","4:FBDECT_FritzBox_08761_OST.power.*","4:FBDECT_FritzBox_08761_WEST.power.*",["4:powerfox.power.*","4:powerfox.power.*:0:$fld[3]<=0?0:$fld[3]"]]'
data-style='[["fill",["-10000","#ff0000","0.0"],["0","#ff0000","0.0"],["0","#DDA400","1.0"],["10000","#DDA400","1.0"]],"ftui l4fill","ftui l6fill",["fill",["-10000","#ff0000","1.0"],["0","#ff0000","1.0"],["0","#DDA400","0.0"],["10000","#DDA400","0.0"]]]'
data-ptype='["lines","lines:0","lines:1","lines"]'
data-uaxis='["secondary","primary","primary","secondary"]'
data-legend='["akt. externer Leistungsbezug [W]","akt. Ost-Solar-Ernte [W]","akt. West-Solar-Ernte [W]",""]'
data-daysago_start="1"
data-daysago_end="-1"
data-nofulldays="false"
data-timeformat="ee\LF\hh:mm dd.MMM"
data-showlegend="true"
data-legendpos='["left","top"]'
data-crosshair="true"
data-minvalue="-200"
data-maxvalue="800"
data-yunit=""
data-ytext="akt. Leistungsbedarf [W]"
data-minvalue_sec="-200"
data-maxvalue_sec="800"
data-yunit_sec=""
data-ytext_sec="akt. PV-Leistung [W]"
data-title="Hausleistungsbedarf, gestapelt [W]"
data-title_class="myHeader"
data-prefetch="true">
</div>
</div>
                    </div>

    <div class="row">
<div class="cell">
                            <div data-type="chart"
data-device='["FBDECT_FritzBox_08761_OST"]'
data-logdevice='["PV_AnlageLog"]'
data-columnspec='["4:FBDECT_FritzBox_08761_OST.power.*","4:FBDECT_FritzBox_08761_WEST.power.*","4:FBDECT_FritzBox_08761_OST.energy:0:$val=($fld[3]/1000)","4:FBDECT_FritzBox_08761_WEST.energy:0:$val=($fld[3]/1000)"]'
data-style='["ftui l4fill","ftui l6fill","ftui l5","ftui l6"]'
data-ptype='["lines","lines:0","steps","steps:2"]'
data-uaxis='["primary","primary","secondary"]'
data-legend='["akt. Leistung Ost-Module [W]","akt. Leistung West-Module [W]","kum. Leistung Ost [kWh]","kum. Leistung West [kWh]"]'
data-daysago_start="1"
data-daysago_end="-1"
data-nofulldays="false"
data-timeformat="ee\LF\hh:mm dd.MMM"
data-showlegend="true"
data-legendpos='["left","top"]'
data-crosshair="true"
data-minvalue="0"
data-maxvalue="200"
data-yunit=""
data-ytext="akt. Leistung [W]"
data-minvalue_sec="316"
data-maxvalue_sec="336"
data-yunit_sec=""
data-ytext_sec="Kumulierte Leistung [kWh]"
data-title="solare Ernte der PV-Anlage"
data-title_class="myHeader"
data-prefetch="true">
</div>
</div>
                    </div>

Kann mir jemand helfen?

Bitte poste noch einen Ausschnitt des zugehörigen Logfiles.

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #708 am: 22 November 2021, 09:27:54 »
Hallo eki,
schon deine Nachfrage hat mich ich auf die Spur gebracht: in der 1. Grafik verwende ich die Logdatei HS_AnlageLog, in der 2. die PV_AnlageLog.
In der HS_AnlageLog fehlte aber der Wert der "West-PV-Anlage", weshalb er natürlich auch nicht dargestellt werden kann!

Das habe ich adhoc geändert - und mein Problem ist gelöst, auch die Darstellung der gestapelten Werte ist so, wie ich das haben möchte.

Danke für den Schubser!

Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #709 am: 22 November 2021, 13:30:25 »
Doch noch eine andere Frage:
Ist es möglich im Chart einen Wert anzuzeigen, der aus der Addition zweier Werte eines Logfiles errechnet wird?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline eki

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1454
Antw:FTUI Neue Version chart_widget
« Antwort #710 am: 22 November 2021, 16:31:14 »
Was mir spontan dazu einfallen würde, ist die zwei Werte zu stapeln und dafür zu sorgen, dass der untere Wert nicht gezeichnet wird bzw. nicht zu sehen ist (z.B. indem man einen Stil mit opacity 0 definiert und nutzt).

Was auch gehen würde, ist über logproxy und eine Funktion, die man selbst definiert (im 99_MyUtils.pm), zu gehen. Grundsätzlich hast Du natürlich immer das Problem zu lösen, dass die beiden Werte ja nicht automatisch immer zum gleichen Zeitpunkt im Log eintrudeln, Du müsstest also interpolieren etc (so wie es beim Stapeln ja auch gemacht wird).

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #711 am: 22 November 2021, 16:41:27 »
Danke eki,
ich komme gerade zu diesem Thread zurück nachdem ich lange im Forum recherchiert habe.
Mein finales Erkenntnis: Ich versuche mal den Weg zu gehen, den rudolfkoenig vorgeschlagen hat:
Mehrere:
- per userReadings ein neues Reading mit Summe der beiden Werte generieren, loggen und diesen darstellen.
- beide Werte zu einem Event (d.h. eine Zeile) zusammenfassen (z.Bsp. per userReadings), aber _nicht addieren_, d.h. die Werte sind in unterschiedlichen Spalten weiterhin einzeln vorhanden. Bei SVGs aus FileLog dann $fld[ x ] + $fld[ y ] als Funktion verwenden.

Mein erster Blick auf userreadings lässt mich aber nicht hoffen - ist schon reichlich komplex für meine Vorkenntnisse!
Danke
« Letzte Änderung: 22 November 2021, 16:43:30 von uron »
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline eki

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1454
Antw:FTUI Neue Version chart_widget
« Antwort #712 am: 22 November 2021, 17:49:00 »
Mal angenommen die beiden Readings heißen re_a und re_b (und sind Zahlen) und das Device dev, dann bräuchtest Du in etwa für den ersten Vorschlag von Rudi so etwas:

attr dev userReading summe_a_b:(re_a|re_b).* {
  my $sum = ReadingsVal("dev","re_a",0) + ReadingsVal("dev","re_b",0);
  return $sum;
}


Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #713 am: 22 November 2021, 18:03:12 »
Dein Vorschlag kommt mir wie gerufen, ich bin gerade dabei, einen Code zu "basteln", der aber noch nicht funktioniert.
Dann schwenke ich jetzt mal auf deinen Vorschlag um, wobei ich sicher dein "userReading" durch "userReadings" ersetzen muss!?

Ich berichte, wenn ich weiterkomme!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #714 am: 22 November 2021, 18:16:11 »
Ich befürchte, ich bin auf der falschen Spur.

Nochmals zur Klarstellung:
Ich habe 2 Devices (2x Fritz!DECT 200), die mir die Readings in eine FileLog schreiben; diese beiden Werte sind zu addieren.
Dein "dev" müsste m.E. doch dann die Logdatei sein, deren Inhalt aber Text ist.
Wenn ich die beiden Werte mittels userReadings direkt aus dem Device auslese, müsste ich sie mit userReadings "verbinden" und wieder in den FileLog schreiben und zwar mit dem Ursprungsdatum!?

Verrenne ich mich da?

Nachtrag:
ich schicke jetzt mal die beiden Readings leicht abgeändert mit:
2021-11-22_16:54:13 FBDECT_FritzBox_08761_OST energy: 323562 Wh
2021-11-22_16:54:13 FBDECT_FritzBox_08761_WEST energy: 371 Wh
Im Ergebnis sollen also die beiden Werte addiert im FileLog landen!
« Letzte Änderung: 22 November 2021, 18:20:34 von uron »
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #715 am: 22 November 2021, 21:50:29 »
Ich hab jetzt nochmals weitergedacht und versucht, meine eigenen Zweifel auszuräumen:
Ich bin zu folgendem Code gekommen:

attr FBDECT_FritzBox_08761_OST userReadings PV-Summe(OST|West).* {my $sum = ReadingsVal("FBDECT_FritzBox_08761_OST","energy",0) + ReadingsVal("FBDECT_FritzBox_08761_WEST","energy",0); return $sum;}
Ich gehe also davon aus - und ich drücke das mal unfachmännisch aus - , dass das userReading in einem der beiden Devices "abgelegt" wird und darin das Reading des 1. und 2. Device summiert wird.

Im LogFile sehe ich das userReading unter den "Regexp parts".
Versuche ich dann das userReading im LogFile zu triggern erscheint dort keinerlei Eintrag.

Was könnte noch fehlerhaft sein?
« Letzte Änderung: 23 November 2021, 09:13:56 von uron »
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline eki

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1454
Antw:FTUI Neue Version chart_widget
« Antwort #716 am: 23 November 2021, 11:40:38 »
Der Ansatz ist schon richtig, die Syntax aus meiner Sicht allerdings falsch, da sollte stehen:
... userReadings PV-Summe:.*(OST|WEST).* ....
Allerdings lösen, soweit ich weiß, userReadings keine Events aus und damit kommen sie auch nicht in die Logfiles (zumindest habe ich das bei mir so beobachtet).

Eine Alternative wäre, das Addieren nicht über useReading zu machen, sondern über ein Notify. Also in etwa so:

define ntf_sum notify .*FBDECT_FritzBox_08761_(OST|WEST).* {
  my $sum = ReadingsVal("FBDECT_FritzBox_08761_OST","energy",0) + ReadingsVal("FBDECT_FritzBox_08761_WEST","energy",0);
  fhem("setreading FBDECT_FritzBox_08761_OST PV-Summe $sum");
}
« Letzte Änderung: 23 November 2021, 11:46:22 von eki »

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #717 am: 23 November 2021, 12:00:58 »
Danke, dass du dich erneut einschaltest!
Ja, dass userReadings kein Event auslösen, darauf war ich zwischenzeitlich auch gestoßen:
https://forum.fhem.de/index.php?topic=60756.0

Der Lösungsvorschlag dort lautet, einevent-on-change-reading zu setzen.
Da ich aus dem LogFile Charts mit FTUI Widget Chart produziere, führen nicht geloggte Werte (wenn kein event!) dann zu unschönen Ansichten (s. Anlage)

Ich teste mal deinen neuen Ansatz, frage mich allerdings, wo der Zeitstempel herkommen soll, aber vielleicht werde ich ja bei der Umsetzung überrascht!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline uron

  • Full Member
  • ***
  • Beiträge: 318
Antw:FTUI Neue Version chart_widget
« Antwort #718 am: 23 November 2021, 16:03:56 »
SUPER eki, hat fast geklappt, incl. Zeitstempel:
Leider taucht ein Problem beim Loggen im FileLog auf:
Das Reading "PV-Summe" taucht im FileLog jeweils 32x (!) mit dem gleichen Zeitstempel auf.

Gibt es dafür auch noch eine Lösung?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitodens 300-W, Typ WB3D, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox

Offline eki

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1454
Antw:FTUI Neue Version chart_widget
« Antwort #719 am: 23 November 2021, 17:03:52 »
In dem Zieldevice (das in dem das neue Reading landet) folgendes setzen:

attr FBDECT_FritzBox_08761_OST event-on-change-reading .*