HM-CFG-LAN: Überwachung der 1%-Regel: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „== Plot von Highload/Overload und msgLoadEst-Werten == Aufgrund der gesetzlichen [http://www.fhemwiki.de/wiki/1%25_Regel 1%-Regel] kann es gerade in der Entw…“)
 
(Kategorisiert, Wikifiziert + kleinere Korrekturen)
Zeile 1: Zeile 1:
== Plot von Highload/Overload und msgLoadEst-Werten ==  
== Plot von Highload/Overload und msgLoadEst-Werten ==  
Gerade in der Entwicklungsphase kann es passieren, dass z.B. durch den Einsatz von Testroutinen der Bereich der [[1% Regel]] erreicht wird und dadurch ein Gerät vorübergehend nicht mehr senden kann.


Aufgrund der gesetzlichen [http://www.fhemwiki.de/wiki/1%25_Regel 1%-Regel] kann es gerade in der Entwicklungsphase passieren, dass man mittels Testroutinen in den Bereich der 1% Regel manövriert.
In solchen Situationen kann es von Nutzen sein, mittels Plot einen Überblick über die aktuelle Auslastung zu bekommen, um eigene Codefehler von dem werksseitig eingebauten Sendestopp zu unterscheiden. Am Beispiel eines [[HomeMatic]]-Gerätes wird im folgenden gezeigt, wie eine derartige "Überwachung" erreicht werden kann.
Hierzu kann es von Nutzen sein, einen kurzen Überblick mittels Plot über die aktuelle Auslastung zu bekommen um eigene Codefehler von dem werksseitig eingebauten Sendestopp zu unterscheiden.  
 


[[Datei:Msgloadest_2_2.png|mini|350px|rechts|Beispiel-Plot mit einer Auslastung von ca. 80%]]
Dazu muss im Einzelnen wie folgt vorgegangen werden:
Dazu muss im Einzelnen wie folgt vorgegangen werden:
* Um einen Plot erzeugen zu können, wird ein Log benötigt.
* Um ein Log erzeugen zu können, wird ein Event benötigt, welches geloggt werden kann.
* Um das Event loggen zu können, wird ein [http://de.wikipedia.org/wiki/Cronjob CronJob] benötigt, der dieses Event wiederholt im Abstand x bereitstellt.


Um ein Plot erzeugen zu können wird ein Log benötigt.
Der CronJob wird mittels "at" im Zeitabstand x= 1 Minute als Reading bereitgestellt, welches den Wert von "msgLoadEst-1hour" erhält. Hierdurch werden 60 Werte pro Stunde in die Logdatei geschrieben. Sollte dies zu Performanceeinbußen auf Seiten des [[Systemübersicht#Server|Fhem-Trägersystems]] führen, kann der "+*00:01:00"-Wert entsprechend erhöht werden.
 
Um ein Log erzeugen zu können wird ein Event benötigt, welches wir loggen können.
 
Um das Event loggen zu können wird ein [http://de.wikipedia.org/wiki/Cronjob CronJob] benötigt, der dieses Event wiederholt im Abstand x bereitstellt.
 
 
Der CronJob wird mittels "at" im Zeitabstand x= 1 Minute als Reading bereitgestellt, welches den Wert von "msgLoadEst-1hour" erhält:
Man sollte aber auf alle Faelle beachten, dass man 60 Werte in der Stunde schreibt.  
Sollte dies zu Performanceeinbußen auf Seiten des fhem-Trägersystems führen, so kann man den "+*00:01:00" - Wert entsprechend erhöhen.


fhem.cfg
Erforderliche Definition in der [[Konfiguration]] (fhem.cfg):
<pre>
<pre>
define a_hmlan_internals at +*00:01:00 {\  
define a_hmlan_internals at +*00:01:00 {\  
Zeile 27: Zeile 21:
</pre>
</pre>


 
Dadurch wird ein Event ausgelöst, das (z.B. mit den folgenden Definitionen) geloggt werden kann:
Dadurch wird gleichzeitig ein Event ausgelöst, das nur noch geloggt werden muss:
 
fhem.cfg
<pre>
<pre>
define FileLog_Technik_IO FileLog %L/Technik_IO-%Y-%M.log global:.*|HMLAN1:cond:.*|HMLAN1:hmTrfHour:.*
define FileLog_Technik_IO FileLog %L/Technik_IO-%Y-%M.log global:.*|HMLAN1:cond:.*|HMLAN1:hmTrfHour:.*
Zeile 37: Zeile 28:
</pre>
</pre>


 
Die graphische Darstellung (Plot) wird durch die Definition
Die Definition des Plots erstreckt sich dabei wie folgt:
 
fhem.cfg
<pre>
<pre>
define SVG_FileLog_Technik_IO_1 SVG FileLog_Technik_IO:SVG_FileLog_Technik_IO_1:CURRENT
define SVG_FileLog_Technik_IO_1 SVG FileLog_Technik_IO:SVG_FileLog_Technik_IO_1:CURRENT
Zeile 47: Zeile 35:
</pre>
</pre>


Abschließend muss nur noch die gnuplot-Datei selbst erstellt werden.
... in Verbindung mit folgenden [[Plots erzeugen|Plot]]-Anweisungen (im vorgestellten Beispiel in der SVG_FileLog_Technik_IO_1.gplot Datei) erzeugt:
 
SVG_FileLog_Technik_IO_1.gplot
<pre>
<pre>
# Created by FHEM/98_SVG.pm, 2014-03-22 12:11:58 set terminal png transparent size <SIZE> crop set output '<OUT>.png'
# Created by FHEM/98_SVG.pm, 2014-03-22 12:11:58 set terminal png transparent size <SIZE> crop set output '<OUT>.png'
Zeile 68: Zeile 54:
     "<IN>" using 1:2 axes x1y1 title 'shutdown' ls l2fill lw 1 with steps  
     "<IN>" using 1:2 axes x1y1 title 'shutdown' ls l2fill lw 1 with steps  
</pre>
</pre>
Die angehängte Datei zeigt als Beispiel den bereits gut ausgelasteten Fall von 80% bzw. 0,8%.
Ich hoffe, so wird es in Deinem Plot nicht aussehen! :-)
[[Datei:Msgloadest_2_2.png]]


== Links ==
== Links ==
[http://forum.fhem.de/index.php/topic,21678.msg151772.html#msg151772 Forums Beitrag]
* Beitrag / Diskussion zu diesem Thema im [http://forum.fhem.de/index.php/topic,21678.msg151772.html#msg151772 Fhem Forum]


<!-- Artikel werden lt. allgemein anerkannter Regeln nicht "unterzeichnet"
--[[Benutzer:Sailor|Sailor]] ([[Benutzer Diskussion:Sailor|Diskussion]]) 19:29, 25. Mär. 2014 (UTC)
--[[Benutzer:Sailor|Sailor]] ([[Benutzer Diskussion:Sailor|Diskussion]]) 19:29, 25. Mär. 2014 (UTC)
-->
[[Kategorie:HOWTOS]]
[[Kategorie:Code Snippets]]

Version vom 26. März 2014, 09:24 Uhr

Plot von Highload/Overload und msgLoadEst-Werten

Gerade in der Entwicklungsphase kann es passieren, dass z.B. durch den Einsatz von Testroutinen der Bereich der 1% Regel erreicht wird und dadurch ein Gerät vorübergehend nicht mehr senden kann.

In solchen Situationen kann es von Nutzen sein, mittels Plot einen Überblick über die aktuelle Auslastung zu bekommen, um eigene Codefehler von dem werksseitig eingebauten Sendestopp zu unterscheiden. Am Beispiel eines HomeMatic-Gerätes wird im folgenden gezeigt, wie eine derartige "Überwachung" erreicht werden kann.

Beispiel-Plot mit einer Auslastung von ca. 80%

Dazu muss im Einzelnen wie folgt vorgegangen werden:

  • Um einen Plot erzeugen zu können, wird ein Log benötigt.
  • Um ein Log erzeugen zu können, wird ein Event benötigt, welches geloggt werden kann.
  • Um das Event loggen zu können, wird ein CronJob benötigt, der dieses Event wiederholt im Abstand x bereitstellt.

Der CronJob wird mittels "at" im Zeitabstand x= 1 Minute als Reading bereitgestellt, welches den Wert von "msgLoadEst-1hour" erhält. Hierdurch werden 60 Werte pro Stunde in die Logdatei geschrieben. Sollte dies zu Performanceeinbußen auf Seiten des Fhem-Trägersystems führen, kann der "+*00:01:00"-Wert entsprechend erhöht werden.

Erforderliche Definition in der Konfiguration (fhem.cfg):

define a_hmlan_internals at +*00:01:00 {\ 
my $trafficStr = InternalVal("HMLAN1","msgLoadEst","???");;\
my $trafficHour = $1 if($trafficStr =~ m/1hour:(.*)% 10min steps/);;\ 
fhem("setreading HMLAN1 hmTrfHour ".$trafficHour." %" );;\ 
} 

Dadurch wird ein Event ausgelöst, das (z.B. mit den folgenden Definitionen) geloggt werden kann:

define FileLog_Technik_IO FileLog %L/Technik_IO-%Y-%M.log global:.*|HMLAN1:cond:.*|HMLAN1:hmTrfHour:.*
attr FileLog_Technik_IO logtype text
attr FileLog_Technik_IO room Log

Die graphische Darstellung (Plot) wird durch die Definition

define SVG_FileLog_Technik_IO_1 SVG FileLog_Technik_IO:SVG_FileLog_Technik_IO_1:CURRENT
attr SVG_FileLog_Technik_IO_1 alias 10. hmlan attr SVG_FileLog_Technik_IO_1 label "traffic: min [$data{min1}] - avg [$data{avg1}] - max [$data{max1}] - last [$data{currval1}] ----- [".localtime()."]"
attr SVG_FileLog_Technik_IO_1 room 90_Technik 

... in Verbindung mit folgenden Plot-Anweisungen (im vorgestellten Beispiel in der SVG_FileLog_Technik_IO_1.gplot Datei) erzeugt:

# Created by FHEM/98_SVG.pm, 2014-03-22 12:11:58 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 '<L1>'
set ytics "init" 6,"err" 4,"wng" 3,"?" 1,"ok" 0 set y2tics set grid y2tics set ylabel "condition"
set y2label "msgLoadEst % / hr"
set yrange [0:7]

#FileLog 4:HMLAN1.hmTrfHour\x3a::
#FileLog 4:HMLAN1.cond\x3a::$fld[3]=~"init"?6:$fld[3]=~"ERROR-Overload"?4:$fld[3]=~"Warning-HighLoad"?3:$fld[3]=~"ok"?0:1
#FileLog 3:global.*::$fld[2]=~"SHUTDOWN"?6:$fld[2]=~"INITIALIZED"?0:0

plot "<IN>" using 1:2 axes x1y2 title 'msgLoadEst' ls l6fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'condition' ls l0 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'shutdown' ls l2fill lw 1 with steps 

Links

  • Beitrag / Diskussion zu diesem Thema im Fhem Forum