Ich präsentiere

Die vermutlich kleinste/kürzeste , aber dafür immer noch recht umfassende Smart-Metering Lösung der Welt. Nur 140 Zeilen „Code“.

cat create-rrd.sh fetchdata.pl makegraphs.sh doall.sh crontab.example |wc -l
140

Download HIER

Details, was  man damit machen kann bzw. wie das Ergebnis aussieht: HIER bzw. HIER oder direkt hier ein Screenshot damit der Artikel etwas bunter ist:

Es sei noch zu erwähnen, daß die hier vorgestellte Lösung nicht unbedingt von einem CurrentCost abhängt. Es handelt sich vielmehr im Wesentlichen um eine Langzeit Datenlogger-Lösung, die über ein paar Scripts Messdaten entgegennimmt, in eine RRD Datenbank stopft und daraaus Graphen geniert. Wert wurde dabei auf Einfachheit und Portabilität gelegt. Natürlich kann man insbes. fetchdata.pl leicht umändern und seine eigene Hardware damit „anzapfen“.   Eine „ReadyToRun“ Lösung stellt es nur zusammen mit einem CurrentCost dar.

Installationsvorraussetzung

Hardware:  1x CurrentCost Envi + 1x USB Kabel + 1x Linux kompatibles System

Software:  Linux, Bash, Perl, RRDTool

Beschreibung

create-rrd.sh – erzeugt die RRD Round-Robin Datenbank
fetchdata.pl – Liest die Daten vom CurrentCost und packt sie in die RRD DB
makegraphs.sh – generiert Graphen aus der RRD
doall.sh – kleines Hilfsscript um das Generieren aller Graphen zu triggern
crontab.example – Beispiel für Crontab

Achtung, für die Installation müssen diverse Pfade angepasst werden. Wird noch verbessert bzw. mittels Variablen/Setup-Doku ergänzt. Auch der Deutsch/Englisch Mix wird noch vereinheitlicht. Daß die Lösung noch nicht einheitlich in einer Programmiersprache geschrieben ist gefällt mir auch noch nicht so ganz, evtl. wäre Perl für alle Scripts die 1. Wahl und evtl. lässt sich fetchdata.pl und makegraphs.sh dann in einem Script vereinen, so daß es innerhalb eines Prozesskontextes läuft, was RAM spart. Immerhin soll die Lösung ja auch in einem Embedded Device gut laufen.

Warum die auf den ersten Blick eigenartige Verfahrensweise über diese „xy.do“ Dateien über die Crontab? Die Graphengenerierung soll streng serialisiert stattfinden, weil ein Embedded-Device u.U. nicht genügend Ressourcen hat, parallel mehr als einen Graphen gleichzeitig zu erzeugen. Den Omnima-Router mit seinen 16MB hat`s jedenfalls regelmässig zerlegt, wenn „zufällig“ gerad mal 3 Graphen parallel generiert wurden….

Der Start von fetchdata.pl oder makegraph.sh kann für den Betrieb als Hintergrund-Dienst mittels „nohup ….. >/dev/null 2>&1 &“ erfolgen.

Alles OpenSource, GPL – und damit für lau!

Fragen ?

Viel Spass !

Um Feedback, Anregungen, Kritik, Verbesserungsvorschläge wird ausdrücklich gebeten. Email siehe Readme

Advertisements