Vor über einem Jahr bin ich im Rahmen meiner smart-home und IoT Projekte über den Volkszähler gestolpert.

Auf der Homepage von Volkszähler heißt es: “volkszaehler.org ist ein freies Smart Meter im Selbstbau. Der Nutzer behält dabei die vollständige Kontrolle über die anfallenden Strom, Wasser & Gaskosten.” Prima, genau mein Ding – Meine Daten bleiben im Haus und landen nicht in irgendeiner Hersteller-Cloud.

Also habe ich mir einen USB-IR-Schreib-Lesekopf mit zwei IR-LEDs gebastelt und den Volkszähler in Betrieb genommen. Und ich muss sagen: Hut ab – Tolles Projekt! Lief sofort ohne das übliche Open Source gebastle.

ABER: Volkszähler verwendet zur Speicherung der Daten eine MySQL Datenbank. Eigentlich keine schlechte Idee, aber auf einer SD-Karte sorgen die andauernden Schreibvorgänge, wofür SD-Karten nicht gemacht sind. Die Folge davon ist, dass SD-Karten nach relativ kurzer Zeit kaputt gehen und die Daten damit futsch sind. Angefangen hat es bei mir mit Speicherzugriffsfehlern.

Sobald Fehler wie diese auftreten sollte man schnell reagieren

  1. MySQL-Daten sichern
    Die default MySQL-Benutzername/Passwort Kombinationen sind:
    vz/demo für Lese- und Schreibzugriffe,
    vz-admin/secure für Löschzugriffe
    root/raspberry für  den lokalen Administratorzugang

    mysqldump -uroot -praspberry volkszaehler | bzip2 >volkszaehler_mysql_backup.bz2

    Je nach Größe der MySQL Tabelle dauert der Export und der bzip dauern recht lange (>5-10 Min), währenddessen keine Ausgabe erfolgt. Positiv sehen und warten –> keine Ausgabe = kein Fehler –> gutes Zeichen

  2.  Neue SD-Karte besorgen (diesmal vielleicht keinen Billigramsch)
  3. Volkszaehler neu installieren
  4. Datenbank wiederherstellen /einspielen
    bunzip2 volkszaehler_mysql_backup.bz2
    mysql -uroot -praspberry volkszaehler < volkszaehler_mysql_backup

    Ich wiederhole mich kurz für die Schnelleser: Je nach Größe der MySQL Tabelle dauert der Import und der bzip dauern recht lange (>5-10 Min), währenddessen keine Ausgabe erfolgt. Positiv sehen und warten --> keine Ausgabe = kein Fehler --> gutes Zeichen

  5.  Falls  ein USB-Lesekopf verwendet wird muss noch das Setup gemacht werden.
  6. Und falls noch etwas wie der Hostname o.ä. geändert werden ... einfach so zur Sicherheit
    reboot
  7. Fertig

Wenn nach der Aktion alles wieder so aussieht ist wieder Regelbetrieb bis zum nächsten SD-Karten-Crash angesagt.

Eine langfristige Lösung wäre die MySQL-Daten auf einer SSD oder ähnlichem abzulegen anstatt auf der SD-Karte.
Wenn ich mal etes mehr Zeit habe udn SD-Karten teurer werden schreibe ich vielleicht eine Anleitung dafür 😉