FTUI Neue Version chart_widget

Begonnen von eki, 31 Januar 2016, 00:17:26

Vorheriges Thema - Nächstes Thema

uron

Ich habe das event-on-change-reading nochmals gesetzt, befürchte aber, dass das zuvor genannte Problem mit der Grafik (s.o.) wieder auftaucht.
Ich werde berichten - Danke!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

#721
Hallo eki,
es kam leider wie ich es vermutet hatte: Das Chart-Widget kann m.E. nicht mit den 0-Werten umgehen (siehe nachts im Screenshot-obere Grafik)!
Tagsüber funktionieren die gestapelten Funktionen.
Ab dem Zeitpunkt, wenn das Readung 0 wird und sich nicht mehr ändert und keine EInträge mehr ins FileLog geschrieben werden, zeichnen sich unplausible Geraden ab.

Ich liefere hier nochmals den aktuellen Code, vielleicht hast du ja noch eine Idee.
<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]",""]'

Wenn du keine Idee mehr hast, muss das Attribut wieder raus und ich muss mir verstärkt Gedanken darüber machen, warum das Reading (nun umbenannt in energy-Summe) jeweils 32x ins FileLog geschrieben wird.

Ich hatte auch schon mal versucht, dem notify ein Attribut mitzugeben:
disabledAfterTrigger <sekunden>
deaktiviert die Ausführung für <sekunden> nach dem das notify ausgelöst wurde.
Klingt ja eigentlich erfolgversprechend, aber leider erreicht von dem Device dann kein Reading mehr das LogFile!?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

eki

Die Definition sieht erst mal OK aus. Kannst Du mal ein Stück des Logs posten?

Eventuell könntest Du noch zusätzlich zum event-on-change-reading event-min-interval setzen, dann würden die Lücken höchstens x Sekunden dauern.

attr <dev> event-min-interval .*:600

uron

Hallo eki,
ich habe das Attribut nun gesetzt und den (etwas längeren) Logauszug als Anlage beigefügt.
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

#724
Zitat von: eki am 23 November 2021, 11:40:38

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");
}

Ich muss leider nochmals auf den Code zurück kommen:
Das setreading funktioniert bekanntermaßen, die Rechenoperation wird auch korrekt durchgeführt.
Erst heute stelle ich allerdings fest, dass im LogFile en masse Fehlermeldungen auftauchen :-\
Die 5- minütigen Fehlermeldungen lauten:
2021.11.26 15:16:00.588 1: PERL WARNING: Argument "324562 Wh" isn't numeric in addition (+) at (eval 6808236) line 1.
2021.11.26 15:16:00.589 3: eval: my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{my $sum = ReadingsVal("FBDECT_FritzBox_08761_OST","energy",0) + ReadingsVal("FBDECT_FritzBox_08761_WEST","energy",0);  fhem("setreading FBDECT_FritzBox_08761_OST energy-Summe $sum");}

