Vorschlag für (98_) CustomReadings

Begonnen von tuxbox, 26 November 2014, 14:49:03

Vorheriges Thema - Nächstes Thema

tuxbox

Hallo zusammen,

leider bin ich noch nicht so mit den Gepflogenheiten im FHEM Forum vertraut, aber ich habe schon seit einer Weile
einige Ergänzungen an meiner FHEM Version vorgenommen, die vielleicht ja auch für andere interessant sind.
(z.B. auch am CUL_MAX).
Ich poste sie hier einfach mal als Diff aus meinem eigenen SVN.

Falls das so ok ist würde ich die Tage dann noch einiges mehr beisteuern.

Soweit erstmal allgemein.

Diese spezielle Ergänzung habe ich mir quasi aus Performancegründen eingebaut.
Ich habe bei mir z.B. ein recht aufwendiges customReadings Objekt, das mir (in apptime gut sichtbar) FHEM
zeitweise recht ausgebremst hat.
Zunächst habe ich das externe Skript von mir ( mit qx(...) aufgerufen) in ein natives C++ Programm umgesetzt,
was natürlich einen riesigen Performanceschub brachte (average von 950ms auf ca. 80ms runter, obwohl aber sogar ein
Einzeilaufruf vom nativen Programm mittels time-cmd-Messung auf der Kommandozeile sogar nur noch 8ms
brauchte und es 8 Readings sind. Der Rest wird scheinbar vom Parsen durch Perl verbraten).
Aber (auch dadurch, dass der apptime max Wert sogar noch bei 160) lag wollte ich nach Möglichkeit noch weiter
runter. Das ging nur sinnvoll, indem ich CustomReadings beigebracht habe, aus einem Funktionsaufruf gleich
mehrere Readings zu befüllen.

Dazu habe ich ein spezielles Meta-Reading "COMBINED" eingeführt. Die darüber aufgerufene Funktion sollte
pro Zeile einen Wert zurückgeben, die dann an die folgenden Readings (die dann natürlich nach dem Doppelpunkt
keine Funktion brauchen) vergeben werden.
Ein Beispiel ist in der Code-Doku.

Ich nehme das z.B. für meine Daten der Netatmo-Station. Hier habe ich ein eigenes System aufgesetzt,
bei dem ich lokal über ein Kommando alle (auch internen) Daten meiner Netatmo-Wetterstation,
deren Zusatzmodule und dem netatmo-Thermostat abfragen kann.
(weiß schon, dass es ein Netatmo-Modul hier gibt, aber das ist leider sehr sehr rudimentär und für meine Zwecke
ungeeignet).
Bei dem kann ich so z.B. mit einem

COMBINED:qx(naquery Kinderzimmer co2 - Wohnzimmer co2 - Wohnzimmer humidity - Kinderzimmer humidity - Balkon temp - lastmessagestamp - rf_quality),
kinderzimmer.co2:,wohnzimmer.co2:,wohnzimmer.humidity:,kinderzimmer.humidity:,balkon.temperature:,nastation.lastmessage:,nastation.rssi:

viele Werte mit einem Funktionsaufruf setzen lassen. Bringt das was? Bei mir ja. apptime average nur noch 22, max nur noch 28ms
Sehr viel mehr werde ich wohl nicht mehr rausholen können.

HCS

Habe es mir nun angeschaut. Finde ich gut.

Kannst Du mir den diff bitte nochmal gegen die aktuelle Version aus dem trunk machen (7042 2014-11-23 06:31:00Z hcs-svn), die war schon geändert, als Du den diff gemacht hast.
Dann übernehme ich es und checke es ein.

tuxbox

Entschuldige bitte die späte Antwort, war die Tage außer Gefecht gesetzt.
Passt der angehängt Patch?

Gruß,
Frank

HCS

Zitat von: tuxbox am 05 Dezember 2014, 07:51:20
Entschuldige bitte die späte Antwort, war die Tage außer Gefecht gesetzt.

Sorry, ich war jetzt auch einige Tage außer Gefecht gesetzt :-(
Der Patch hat auch nicht so ganz auf meine Version gepasst, jetzt habe ich es von Hand übernommen.
Ich hänge es erst mal hier an, könntest Du es bitte nochmal testen, wenn es OK ist, dann checke ich es ein.

Ich habe es mit folgenden readingDefinitions getestet:
perl_version:$],\
hdd_temperature:qx(hddtemp /dev/sda 2>&1),\
timezone:qx(cat /etc/timezone 2>&1),\
kernel:qx(uname -r 2>&1),\
fhem_backup_folder_size:qx(du -ch /opt/fhem/backup | grep total | cut -d 't' -f1 2>&1),\
tempReading:{ReadingsVal ("TX29DTH_Outside","temperature",0)},\
COMBINED:qx(cat /proc/sys/vm/dirty_background*),dirty_bytes:,dirty_ration:,\
last_fhem_log_entry:qx(tail -1 /opt/fhem/log/fhem-\$(date +%Y-%m).log),\
date:qx(date 2>&1),\
COMBINED:qx(tail -5 /opt/fhem/log/fhem-\$(date +%Y-%m).log),Log1:,Log2:,Log3:,Log4:,Log5:

HCS

Nachdem es bei mir nun zwei Wochen problemlos gelaufen ist, habe ich es eingecheckt.

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS


optimizer

zur groben Überwachung des Raspi-Filesystems lasse ich mir die (zwei) größten Einträge in fs_size_top schreiben:

fs_size_top:qx(df -h | sort -k 5 -n -r | head -2)

Danke fürs Modul
optimizer