Backup des Raspberry Pi im laufenden Betrieb

Auf meinem Raspberry Pi läuft die Hausautomatisierung FHEM. Diese kann von Haus aus schon Backups von sich selbst anlegen, allerdings laufen auf meinem Raspberry noch weitere Dinge im Hintergrund die ich garantiert bei einem Wechsel der SD-Karte vergessen würde neu aufzusetzen. Und dann sitz ich wieder da, mache dicke Backen und weiß nicht warum der Quark nicht läuft.

Also habe ich für mich beschlossen dass ich liebe die komplette SD-Karte als Backup ablege. Das kann man nun mit verschiedenen Methoden veranstalten. Einerseits könnte man mit Software wie Win32 Disk Imager an einem Windows PC die Karte klonen wozu ich aber jedes Mal den Raspberry herunter fahren müsste, die SD-Karte raus pfriemeln und ins Lesegerät stecken müsste.
Praktischerweise kann so ein Raspberry mit dem „dd Kommando“  sich auch selber klonen und das Backup auf einen externen USB-Stick, oder wie in meinem Fall, dieses auf ein externes NAS legen.

„dd“ würde ein Image auf der SD-Karte anlegen was aber totaler Quatsch wäre, wie käme man bei einem Defekt dann an die Daten? 😉
Also müssen wir ein externes Laufwerk „mounten“. Das bedeutet, wir gaukeln dem Raspberry vor dass das externe Laufwerk, welches wir beim Mounten verknüpfen ein Verzeichnis auf dem Raspberry sei.

Und das geht so:
Mit Putty auf dem Raspberry einloggen.
Als erstes legen wir nun das Verzeichnis an welches als Verbindungspunkt laufen soll.

Als nächstes folgt die Verknüpfung mit dem externen Laufwerk. In meinem Fall ein externes NAS im Keller welches Benutzername und Passwort benötigt, die Backups sollen später im Verzeichnis „backup“ abgelegt werden (muss schon existieren):

Dabei muss dann entsprechend Benutzername, Passwort und IP-Adresse bei Euch angepasst werden.

Damit bei jedem Neustart des Raspberry das Laufwerk auch wieder neu gemounted wird muss noch per Crontab ein Job angelegt werden. Dazu gehe ich aber später ein, wir müssen eh noch im Crontab einen Job anlegen.

Um einen USB-Stick zu mounten muss man etwas anders vorgehen, da hängt es unter anderem davon ab welchen Typ man benutzt. Da verweise ich auf dieses Tutorial, es würde hier zu lang werden.

Nun benutzen wir ein Script welches recht komfortabel die Backups erstellt und, wenn eine bestimmte Anzahl an Backups vorhanden ist, das älteste löscht.
Dazu einfach den Editor nano starten:

Hier nun das Script (Quelle:  Raspberry-tips) hinein kopieren und folgende Variablen anpassen:

  • BACKUP_PFAD – Pfad zum verknüpften Laufwerk (in unserem Fall /backup)
  • BACKUP_ANZAHL – Wieviele Backups sollen aufbewahrt werden?
  • BACKUP_NAME – Name der Sicherung
  • DIENST_START_STOP – Dienste die vor dem Backup gestoppt und dann wieder gestartet werden. Das ist zum Beispiel ziemlich wichtig wenn u.a. ein MySQL-Server mit drauf läuft, es gibt sonst korrupte Datenbankeinträge. Hat man keine wichtigen Dienste laufen kann man die Zeilen 11 und 17 mit einer Raute auskommentieren.

Abspeichern mit STRG+X, Y und Enter. Das Script muss nun ausführbar gemacht und verschoben werden:

Kommen wir nun zum Crontab. Mit Crontabs können zeitgesteuert Prozesse gestartet werden.
Dazu den Crontab-Editor öffnen mit:

Unter der letzten Zeile einen neuen Job anlegen mit

Damit wird jeden Tag um 1 Uhr früh ein Backup gestartet.
Wer sich selber andere Zeiten oder nur für bestimmte Tage die Woche ein Backup anlegen möchte schaut sich mal den crontab guru an, da kann man sich seinen Zeitplan recht komfortabel zusammenstellen und dann die Zeile kopieren.

Ich sprach ja vorhin davon dass wir bei den Crontabs noch einen weiteren Job wegen des Mounts anlegen müssen. In eine weitere Zeile fügt ihr folgendes ein:

Passt auch hier wieder ggf. Eure IP, Pfade und Name/Passwort an.

Nun noch speichern mit STRG+X, Y und Enter und schon laufen zur gewünschten Zeit die Backups.
Für meine 8 GB SD-Speicherkarte dauert ein Backup etwa 9 Minuten. Ich lasse die Backups 2x wöchentlich laufen jeweils morgens um 3 Uhr.
Mein Job dazu sieht dann wie folgt aus:

Und was macht man nun im Fall des Falles um das Backup zurück zu spielen?

Einfach das Image vom NAS mit dem Programm Win32 Disk Imager (oder einer anderen Software zum Bespielen von Images auf SD-Karten) auf eine frische Speicherkarte spielen, einstecken, Rasperry booten, fertig.

FHEM – Homematic Heizkörperthermostat mit externem Temperatursensor peeren

Homematic Heizkörperthermostat HM-CC-RT-DN

