:: fischer-net.de

Seit vielen Jahren erstelle ich in Cacti Graphen zu diversen Devices aus FHEM. Es wird Zeit, dass ich das für Interessierte dokumentiere.

 

Voraussetzungen

 

Linux Host 

Auf die Installation eines Linux Hosts wird hier nicht näher eingegangen. Ich setzte vorzugsweise Ubuntu ein. Die Lösung sollte jedoch mit allen gängigen Distributionen umsetzbar sein.

 

FHEM

Auf die Installation von FHEM wird ebenfalls nicht weiter eingegangen. Lediglich das Modul getstate muss für diese Lösung seitens FHEM verfügbar sein. getstate befindet sich aktuell im contrib-Verzeichniss und muss in das entsprechende Modulverzeichnis (aktuell FHEM) kopiert werden. FHEM befindet sich bei dieser Lösung auf dem gleichen Linux Host wie Cacti.

 

Cacti

Auch auf die Basisinstallation von Cacti wird hier nicht näher eingegangen. Cacti sollte lauffähig auf dem Linux Host vorhanden sein. In dieser Beschreibung wird die Einrichtung eines Cacti Devices, sowie die notwendigen Schritte zur Darstellung der Graphen dokumentiert. Im folgenden Beispiel wird auf den ELV Funk-Kombi-Wettersensor - KS 300-2 eingegangen (In den Beispielen weicht die Bezeichnung etwas ab. Ich verwende KS555, da dieses ein anderes nicht mehr erhältliches Modell, jedoch Baugleich mit dem KS300 ist.). Dieser Sensor muss in FHEM eingerichtet werden.

 

Graphen erstellen in Cacti

 

Device erstellen

Cacti DevicesCacti DevicesIm ersten Schritt wird ein passendes Device in Cacti erstellt. Das Device dient zur besseren Struktur innerhalb von Cacti. Des weiteren kann Cacti die Erreichbarkeit des FHEM-Servers überwachen und bei Bedarf eine Event auslösen. Darauf wird hier aber nicht weiter eingegangen.

Dem Device wird ein passender Name sowie Hostname vergeben. In diesem Beispiel verwende ich myHCE als Description und trotz lauffähigem DNS eine IP-Adresse (192.168.1.5) für den Hostname. Die IP-Adresse zeigt auf den Linux Host auf dem FHEM läuft.

Um die Erreichbarkeit von FHEM zu überwachen wird die Downed Device Detection auf Ping mit der Ping Method UDP Ping gesetzt. Der Ping Port ist der von FHEM genutzte Port, standard ist 7072.

Weitere Angaben werden in diesem Schritt nicht benötigt. Die übrigen Felder können übernommen werden.

 

Data Input Method erstellen 

Cacti Data Input MethodsCacti Data Input MethodsCacti muss die darzustellenden Daten pollen. Dazu wird eine Data Input Method eingerichtet, die die eigentliche Kommunikation mit FHEM und dem dort bereitgestellten getstate vornimmt.

In diesem Beispiel wähle ich als Name fhem - Get KS555 Data und als Input Type Script/Command. Der entsprechende Aufruf des Scriptes muss unter Input String eingefügt werden:

perl <path_cacti>/scripts/my_scripts/fhem-getstate.pl -s <server> -d <device>

Als nächstes müssen die entsprechenden Input Fields erstellt werden. Dabei werden die Felder aus dem Input String wie folgt angelegt:

Name   Field Order   Friendly Name
server   1   FHEM Server
device   2   Device

Nun müssen die entsprechenden Output Fields (also die von getstate zurück gegebenen Werte) eingerichtet werden. Ich verwende dabei die folgenden Felder:

Name   Friendly Name   Update RRA
humidity   Humidity   selected
rain   Rain   selected
rain_raw   Rain Counter   selected
temperature   Temperature   selected
wind   Wind   selected

Das Script fhem-getstate.pl muss im Cacti Pfad (meist /usr/share/cacti/site) im Verzeichnis /scripts/my_scripts angelegt werden. Es kann im Downloadbereich herunter geladen werden (Tip: Vorher entpacken ;-)).

 

Data Template erstellen

Cacti Data TemplatesCacti Data TemplatesDie zuvor definierten Rückgabewerte von FHEM werden nun in einem Data Template verwendet. Das Data Template ist später die Vorlage für die eigentliche Round-Robin-Database (RRD).

