Donnerstag, 12. März 2015

Splunk Visualisiert


Die Startseite des Monitoring Tools

Alle Wichtigen Daten zum Zustand der Heizung im Blick





Was macht eigentlich der Brenner so genau ?

Homematic steuert und liefert Informationen

Jetzt möchte ich die Informationen die ich bekomme auch auswerten. Aufgrund der maximalen flexibilität habe ich mich für das Tool Splunk entschieden.
Splunk wird nach Datenvolumen lizensiert, eine 500 MB am Tag Lizenz ist konstenlos verfügbar. Das reicht für die Nutzung im privaten völlig aus.

Aktuell habe ich einen ständig laufenden PC, daher habe ich mich für die Variante syslog entschieden.

Auf der CCU erzeugte ich syslog Events die dann in Splunk weiter visualisiert werden können. Da Splunk eine automatische key value erkennung hat, sind die Informationen die ich sende wie folgt aufgebaut.

Mar 13 16:29:15 192.168.188.5 Mar 13 16:29:14 <someone>: [SOURCE=VIESSMANN SOURCETYPE=TEMPERATURE ORT=Heizung NAME=Vorlauf VALUE=38.400002]

SOURCE und SOURCETYPE  werden in Splunk weiterverwendet. Die anderen Werte sind selbstsprechend.

Da ich dann Probleme mit der CCU bekommen habe, zu viele Systemaufrufe (trotz cuxd), habe ich es umgestellt das ich die Events per WriteLine im Script erzeuge und dann aber die syslog Aufrufe am Server selber durchführe.


 string loggerCommand="logger -u /tmp/ignored --server 192.168.188.44 --port 5000 '";  
 real sensor = dom.GetObject("BidCos-RF.JEQ0551861:1.TEMPERATURE").Value();  
 string event = "[SOURCE=CCU SOURCETYPE=TEMPERATURE ORT=Wohnzimmer NAME=Temperatur VALUE="#sensor#"]";  
 WriteLine(loggerCommand #event#"'");  
 sensor = dom.GetObject("BidCos-RF.JEQ0551861:1.HUMIDITY").Value();  
 event = "[SOURCE=CCU SOURCETYPE=HUMIDITY ORT=Wohnzimmer NAME=Luftfeuchtigkeit VALUE="#sensor#"]";  
 WriteLine(loggerCommand #event#"'");  


Viessmann Heizung Informationen auslesen

Diesen Winter ist unsere Heizung immer wieder ausgefallen. Dies brachte mich dazu zu suchen ob ich diese Information nicht irgendwie automatisiert auslesen kann um mich auf dem Handy zu informieren.
Das brachte mich zu der Seite http://openv.wikispaces.com/

Also bestellte ich den Viessmann Diagnose Adapter und kompilierte die Tools auf dem Raspberry wie auf openv beschrieben.
Angesteckt, läuft. In der Konsole stehen die Informationen die ich benötige.

Jetzt stellten sich noch zwei aufgaben die mit vcontrol und vclient hervorragend zu lösen waren.

jetzt wollte ich die Heizungsinformationen in meine CCU laden

Dazu habe ich wie beschrieben eine Template Datei mit folgenden Inhalt erstellt
dom.GetObject("V.Heizung.Aussentemperatur").State($1);
dom.GetObject("V.Heizung.Vorlauftemperatur").State($2);
dom.GetObject("V.Heizung.WarmwasserIst").State($3);
dom.GetObject("V.Heizung.WarmwasserSoll").State($4);
dom.GetObject("V.Heizung.Kesseltemperatur").State($5);
dom.GetObject("V.Heizung.Brennerzustand").State($6);
dom.GetObject("V.Heizung.StatusNeu").State($7);
dom.GetObject("V.Heizung.NiveauIst").State($8);
dom.GetObject("V.Heizung.NeigungIst").State($9);
dom.GetObject("V.Heizung.SolltemperaturIst").State($10);
dom.GetObject("V.Heizung.Modus").State("$R11");
mit folgendem Kommandozeilenaufruf wird die Heizung abgefragt, die Platzhalter ersetzt, eine neue Datei erstellt und diese an die CCU per CURL gepostet.

 vclient -h 127.0.0.1:3002 getTempA,getTempVListM2,getTempWWist,getTempWWsoll,getTempKist,getBrennerStatus,getStatusStoerung,getNiveauM2,getNeigungM2,getTempRaumRedSollM2,getBetriebArtM2 -t ./Homematic/viessmann/ccu.tmp -o /tmp/ccu  
 curl --data-binary @"/tmp/ccu" http://192.168.188.2:8181/x.exe  

Die führt dann das Script aus.
Voila. Die Variablen sind gefüllt