Langsame Ploterstellung seit wechsel auf dem PI

Begonnen von Afterburner, 07 Dezember 2015, 14:15:52

Vorheriges Thema - Nächstes Thema

Afterburner

Servus,

ich bin gerade mit FHEM vom Windows Test PC auf nen PI2 umgezogen, Installation nach dieser Anleitung
http://www.meintechblog.de/2013/05/fhem-server-auf-dem-raspberry-pi-in-einer-stunde-einrichten/

Danach habe ich FHEM auf dem PI gestoppt und folgende Dateien vom Windows PC kopiert
fhem.cfg
callmoncache.txt
den log Ordner
www/gplot/SVG_..... (also alle von meinen selbst erstellten Plots)

danach dann
sudo chown fhem:dialout *
bei allen geänderten Verzeichnissen

reboot

FHEM läuft wie gesagt nur dauert die Erstellung von Plots bei MAX Thermostaten ewig

Beispiel gplot Datei

# Created by FHEM/98_SVG.pm, 2015-12-07 10:42:23
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 '<TL> <L1>'
set ytics
set y2tics ("100%" 100, "50%" 50, "0%" 0, "Auto" 20, "Manu" 10)
set grid ytics y2tics
set ylabel "Temperatur °C"
set y2label "Ventil / Mode"
set yrange [5:40]
set y2range [-0.2:110]

#FileLog_Heizung.Arbeitszimmer 4:Heizung.Arbeitszimmer.temperature\x3a::
#FileLog_Heizung.Arbeitszimmer 4:Heizung.Arbeitszimmer.valveposition\x3a::
#FileLog_Heizung.Arbeitszimmer 4:Heizung.Arbeitszimmer.mode\x3a:0:$fld[3]=~"auto"?20:1

plot "<IN>" using 1:2 axes x1y1 title 'Temperatur' ls l1fill lw 0.2 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Ventilstellung' ls l3 lw 3 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Mode' ls l0 lw 3 with lines


FRITZ DECT z.B. wird sofort erstellt

# Created by FHEM/98_SVG.pm, 2015-12-06 21:49:47
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 '<TL> <L1>'
set ytics
set y2tics
set grid
set ylabel "Power (KW)"
set y2label "Power (KW)"

#FileLog_FBDECT_16 4:FBDECT_16.*:0:

plot "<IN>" using 1:2 axes x1y2 notitle ls l0 lw 1 with lines


Die Systemlast geht nicht hoch, Load Average ist bei ca 0.4
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

rudolfkoenig

Sagt nur, dass ein PI2 langsamer ist als der Windows Rechner.

Workarounds:
- ins Logfile nur das notwendige reinschreiben (siehe FileLog regexp).
- wenn moeglich, mehrere Werte auf eine Zeile schreiben (userReadings bauen, und nur das loggen)
- bei der Anzeige mehrerer Plots auf eine Seite hilft "attr WEB plotfork"
- bei den alten PI gabs Linux-Distributionen ohne Hardware-Floating-Point Unterstuetzung. Mit ist deutlich besser.
- evtl. von FileLog auf DbLog umsteigen. Ich habe keine Vergleichswerte, d.h. wenn du das versuchst, unbedingt vorher/nachher Zeiten messen. Kann auch sein, dass es schlechter wird.

Afterburner

#2
Ist das echt so schlimm der Unterschied ? Im Logfile sind nur Daten von 3 Tagen drin


Zitat- bei der Anzeige mehrerer Plots auf eine Seite hilft "attr WEB plotfork"
Ok ich schau dazu mal ins Manual, aber es tritt auch auf wenn ich den Plot alleine aufrufe, also nicht in der Übersicht

Zitat- bei den alten PI gabs Linux-Distributionen ohne Hardware-Floating-Point Unterstuetzung. Mit ist deutlich besser.
Das kann ich Dir leider nicht beantworten, ist Debian 8.0 drauf, Linux 4.1.12.v7

Zitatevtl. von FileLog auf DbLog umsteigen. Ich habe keine Vergleichswerte, d.h. wenn du das versuchst, unbedingt vorher/nachher Zeiten messen. Kann auch sein, dass es schlechter wird.
ja das war auch gerade meine Idee gewesen, habe auch mal in ein Logfile geguckt, sind ca 53.000 Zeilen drin, da macht dann DB vermutlich mehr Sinn da man sich ja nur das raus holt was man braucht. Aber schneller als 30 Sekunden was die Übersicht mit den 6 Geräte momentan braucht wird es wohl schon sein.

EDIT: aber selbst der Badezimmerthermostat den ich erst heute Nacht angelegt habe und wo die Datei gerade mal 400 kb groß ist braucht ca 4-5 Sekunden
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

dev0

Zitat von: Afterburner am 07 Dezember 2015, 14:48:51
Im Logfile sind nur Daten von 3 Tagen drin
...
sind ca 53.000 Zeilen drin, da macht dann DB vermutlich mehr Sinn
Vor allem überdenken welche Daten wie häufig geloggt werden müssen.

franky08

ZitatEDIT: aber selbst der Badezimmerthermostat den ich erst heute Nacht angelegt habe und wo die Datei gerade mal 400 kb groß ist braucht ca 4-5 Sekunden

Um Himmels Willen  :)
Was loggst du den alles? Am Besten mittels regex anpassen und nur die Daten loggen die du für die Plot´s auch brauchst.
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Afterburner

