SVG-Plot erzeugt HMLAN disconnects

Begonnen von Thorsten Pferdekaemper, 06 Januar 2014, 19:33:51

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Hi,
ich bin mir nicht ganz sicher, ob ich in diesem Forumsbereich richtig bin. Falls nicht, dann bitte verschieben.
Bei mir kommt es sporadisch zum Disconnect beim HMLAN. Anscheinend liegt das an den SVG-Plots. (Siehe auch http://forum.fhem.de/index.php/topic,17990.msg122464.html#msg122464)
Mir ist schon klar, dass die Fritz!Box 7390 nicht die allerschnellste Kiste ist, aber kann man da was machen? Es müsste doch möglich sein, den CPU-Intensiven Teil der Plots in einen anderen (Low-Prio) Prozess auszulagern. Oder?
Oder gibt's eine Möglichkeit, die Plots massiv zu beschleunigen?
Gruß,
   Thorsten

FUIP

hexenmeister

So ähnlich verhält sich meine FHEM-Installation leider auch. Bei der Aktualisierung eines Raums (mit mehreren Plots) kommt fast immer zum HMLAN-Diskonnect. FHEM läuft bei mir auf einem Raspberry Pi.

rudolfkoenig

Mit plotfork werden die SVGs in einem separaten Prozess berechnet, allerdings braucht das etwas an Speicher.

Beschleunigen kann man das z.Bsp, indem man das SVG nicht mit eine interpretierte Programmiersprache wie perl sondern mit eine kompilierte (C/C++/etc) berechnet. Oder auf dem Client mit JavaScript. Beides bedeutet SVG.pm und Teile von FileLog.pm neu zu programmieren.

Thorsten Pferdekaemper

Hi,
danke, das mit dem plotfork kannte ich noch nicht. Weiß jemand, ob man das auf der Fritz!Box 7390 gefahrlos einschalten kann? Keine Ahnung, wie viel interner Speicher das Teil hat...

Von wegen neu programmieren: Mir ist schon klar, dass man Software immer optimieren kann. Ich dachte eher an irgendwelche Einstellungen in FHEM oder "geschicktere" Erstellung der Files. Zum selbst entwickeln fehlt mir momentan leider die Zeit.
Gruß,
    Thorsten

FUIP

rudolfkoenig

Optimieren ohne Programmieren:
- FileLog sollte keine Daten enthalten, die  nicht verwendeten werden.
- Es ist schneller, wenn Temperatur und Feuchte auf eine Zeile zu finden sind (z.Bsp. als T: $temp H: $hum), als auf unterschiedliche.

Uebrigens ein 7 Jahre altes Core2@2GHz Notebook mit ca 20Watt Stromaufnahme ist ueber 50-mal schneller beim berechnen der SVGs, als ein FB7390, siehe http://forum.fhem.de/index.php/topic,11491.msg67292.html#msg67292. Und dabei wird sein zweiter Core noch nicht mal verwendet, was bei mehreren SVGs mit plotfork definitiv funktioniert.

Thorsten Pferdekaemper

Hi Rudolf,
Ja, ist schon klar, dass es leistungsfähigere Hardware gibt als die Fritzbox, aber das Teil läuft sowieso schon 7x24 und langweilt sich die meiste Zeit.
Deine Tipps zur Optimierungen haben geholfen. Vielen Dank. Ich lasse jetzt eine Datei schreiben, die für jeden Zeitpunkt immer nur eine Zeile mit den Daten enthält, die ich tatsächlich sehen will. Das alte Teil habe ich vorerst mal dringelassen, um die Laufzeit zu vergleichen. Hier ist das Ergebnis von apptime:

                      name             function    max  count    total  average param Max call
   FileLog_og_ku_HeizungOp          FileLog_Get   4023      3    11922  3974.00 HASH(0xd89800); FileLog_og_ku_HeizungOp;
FileLog_og_ku_HeizungSmall          FileLog_Get    654      3     1915   638.33 HASH(0xd95658); FileLog_og_ku_HeizungSmall;

Die erste Zeile ist das alte, die zweite das neue. Es braucht jetzt nur noch etwa 16% der Laufzeit. Ich denke, das reicht erstmal.
Hier sind zwei typische Ausschnitte der Logfiles
Alt:

2014-01-08_01:11:16 og_ku_HeizungOp motorErr: ok
2014-01-08_01:11:16 og_ku_HeizungOp measured-temp: 20.3
2014-01-08_01:11:16 og_ku_HeizungOp desired-temp: 20
2014-01-08_01:11:16 og_ku_HeizungOp ValvePosition: 0 %
2014-01-08_01:11:16 og_ku_HeizungOp mode: auto
2014-01-08_01:11:16 og_ku_HeizungOp T: 20.3 desired: 20 valve: 0 %
2014-01-08_01:14:08 og_ku_HeizungOp motorErr: ok
2014-01-08_01:14:08 og_ku_HeizungOp measured-temp: 20.3
2014-01-08_01:14:08 og_ku_HeizungOp desired-temp: 20
2014-01-08_01:14:08 og_ku_HeizungOp ValvePosition: 0 %
2014-01-08_01:14:08 og_ku_HeizungOp mode: auto
2014-01-08_01:14:08 og_ku_HeizungOp T: 20.3 desired: 20 valve: 0 %


Neu:

2014-01-08_01:11:16 og_ku_HeizungOp T: 20.3 desired: 20 valve: 0 %
2014-01-08_01:14:08 og_ku_HeizungOp T: 20.3 desired: 20 valve: 0 %


Ich denke, ich werde jetzt mal alle umstellen.

Gruß,
    Thorsten
FUIP

Samsi

Hallo,

ich würde das auch gerne machen, wie bekomme ich das denn hin, dass in dem FileLog nur eine Zeile steht?

Grüße
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

Thorsten Pferdekaemper

Hi,
Ich habe das hier als Regexp für den FileLog eingetragen:
og_ku_HeizungOp:T:.*
Der erste Teil ist der Name vom Channel und wird bei Dir natürlich anders aussehen.
Gruß,
Thorsten
FUIP

Samsi

Ah, alles klar.

Ich hab gar nicht gesehen, das dies schon im Original FileLog so steht:

2014-01-08_01:11:16 og_ku_HeizungOp T: 20.3 desired: 20 valve: 0 %

ich hatte deshalb angenommen du hast eine regexp gebastelt, die drei einzelnen Zeilen in eine überführt ;)

Danke
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM