Eine Sammlung an Programmen und Skripten zur Auswertung von Heizungsdaten.

Annahmen:
-Verwendet wird ein Raspberry Pi Zero mit raspbian
-Der Nutzer, unter dem die Skripte und Programm laufen, heißt "pi"
-die Dateien liegen unter /home/pi/loga
-der pi hat Netzwerkverbindung
-cron, lighttpd, gnuplot, Gnu-C-Compiler sind installiert
-verschiedene plugins für python sind installiert (Fehler bei Nichtvorhandensein sind aussagekräftig)
-Nutzer pi hat Schreibzugriff auf /var/www/html
-Nutzer pi ist in der Gruppe dialout (für Zugriff auf die serielle Schnittstelle)

Zu den Dateien:

* loga.c:, Datenlogger, der die Daten über die Serielle Schnittstelle eines
  Raspberry Pi Zero einliest und bekannte Werte extrahiert und in die Datei
  datalog.csv überträgt. Bietet die Möglichkeit, das Logfile zu kürzen und
  die entfernten Zeilen einem Archiv anzuhängen.
* capture.c: Nimmt die Rohdaten der Schnittstelle und schreibt sie in eine
  Binärdatei data.bin
* auswert.c: Geht durch die Binärdatei data.bin, die capture.c erzeugt und
  gibt die Bytes in hexadezimaler Form aus. Vor dem Byte af erfolgt ein
  Zeilenumbruch, da es sich um den Beginn einer Botschaft handeln sollte.
  Das Programm zählt die Bytehäufigkeiten, gibt sie aber in der jetzigen
  Form nicht aus.
* genWWW.py: Erzeugt ein 2-Stunden-Diagramm out.svg und eine Datei
  index.html in /var/www/html. Die resultierende Webseite kann auf dem
  Smartphone abgerufen werden und enthält neben dem Diagramm eine Anweisung,
  ob der Holzofen weiter zu bestücken ist.
* genAndUpload.py: Erzeugt ein 48-Stunden-Digramm heizung.svg und lädt es auf
  einen ftp-Server hoch, wo sie dann von außen abgerufen werden kann. Die
  Zugangsdaten des zu verwendenden Webservers sind hier einzutragen!
* genWWW.gp: Gnuplot-Anweisung zum Erzeugen eines 48h-Diagramms
* 2days.gp: Gnuplot-Anweisungen zum Erzeugen eines 2h-Diagramms

Übersetzen:

Mittels "make" im Verzeichnis /home/pi/loga werden die C-Quellcodes in
ausführbare Dateien übersetzt.

Inbetriebnahme des Loggers:

In die crontab des Benutzers müssen die Datenerzeugungsskripte eingetragen
werden. Soll zum Beispiel das Zweitages-Diagramm jede Stunde erzeugt und auf
einen Server hochgeladen werden und das Zweistunden-Diagramm alle fünf
Minuten, sieht die crontab folgendermaßen aus:

0 * * * * /home/pi/loga/genAndUpload.py
*/5 * * * * /home/pi/loga/genWWW.py

Für aktuelle Daten muß loga permanent laufen. Dies erreicht man im
einfachsten Fall, indem nach jedem Start des Raspberries per ssh ein Login
erfolgt und nach Wechsel in das Verzeichnis "loga" der Logger mit "nohup
./loga&" gestartet und in den Hintergrund geschickt wird. Alternativ kann
der Logger nach dem Start vom init-System gestartet werden.

Um aus Ressourcengründen die nicht mehr benötigten führenden Zeilen aus dem
Logfile datalog.csv zu entfernen, kann dem Programm loga ein SIGHUP geschickt
werden (kill -HUP <pid von loga>. Diese Zeilen werden an eine Datei
datalog_bak.csv angehängt. Dies könnte ebenfalls von der cron Datei gesteuert
alle 3 Monate erfolgen. Momentan ist aber noch kein Code vorhanden, der die PID
von loga ermittelt.