#5
das packe ich dann mal in meine "google ToDo" mit rein da ich momentan noch nicht weiß wie das geht
bin jetzt erst mal beim googeln nach "Umstellung FileLog auf DB Log"
habe hier inzwischen schon Millionen Tabs offen und verliere langsam den Überblick :(
Und wegen jeder Kleinigkeit will ich hier auch nicht um Hilfe bitte

Btw das hier wird jede Minute geloggt
Zitat2015-12-07_13:12:15 Heizung.Badezimmer mode: auto
2015-12-07_13:12:15 Heizung.Badezimmer battery: ok
2015-12-07_13:12:15 Heizung.Badezimmer desiredTemperature: 19.0
2015-12-07_13:12:15 Heizung.Badezimmer temperature: 18.9
2015-12-07_13:12:15 Heizung.Badezimmer valveposition: 10
2015-12-07_13:12:15 Heizung.Badezimmer 19.0 °C
2015-12-07_13:12:15 Heizung.Badezimmer MAXLAN_initialized: 1
2015-12-07_13:12:15 Heizung.Badezimmer MAXLAN_error: 0
2015-12-07_13:12:15 Heizung.Badezimmer MAXLAN_errorInCommand:
2015-12-07_13:12:15 Heizung.Badezimmer MAXLAN_valid: 1
2015-12-07_13:12:15 Heizung.Badezimmer MAXLAN_isAnswer: 0

Im Plot nutze ich nur Temperature, Mode und Ventilstellung
das andere muss ich dann halt irgendwie raus filtern das es nicht geloggt wird, jetzt kümmre ich mich aber mal drum wie ich das mit der DB am besten mache

Hier steht es ja schon mal beschrieben
http://www.fhemwiki.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen

Aber das verweist dann wieder auf den Db Artikel, da muss ich dann mal schauen das ich hier ne mysql-db auf dem Rechner bekomme, habe das zwar auch auf meinem Managed Server aber die Daten nach extern ins Internet Schicken macht vermutlich keinen Sinn, eine Baustelle macht die nächste auf ^^
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

franky08

Da gibt es eine WIKI

http://www.fhemwiki.de/wiki/Neues_Charting_Frontend
ziemlich weit unten ist beschrieben wie man ein sqlite DB auf dem pi einrichtest, table für das charting frontend brauchst du nicht. Nur die 2 tables history und current.

ZitatCREATE TABLE `history` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
CREATE TABLE `current` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

rudolfkoenig

Alternativ in der FileLog Detail-Asicht im "Regexp-Parts" Abschnitt die relevanten Events hinzufuegen und das alte "Regex-Part" entfernen. Weiterhin die Events nur alle 5-Minuten erzeugen, entweder mit MAX selbst, oder mit event-min-interval. Das reduziert die anfallende Datenmenge auf ca 5%, und die Zeit fuer die Erstellung auf geschaetzt 10%. Aber erst ab morgen, wenn FileLog/SVG nur die minimierte Datenmenge verarbeiten muss.

Ohne eine Reduzierung der Datenmenge wird auch DbLog nicht so viel helfen, weil mindestens die Haelfte der Zeit in der SVG-Modul verbracht wird.

Afterburner

Jo thx, das steht auch hier
http://www.fhemwiki.de/wiki/DbLog#Datenbank

MySQL ist wenigstens was was ich noch kenne, hatte es nur noch nie auf Linux installiert

da kommt mir doch glatt ne Idee wie ich das Ganze mit den regex umgehe, ich lösche es im Nachhinein per cron wieder aus der DB raus mittels mysql und php :D

DELETE * FROM HISTORY WHERE TYPE = 'MAXLAN_isAnswer';

müsste da dann noch gucken was wo genau abgelegt wird

@rudolfkoenig
ich schau es mir gleich mal an, aber werde wohl trotzdem auf DB umsteigen schon weil ich da viel flexibler bin was den Zugriff angeht, also aus meiner Sicht gesehen der den Code von FHEM nicht kennt
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

Wernieman

Ich weiß es nicht auf den RasPi, aber mySQL ist auf einem Linux-System sehr schnell installiert. Schreihe, wenn Du Hilfe brauchst ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Afterburner

Ja war innerhalb von ner Minute drauf gewesen, jetzt habe ich mich gerade in die Regexp ecke verkrümelt um da durch zusteigen
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

Afterburner

Ist das jetzt so richtig wenn ich nur
- temperature
- mode
- valveposition
- groupid

groupid sollte sich normalerweise nicht ändern, tut sie aber bei wenn ich MAXLAN neu connecte mir aber das ist nen anderes Thema

Was mich jetzt dabei wundert ist die 1. Zeile, also die hier:
- Heizung.Arbeitszimmer|Heizung.Arbeitszimmer:groupid:.*   

da steht nur Heizung.Arbeitszimmer am Anfang, das kann ich auch nicht entfernen wenn ich rechts daneben auf dem Link klicke kommt nur
Cannot remove regexp part: not found

CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

rudolfkoenig

Ist wohl ein Bug. Solange nicht gefixt ist, bitte weiter unten auf DEF klicken, es per Hand entfernen, und dann auf modify.

Afterburner

#13
Also der Tipp mit dem Def ist ja mal Gold wert, da kann man ja alles auf einmal machen :)

EDIT: Logging läuft in der DB
CUL 868 --> Dirks Universalsensor - ESA200 Strommesser
HM USB --> HM Klingelsensor - HM Zwischenstecker
MAXLAN --> 5 x Thermostat - 4 x Fensterkontakt - ECO Taster - Cube
Arduino Nano V3.0 CC1101 433 MHz --> für Revolt Strommesser
bestellt: JeeLink 868 --> für TX 29 DT-HT Außensender

frank

ZitatAlso der Tipp mit dem Def ist ja mal Gold wert, da kann man ja alles auf einmal machen
das funktioniert sogar bei jedem device.  :)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html