Für die Speicherung der Daten wird eine Datenbank eingesetzt. Da nahezu jede Datenbank dazu verwendet werden kann, wird hier beispielhaft nur die Verwendung von MySQL beschrieben. MySQL ist eine kostenlose Datenbank für viele Betriebssysteme und kann auch auf den hier interessanten Kleinstrechnern unter Linux betrieben werden.
Das Datenbankschema für den Volkszähler ist einfach. Es besteht aus fünf Tabellen:
Die einfachste Möglichkeit besteht darin, das ganze über die Webobefläche zu administrieren. Für den Fall des Rasperrpi ist das dann :
"http://raspberrypi/phpmyadmin/"
Als Benutzername/Passwort dann entwender vz/demo für Lese- und Schreibzugriffe, vz-admin/secure für Löschzugriffe oder den lokalen Administratorzugang (root/raspberry) der in /etc/mysql/debian.cnf
steht.
Die Standardanwendung
mysqldump -uvz -pdemo volkszaehler
Als Ziel taugt jedes gemountete Verzeichnis, vorzugsweise auf einem externe Datenträger.
Eine solche Sicherung ist Klartext und kann recht Umfangreich werden. Speicherplatz spart man indem man die Sicherung direkt komprimiert.
mysqldump -uvz -pdemo volkszaehler | bzip2 >mysql_backup.bz2
Möchte man der SD-Karte im Rasperry unnötige Schreibzugriffe ersparen kann man auch über ssh auf einen Backuprechner sichern.
destssh0=/home/backup/`uname -n`/ destssh2=${destssh0}/`date +%Y%m%d` mysqldump -uvz -pdemo volkszaehler --single-transaction | gzip -c | ssh root@backuprechner "cat > $destssh2.mysql_backup.gz"
Achtung: bevor das Script funktioniert, MUSS der SSH Fernzugriff ohne Passwort aktiviert sein. Ich habe hier auf die Anleitung http://mathias-kettner.de/lw_ssh_anmeldung_ohne_passwort.html zurückgegriffen.
Möchte man die Nachteile von mysqldump umgehen bietet sich dbcopy an.
Unter phpMyAdmin hat man grundsätzlich die Möglichkeit teilweise oder auch ganze Datenbanken zu sichern. Allerdings unterliegt PHP als Skriptsprache starken Restriktionen welche das Zurückspielen eines Backups über phpMyAdmin erschweren oder sogar unmöglich machen.
mysql -uvz -pdemo volkszaehler < 20131124.mysql_backup
Um die Daten sich in Excel oder Openoffice anzusehen, ist es sinnvoll diese nach CSV zu exportieren. Dazu habe ich recht viel im Internet suchen müssen, bin aber am Ende zu folgendem Ergebnis gekommen:
#!/bin/bash database=volkszaehler table=data echo 'SELECT * FROM ' ${table} | mysql -B -uvz -pdemo ${database} | gzip -c > ${database}_${table}_`date '+%Y-%m-%d-%H%M'`.txt.gz