Vor einiger Zeit habe ich angefangen unser Haus „smart“ zu machen. Für die Automatisierung habe ich mich für das Projekt FHEM entschieden welches auf einem kleinen Raspberry Pi 3 werkelt und daher ohne Hersteller-Clouds klar kommt. FHEM arbeitet mit sehr vielen Hersteller-Protokollen zusammen und ist umfangreich editierbar. Allerdings setzt es einen gewissen Grad an Programmierkenntnissen voraus. Und manchmal findet man die Lösung für seine Probleme nicht immer sofort sondern über mehrere Quellen verteilt.
So erging es mir z.B. als ich meine Homematic Funk-Heizkörperthermostate HM-CC-RT-DN nachträglich mit externen Temperatursensoren verbinden wollte. Die Homematic-Sensoren lassen sich zwar unabhängig von FHEM mit den Thermostaten peeren, kosten aber ne Menge. Und da XIAOMI seine Aquara Sensoren für sehr schmales Geld anbietet stand für mich schnell fest: die sollen es werden.
Die nun folgende Prozedur funktioniert aber auch mit anderen externen Sensoren so lang sie in der Lage sind ihre Werte an FHEM zu übermitteln.

XIAOMI Aqara SensorEin Blick ins FHEM-Wiki verspricht: kinderleicht. *hust*
Dort wird das Peering nur „husch-husch“ beschrieben. Allerdings gibt es ein paar Klippen zu umschiffen bis alles so läuft wie gewünscht. Nachdem ich über mehrere Quellen mir alle Informationen zusammen getragen habe schreibe ich sie hier mal nieder. In erster Linie für mich für weitere Sensoren, aber vielleicht hilft es dem ein oder anderen ebenfalls.

zum peeren mit externen Sensoren muss man sich in FHEM ein virtuelles Homematic-Device (in meinem Fall fürs Wohnzimmer) anlegen. den Teil <Homematic-Id> ersetzt man durch eine beliebige, 6stellige Zahl die in Zukunft als eigenständige „Adresse“ des Device dient.

Dem Device einen virtuellen Kanal hinzufügen:

Da das kein virtueller Knopf sondern ein Sensor ist benennen wir das mal um:

Ich füge das Device nun dem Raum „Heizung“ hinzu (ist aber nicht erforderlich)

Das Device muss nun noch wissen mit wem es die Daten kommuniziert, in meinem Fall ist das ein nanoCUL

Das Attribut „expert“ bitte löschen.

Nun wird das virtuelle Device mit meinem Thermostat gepeert. Bei den Thermostaten macht man dies über den Kanal 01 Weather

 

Bevor man nun weiter macht sollte man (nein, man muss) dringend warten bis das Peering abgeschlossen ist. Man erkennt es daran dass im Status des Thermostat CMDs_done steht und mit dem Befehl

das Peering in beide Richtungen eingetragen ist. das sieht dann so aus:

 

 

Sollte das Peering in beide Richtungen nicht abgeschlossen sein dann den letzten Schritt

so lang wiederholen bis beide Richtungen zu sehen sind.
Im Grunde genommen kann man nun schon überprüfen ob Daten vom virtuellen Device ans Thermostat übermittelt werden.
Mit

sollte nach kurzer Zeit in FHEM beim Thermostat im Weather-Channel bei state  nach kurzer Zeit die 30 angekommen sein.

Gut, nun müssen wir aber noch die Werte vom XIAOMI (oder anderem) Sensor automatisiert zum Thermostat bekommen.
Das macht man per „at“
In meinem Fall sieht das so aus:

Damit wird alle 5 Minuten der gemessene Temperaturwert vom „Sensor_Wohnzimmer“ (mein XIAOMI Aqara) an das virtuelle Device (welches wir gerade erstellt haben) übergeben und schlussendlich dank Peering ans Thermostat übergeben.
Ich verschiebe nun noch das at in den Raum „Zeitschaltuhren“

 

Der Übersichtlichkeit wegen nun noch mal alle Schritte ohne Erklärung und mit verkürzten Namen nacheinander:

Nun sollte alles laufen.

3/14/15 Pi-Day

PiAm 14. März 2015 ist internationaler Pi-Tag.
Dazu findet man bei Wikipedia folgenden Eintrag:

Der Pi-Tag (engl. Pi Day) ist ein inoffizieller Feiertag, der zu Ehren der Kreiszahl Pi abgehalten wird.

Er findet jedes Jahr am 14. März statt und geht zurück auf die US-amerikanische Datumsschreibweise 3/14 oder die ISO-Schreibweise -3-14, denn der numerische Wert von π auf zwei Dezimalen gerundet ist 3,14.
Der Pi-Tag wird traditionell mit dem gemeinsamen Verzehren von runden Kuchen begangen (im Englischen wird der griechische Buchstabe π lautgleich wie das englische Wort pie ‚Kuchen‘ als „Pai“ ausgesprochen).

Groundspeak hat anlässlich dieses Tages mal wieder ein „Abziehbildchen“ Souvenir ausgegeben. Dazu muss man nur am Pi-Tag ein Event besuchen. Souvenir-Fans können an dem Tag sogar zwei Souvenirs abstauben: Zusätzlich zum Event muss noch ein Mysterycache geloggt werden.

Und wer Bock hat mal die ersten 50.000 Nachkommastellen auswendig zu lernen:
Bitte, hier sind sie

Weiterlesen