In diesem Beispiel wird nur auf ein Data Template zur Erfassung der von dem zuvor definierten Data Input Method fhem - Get KS555 Data zurück gelieferten Output Field temperature Exemplarisch eingegangen. Weitere Data Templates für die Output Fields Humidity, Rain, etc. können analog dazu angelegt werden. Auch könnten alle Output Fields in ein und demselben Data Template als Data Source Item hinterlegt werden.

Ich gehe hier nur auf die wichtigsten Felder für das Data Template ein. Weitere Angaben sind dem Screenshot zu entnehmen.

Data Templates    
Name   fhem - KS555 Temperature    
          
Data Source    
Name   |host_description| - KS555 Temperature   Use Per-Data Source Value: Yes
Data Input Method   fhem - Get KS555 Data    
Associated RRA's   Daily, Weekly, Monthly, Yearly    
Data Source Active   Yes    
          
Data Source Item    
Internal Data Source Name   temperature    
Minimum Value   -50    
Maximum Value   50    
Data Source Type   GAUGE    
Output Field   temperature - Temperature    
          
Custom Data    
Device       Use Per-Data Source Value: Yes
FHEM Server   192.168.1.5    

 

Graph Template erstellen

In diesem Schritt wird der eigentliche Graph gestaltet. Die vorher beschriebenen Schritte müssen abgeschlossen sein. Da die Erstellung ein wenig mehr Eingaben erfordert, teile ich diese in Teilschritte auf.

Das Graph Template enthält viele Einstellungen. Ich gehe hier nur auf ein paar davon ein um die Erstellung der Graphen später zu vereinfachen. Die für mich wesentlichen Einstellungen sind:

Graph Item Inputs    
Name   Data Source [temperature]    
         
Template    
Name   fhem - KS555 Temperature    
         
Graph Template     
Title   |host_description| - fhem KS555 Temperature   Use Per-Graph Value: Yes
Slope Mode   Yes    
Auto Scale Options   Use --alt-autoscale-min    
Rigid Boundaries Mode   Yes    
Upper Limit   40    
Lower Limit   -20    
Vertical Label   ° Celsius    

Der eigentlich Graph muss noch gestaltet werden. Wichtig dabei ist, das die richtige Data Source, in diesem Beispiel fhem - KS555 Temperature (temperature) gewählt wird. Diese Data Source ist für das im Beispiel erzeugte Item #1, Item #2, Item #4, Item #5, Item #6 und Item #7 zu wählen. Wie alles zu guter Letzt aussehen sollte ist den folgenden Screenshots zu entnehmen. Aus Gründen der Übersichtlichkeit habe ich den Screenshot in mehrere Teile aufgeteilt. Alle sind jedoch auf der selben Seite vorzunehmen.

Cacti Graph TemplateCacti Graph Template 1
Cacti Graph Template 2Cacti Graph Template 2

Abschliessend muss auf Basis des gerade erstellten Graph Templates der eigentliche Graph angelegt werden. Dies geschieht entweder über das zuvor angelegte Device oder über das Menü Graph Management. Der geübte Cacti-User sollte hier seinen bevorzugten Weg gehen.

Bei der Erstellung des Graphen muss abschliessend noch das FHEM-Device angegeben werden. Also das Device welches über getstate abgefragt wird.

 

Graphen aus FHEM-Daten 

Zum Abschluß ein paar ausgewählte Impressionen der von mir angelegte Graphen: 

Temperature weeklyTemperatur weekly Temperature monthlyTemperatur monthly Temperature yearlyTemperatur yearly
Gasverbrauch weeklyGasverbrauch weekly Gasverbrauch monthlyGasverbrauch monthly Gasverbrauch yearlyGasverbrauch yearly
Heizkreise weeklyHeizkreise weekly Heizkreise monthlyHeizkreise monthly Heizkreise yearlyHeizkreise yearly
Wohnzimmer weeklyWohnzimmer weekly Wohnzimmer monthlyWohnzimmer monthly Wohnzimmer yearlyWohnzimmer yearly
Haus-Automatisierung bei conrad.de
Egal ob Stehlampe, Schrankbeleuchtung, Rollladen oder auch Heizlüfter: Mit Conrad.de steuern Sie die unterschiedlichsten Verbraucher effektiv und bequem vom Sessel aus - zu enorm günstigen Preisen! Hier gehts zu den Produkten...

Powered by ...

 

 

reichelt elektronik – Elektronik und PC-Technik