Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:energieverbrauch [03.08.2011 20:12. ] – [Definition Ausgabegraphen] django | centos:energieverbrauch [20.04.2018 10:37. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Darstellung des Energieverbrauchs (Strom und Gas) ====== | ||
+ | {{ : | ||
+ | ===== Verbrauchsdaten über ein eigenes Script auslesen ===== | ||
+ | Für diese Aufgabe nutzen wir kleines Perl-Script, | ||
+ | < | ||
+ | Wollen wir mehrere Werte zugleich verarbeiten, | ||
+ | < | ||
+ | Als Dezimaltrennzeichen erwartet Cacti einen Punktund __kein__ Komma! | ||
+ | ==== Perl Script zum Datenbankauslesen ==== | ||
+ | Zum Auslesen der aktuellen Verbrauchswerte aus der MySQL-Datenbanktabelle **fhem.history** verwenden wir nicht das von //fhem// mitgelieferte Perl-Script, | ||
+ | |||
+ | <file perl usr/ | ||
+ | # | ||
+ | # strom_edv.pl: | ||
+ | # Einheit Watt aus. | ||
+ | # | ||
+ | # (c) Django 2009 - email: michael@nausch.org | ||
+ | # | ||
+ | # Ausgabe: | ||
+ | # | ||
+ | # Eingabe: | ||
+ | # | ||
+ | # Returncodes: | ||
+ | # 1 = Fehler bei der MySQL-Verbindung | ||
+ | # 2 = Fehler beim Lesen aus der MySQL-DB | ||
+ | # | ||
+ | # Version: | ||
+ | # 0.01 12.01.09: | ||
+ | # Todo : nix ;) | ||
+ | ################################################################################################################# | ||
+ | |||
+ | use strict; | ||
+ | use DBI; | ||
+ | use DBD::mysql; | ||
+ | use IO::File; | ||
+ | my ($query, | ||
+ | |||
+ | ### MySQL Setup ### | ||
+ | my $DBuser=" | ||
+ | my $DBpass=" | ||
+ | my $dbhm=DBI-> | ||
+ | { | ||
+ | PrintError => 1, | ||
+ | } | ||
+ | ); | ||
+ | unless ( $dbhm ){ | ||
+ | print " | ||
+ | exit(" | ||
+ | } | ||
+ | |||
+ | $sql=" | ||
+ | |||
+ | #sql statement ausführen | ||
+ | $sthd=$dbhm-> | ||
+ | $sthd-> | ||
+ | # | ||
+ | if ($sqlstated) { | ||
+ | print " | ||
+ | exit(" | ||
+ | }; | ||
+ | |||
+ | ### Rückgabewerte der SQL-Abfrage bearbeiten und ausgeben ### | ||
+ | $insql=undef; | ||
+ | while (@row=$sthd-> | ||
+ | $insql=undef; | ||
+ | foreach $line (@row) { | ||
+ | $val=''; | ||
+ | $val=$line if ($line); | ||
+ | $insql.=" | ||
+ | } | ||
+ | } | ||
+ | print " | ||
+ | </ | ||
+ | |||
+ | Diese Codezeilen speichern wir unter ** / | ||
+ | # chmod +x / | ||
+ | |||
+ | Beim Ausruf unseres Scriptes wird uns nun, der in der MySQL-Tabelle **fhem.current** enthaltene Verbrauchswert in der Einheit kW, auf der Konsole in der Einheit Watt ausgegeben. | ||
+ | # / | ||
+ | | ||
+ | ===== Cacti-Konfigurationen ===== | ||
+ | ==== Definition Dateneingabe ==== | ||
+ | Unter dem Menüpunkt **// | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Im Feld //Name// geben wir der Eingabemethode einen sprechenden Namen; als //Input Type// wählen wir **Script/ | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Der String im Feld **Field [Output]** muss der Ausgabe unseres Scriptes entsprechen, | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Zum Schluß speichern wir unsere Angaben mit einem Klick auf die Schaltfläche **save**. Wir haben nun das " | ||
+ | ==== Definition Datenquelle ==== | ||
+ | Wir lagen also eine Datenquelle unter dem Menüpunkt **Managemen** **// | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Der Datenquelle geben wir einen Namen, damit wir bei den weiteren Schritten diese einfach wiederfinden. Das Feld **Data Source Path** brauchen wir nicht zu befüllen, dies erledigt Cacti selbst, sobald wir den Datensatz abspeichern. Bei **Data Input Method** wählen wir unser zuvor definierte Dateneingabe **// | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Bei **Data Source Item** vergeben wir noch einen sprechenden | ||
+ | \\ | ||
+ | Nun wird Cacti beginnen, in dem vorgegebenen 5 Minutenraster unser Perl-Script zum Auslesen der MySQL-Datenbanktabelle aufzurufen und die Rückgabewerte in das betreffende RRD-File zu schreiben. | ||
+ | ==== Definition Ausgabegraphen ==== | ||
+ | Nachdem nun Cacti auf Grund unserer zuvor definierten Datenquelle, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Hier klicken wir auf **Add** und lassen die Felder **Selected Data Template** und **Host** auf " | ||
+ | |||
+ | Im Feld **Title (--title)** tragen wir nun die Überschrift ein, die über unserer Graphik erscheinen soll. Bei **Vertical Label (--vertical-label)** geben wir an, was neben der Y-Achse als Beschriftung erscheinen soll, in unsere Fall z.B. //Watt// als Einheitenangabe der Meßwerte. Abgespeichert werden unsere Angaben, wie gewohnt nach Anwahl der Schaltfäche **save**. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Über **Graph Items** müssen wir nun noch festlegen, wie die Daten dargestellt werden, also letztendlich der Graph gezeichnet werden soll. Wir wählen also bei **Graph Items** die schaltfläche **Add** an und gelangen zum nächsten Eingabefenster. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Bei den Eingabefeldern orientieren wir uns nun an Hand der vom System vorgegebenen Graphen und/oder wir experimentieren einfach ein wenig. Sehr hilfreich ist dabei, den Punkt **__*Turn Off Graph Debug Mode.__** (rechts oben am Bildschirm) zu aktivieren. Cacti zeigt dann sofort an, wenn etwas nicht passen sollte! | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||