Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| centos:energieverbrauch [13.07.2012 06:40. ] – [Perl Script zum Datenbankauslesen] 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! | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||