Nun liegt ja nahe, dass die Einheit "Wh", da nicht numerisch, zum Fehler führt, trotzdem wird im neuen Reading ein korrekter numerischer Wert (ohne Einheit) ausgewiesen.
Gelinde gesagt, bin ich leicht irritiert. >:(
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

#725
Ich glaube, ich habe eine Lösung gefunden, um die alphanumerische Einheit (Wh) aus dem Reading rauszubekommen:
define ntf_sum notify .*FBDECT_FritzBox_08761_(OST|WEST).* {my $sum = ReadingsVal("FBDECT_FritzBox_08761_OST","energy_2:energy:.*",0) + ReadingsVal("FBDECT_FritzBox_08761_WEST","energy_3:energy:.*",0);;  fhem("setreading FBDECT_FritzBox_08761_OST energy-Summe $sum");;}
Jedenfalls tauchen jetzt keine Fehlermeldungen mehr auf.
Update1: Klappte dann doch irgendwie nicht: Fehlermeldungen kamen zwar keine, aber auch keine Addition! :'(

Update2
So, jetzt ist's vollbracht:  :)
Mit ReadingsNum geht es jetzt: keine Fehlermeldungen, Addition ist korrekt. Morgen schau ich, ob die Grafik über Nacht noch murrt!
.*FBDECT_FritzBox_08761_(OST|WEST).* {my $sum = ReadingsNum("FBDECT_FritzBox_08761_OST","energy",0) + ReadingsNum("FBDECT_FritzBox_08761_WEST","energy",0);  fhem("setreading FBDECT_FritzBox_08761_OST energy-Summe $sum");}
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

Zitat von: eki am 25 November 2021, 17:02:37
Die Definition sieht erst mal OK aus. Kannst Du mal ein Stück des Logs posten?

Eventuell könntest Du noch zusätzlich zum event-on-change-reading event-min-interval setzen, dann würden die Lücken höchstens x Sekunden dauern.

attr <dev> event-min-interval .*:600
Ich möchte nun nochmals auf die Grafik zurückkommen nachdem die Logs funktionieren:
Wie man in anliegender Grafik sieht, sind die gestapelten Funktionen noch nicht optimal. Auch wenn die Werte der PV-Module (OST und WEST) den Wert "0" haben, sind sie bei den gestapelten Linien zu sehen.
Ist da noch was zu machen?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

eki

Ich würde mal vermuten, dass das daran liegt, dass die Werte nicht alle die gleichen Zeitstempel haben. Liege ich da richtig?
Falls ja, wäre das einfachste alles auf die gleichen Zeitstempel zu bringen und zwar im Logfile. Du könntest alles mit event-min-interval setzen, oder in Deinem notify nicht nur die Summe, sondern auch noch die jeweils andere Seite setzen (also wenn OST den Trigger auslöst auch noch einmal WEST setzen und umgekehrt).

Prinzipiell könnte ich natürlich auch im Chart irgendwie alles hin und her interpolieren, aber das möchte ich eigentlich vermeiden, weil ich nicht gern Daten dazu erfinden möchte.

uron

Hallo eki,
ja, die Zeitstempel sind unterschiedlich.
Mit erscheint der Aufwand bezogen auf die grafische Darstellung auch zu hoch, ich werde mit den geringen "optischen" Fehlern leben können.

Danke für deine Unterstützung!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

bmwfan

Besteht eine Möglichkeit, das Chart-Widget zu verwenden wenn sich der Name des data-logdevice täglich / wöchentlich ändert?

Ich habe fhem auf ein NAS unter Docker umgezogen und dabei gelesen, dass das Logfile nicht zu groß werden darf da ansonsten Probleme auftreten können. Deswegen habe ich zum FHEM-Logfile (fakelog) auch meine Logdateien der Sensoren auf wöchentliche Dateien umgestellt. Leider werden jetzt keine Daten mehr im Chart-Widget angezeigt, da sich der Name das data-logdevice wöchentlich ändert. Die SVG-Plots funktionieren weiterhin.

Gibt es eine Möglichkeit das Chart-Widget abzubilden?. Es ändert sich an der Bezeichnung der Logdatei ja nur die Zahl am Ende des Strings für die Wochennummer.

So setzt sich der Name des Logfiles zusammen.
Ga_UmweltSen-2021-12-4.log
Ga_UmweltSen-2021-12-5.log
Ga_UmweltSen-2021-12-6.log


Das List eines Filelogs:
Internals:
   DEF        ./log/Ga_UmweltSen-%Y-%m-%w.log Ga_UmweltSen
   FD         15
   FUUID      619de1b1-f33f-d125-5c51-604eedbc7afdf4c5
   NAME       FileLog_Ga_UmweltSen
   NOTIFYDEV  Ga_UmweltSen
   NR         282
   NTFY_ORDER 50-FileLog_Ga_UmweltSen
   REGEXP     Ga_UmweltSen
   STATE      active
   TYPE       FileLog
   currentlogfile ./log/Ga_UmweltSen-2021-12-0.log
   logfile    ./log/Ga_UmweltSen-%Y-%m-%w.log
   READINGS:
     2021-12-12 15:11:30   linesInTheFile  1918
   pos:
Attributes:
   archiveCompress 1
   archivedir ./log/archive/
   logtype    text
   nrarchive  3
   room       9.8.6_Filelogs


und der Aufruf des Widgets:
<header class="headerTransparent">UMWELTSENSOR GARTEN</header>
<!--<div data-type="label" class="wider red">Garten</div>-->
<div class="">
<div class="fullsize"
data-type="chart"
data-device="Ga_UmweltSen"
data-logdevice='["FileLog_Ga_UmweltSen","FileLog_Ga_UmweltSen"]'
data-logfile="CURRENT"
data-columnspec='["4:T","6:H"]'
data-style='["ftui l2","ftui l6"]'
data-ptype='["lines","lines"]'
data-uaxis='["primary","secondary"]'
data-legend='["Temperatur","Humidity"]'
data-yunit="°C"
data-ytext="Temperatur"
data-yunit_sec="%"
data-ytext_sec="Luftfeuchtigkeit"
data-xticks="60"
data-timeformat="hh"
data-minvalue="auto"
data-maxvalue="auto"
data-minvalue_sec="40"
data-maxvalue_sec="100"
data-daysago_start="0"
data-daysago_end="-1"
data-crosshair="false"
data-showlegend="false"
data-width="86%"
data-height="80%">
</div>
</div>


Grüße Jürgen
Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Helmi55

Hallo schönen Sonntag
ich hoffe es liest noch jemand mit hier?

Ich habe ein Problem mit einem simplen Bar-Chart den ich in FTUI 2.5 darstellen möchte.
Hier die Definition
<!DOCTYPE html>
<html>
<head></head>
<body>
<div class="page" id="1_test-content">
    <div class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="3" data-sizey="2">

       <div data-type="chart"
        data-device='["MQTT2_shellyem_98CDAC1F0C40"]'
        data-logdevice='["FileLog_MQTT2_shellyem_98CDAC1F0C40"]'
        data-columnspec='["4:FileLog_MQTT2_shellyem_98CDAC1F0C40.statEmeter_0_kWhMonth:delta-d"]'
        data-logfile="CURRENT"
        data-style='["ftui l1fill"]'
        data-ptype='["ibars"]'
        data-uaxis='["primary"]'
        data-minvalue="0"
        data-maxvalue="2.8"
        data-hight="250"
        data-width="720"
        data-daysago_start="1"
            data-daysago_end=""
>
</div>

         
        </li>       
        </ul>
    </body>


Bei columspec habe ich schon einiges ausprobiert: ohne 4 und auch nur statEmeter.....
Ich bekomme keine Daten (Balken)

Das ist das FileLog
./log/MQTT2_shellyem_98CDAC1F0C40-%Y.log MQTT2_shellyem_98CDAC1F0C40:Ertrag_Jahr:.*|MQTT2_shellyem_98CDAC1F0C40:Ertrag_Monat:.*|MQTT2_shellyem_98CDAC1F0C40:Ertrag_Tag:.*|MQTT2_shellyem_98CDAC1F0C40:emeter_0_power:.*|MQTT2_shellyem_98CDAC1F0C40:statEmeter_0_kWhMonth:.*

und das SVG
FileLog_MQTT2_shellyem_98CDAC1F0C40:SVG_FileLog_MQTT2_shellyem_98CDAC1F0C40_1:CURRENT

Ich bekomme nur diese Anzeige obwohl delta-d im columnspec angegeben ist, ist die Beschriftung auch nicht für täglich.

Und so sieht es in FHEM aus

Bin für jeden Tip dankbar.

Gruß
Helmut

System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

OdfFhem

@Helmi55

Lt. Wiki sollte columnspec ungefähr so aussehen:

data-columnspec='["4:DEVICE.READING:0:delta-d"]'


DEVICE durch das MQTT2-Device und READING durch das gewünschte Reading ersetzen ...

Helmi55

Servus
hab ich jetzt so geändert - leider ohne Erfolg.
Habe jetzt zur Sicherheit noch data-daysago_start="1"
                                                     data-daysago_end=""

entfernt, da ich dachte das hat noch Einfluss auf die täglichen Bars. Auch nicht

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

OdfFhem

@Helmi55

Zeig doch mal die gplot-Datei, mit der Du die funktionierende SVG-Darstellung bekommst ...

Helmi55

Danke für deine Zeit

# Created by FHEM/98_SVG.pm, 2022-02-15 16:18:56
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<PV Ernte in kWh>'
set ytics
set y2tics
set grid ytics y2tics
set ylabel ""
set y2label "kWh"
set yrange [0:2.8]
set y2range [0:2.8]

#FileLog_MQTT2_shellyem_98CDAC1F0C40 4:MQTT2_shellyem_98CDAC1F0C40.statEmeter_0_kWhMonth\x3a::delta-d

plot "<IN>" using 1:2 axes x1y2 title 'Ertrag in kWh' ls l1fill lw 2 with bars


Gruß
Helmut

System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/