Die Zuverlässigkeit eines Raspberry Pi wird selten durch das Board selbst begrenzt, sondern durch die SD-Karte, das Netzteil, Wärme und Software, die niemand neu startet, wenn sie hängt. Dieser Leitfaden zeigt die Änderungen, die aus einem Schreibtischprojekt ein MQTT-Gateway machen, das monatelang unbeaufsichtigt läuft: Schreibzugriffe reduzieren, ein schreibgeschütztes Root-Dateisystem nutzen, Stromversorgung und Kühlung wählen, Watchdogs aktivieren und das Gerät per MQTT aus der Ferne überwachen. Jeder Abschnitt enthält die Befehle zur Umsetzung.
Warum Pis im Dauerbetrieb ausfallen
Wenn ein Pi-Gateway im Feld verstummt, fällt die Ursache meist in eine von wenigen Kategorien:
| Ausfall | Typisches Symptom | Grundursache |
|---|---|---|
| Speicherbeschädigung | Bootet in eine Notfall-Shell, Remount als read-only, fehlende Dateien | SD-Karte verschlissen oder Stromverlust während eines Schreibvorgangs |
| Unterspannung | Zufällige Neustarts, USB-Geräte fallen aus, WLAN-Resets | Schwaches Netzteil, langes oder dünnes Kabel, stromhungrige Peripherie |
| Überhitzung | Verlangsamung, Drosselung, sprunghaftes Verhalten | Keine Kühlung in einem geschlossenen Gehäuse |
| Software hängt | Gerät antwortet auf Ping, aber Daten bleiben aus | Skript hängt, Deadlock, Speicherleck, Probleme im Netzwerkstack |
| Netzwerkverlust | Datenlücke, danach geht der Rückstau verloren | WLAN-Abbruch, Router-Neustart, Mobilfunkausfall |
Die gute Nachricht: Für jeden dieser Punkte gibt es eine bewährte Gegenmaßnahme. Keine erfordert exotische Hardware, und die meisten bestehen aus wenigen Konfigurationszeilen.
Speicher: Schreibzugriffe reduzieren oder das Medium wechseln
SD-Karten haben eine begrenzte Schreibausdauer und einen schwachen Schutz gegen Stromausfall. Ein Gateway, das ausführlich protokolliert, eine Datenbank schreibt und journald Logs dauerhaft speichern lässt, kann eine billige Karte überraschend schnell verschleißen. Es gibt drei sich ergänzende Lösungen.
Besseren Speicher verwenden. Ein Raspberry Pi 4 oder 5 kann von einer USB-SSD booten, und der Pi 5 unterstützt über den M.2 HAT+ auch NVMe-Laufwerke. Beide verkraften Schreibzugriffe weit besser als SD-Karten. Wenn Sie SD verwenden müssen, wählen Sie eine hochwertige High-Endurance-Karte für Daueraufzeichnung.
Unnötige Schreibzugriffe streichen. Halten Sie Logs im RAM, deaktivieren Sie Swap, wenn Sie ihn nicht brauchen, und mounten Sie mit noatime:
# journald nur im RAM (Logs gehen beim Neustart verloren, wichtige also weiterleiten)
sudo mkdir -p /etc/systemd/journald.conf.d
printf "[Journal]\nStorage=volatile\nRuntimeMaxUse=30M\n" | sudo tee /etc/systemd/journald.conf.d/volatile.conf
sudo systemctl restart systemd-journald
# Swap-Datei deaktivieren
sudo systemctl disable --now dphys-swapfile 2>/dev/null || true
# prüfen, ob die Mount-Optionen von root noatime enthalten
findmnt /
Bewusst schreiben. Wenn Ihr Gateway Nachrichten offline auf der Festplatte puffert, bündeln Sie die Schreibzugriffe und nutzen Sie SQLite im WAL-Modus, wie im Tutorial Offline-MQTT-Puffer in Python. Vermeiden Sie es, jede Sekunde eine JSON-Zustandsdatei neu zu schreiben.
Schreibgeschütztes Root-Dateisystem
Für Gateways, deren Software sich selten ändert, ist ein schreibgeschütztes Root der stärkste Schutz gegen Beschädigung. Raspberry Pi OS bietet dafür ein Overlay-Dateisystem: Das echte Root bleibt schreibgeschützt, und alle Änderungen landen in einer RAM-Schicht, die beim Neustart verschwindet.
sudo raspi-config nonint enable_overlayfs
sudo reboot
# später, um Software zu aktualisieren:
sudo raspi-config nonint disable_overlayfs
sudo reboot
Sie können es auch interaktiv unter Performance Options in raspi-config aktivieren. Planen Sie zwei Konsequenzen ein. Erstens braucht alles, was das Gateway behalten muss (Konfigurationsänderungen, ein Nachrichtenpuffer), eine separate beschreibbare Partition oder ein externes Laufwerk. Zweitens erfordern Updates einen Wartungszyklus mit Neustart; automatisieren oder dokumentieren Sie ihn.
Stromversorgung: der meistunterschätzte Faktor
Unterspannung verursacht mehr rätselhaftes Verhalten als jedes andere Hardwareproblem. Verwenden Sie das offizielle Netzteil für Ihr Modell oder ein Industrienetzteil mit Reserve: Der Raspberry Pi 5 ist für ein USB-C-Netzteil mit 5 V 5 A ausgelegt, der Pi 4 für 5,1 V 3 A. Halten Sie Kabel kurz und dick und versorgen Sie USB-Laufwerke oder Modems mit hohem Strombedarf über einen aktiven Hub.
Prüfen Sie, ob der Pi seit dem Booten jemals Unterspannung oder Drosselung erlebt hat:
vcgencmd get_throttled
Gewünscht ist das Ergebnis throttled=0x0. Bit 0 (0x1) bedeutet aktuelle Unterspannung, Bit 16 (0x10000) bedeutet Unterspannung seit dem Booten, und die Bits 2 und 18 melden Drosselung. Veröffentlichen Sie diesen Wert über MQTT, damit Sie Probleme sehen, bevor sie Ausfälle verursachen.
An Standorten mit unzuverlässigem Netz gibt eine kleine USV-HAT oder eine DC-USV dem Pi Zeit für ein sauberes Herunterfahren. Schon wenige Sekunden Überbrückungszeit schützen das Dateisystem weit besser als ein harter Stromausfall.
Wärme und Gehäuse
Der Pi drosselt seine CPU, wenn er heiß wird. Das schützt die Hardware, verlangsamt aber Ihre Anwendung. In einer geschlossenen Kunststoffbox in der Sonne kann ein Pi diesen Punkt schon bei geringer Last erreichen. Verwenden Sie ein Kühlkörpergehäuse oder beim Pi 5 den offiziellen Active Cooler, belüften Sie Gehäuse und halten Sie den Pi fern von anderen Wärmequellen, im Schaltschrank etwa von Frequenzumrichtern und Netzteilen. Lesen Sie die Temperatur mit vcgencmd measure_temp aus und nehmen Sie sie in Ihre Zustandsmeldungen auf.
Watchdogs: Wiederherstellung ohne Vor-Ort-Einsatz
Ein Watchdog startet das System neu, wenn die Software nicht mehr reagiert. Nutzen Sie zwei Ebenen.
Hardware-Watchdog über systemd. Der SoC des Pi enthält einen Watchdog-Timer, den systemd bedienen kann. Hängt der Kernel oder systemd selbst, startet das Board neu.
sudo mkdir -p /etc/systemd/system.conf.d
printf "[Manager]\nRuntimeWatchdogSec=15\nRebootWatchdogSec=2min\n" | sudo tee /etc/systemd/system.conf.d/watchdog.conf
sudo systemctl daemon-reexec
dmesg | grep -i watchdog
Anwendungs-Watchdog. Ein hängender Python-Prozess löst den Hardware-Watchdog nicht aus, weil systemd noch gesund ist. Betreiben Sie das Gateway als systemd-Dienst mit Restart=always und nutzen Sie für Hänger (nicht nur Abstürze) Type=notify mit WatchdogSec=: Das Skript muss regelmäßig einen Heartbeat senden, sonst beendet systemd es und startet es neu.
import os
import socket
def sd_notify(state: str):
addr = os.getenv("NOTIFY_SOCKET")
if not addr:
return
if addr.startswith("@"):
addr = "\0" + addr[1:]
with socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) as s:
s.connect(addr)
s.sendall(state.encode())
# nach dem MQTT-Connect: sd_notify("READY=1")
# in der Hauptschleife, nur wenn die Arbeit tatsächlich vorankommt:
# sd_notify("WATCHDOG=1")
Senden Sie WATCHDOG=1 nur, wenn die Schleife wirklich gesund ist, etwa nach einem erfolgreichen Lesen und Veröffentlichen. Ein separater Thread, der immer läuft und den Heartbeat sendet, macht den Zweck zunichte. Die vollständige Unit-Datei finden Sie im Leitfaden zum Start eines Python-MQTT-Skripts beim Booten.
Netzwerk-Resilienz
Verbindungsabbrüche sind normal, nicht die Ausnahme. Planen Sie dafür:
- Lassen Sie paho-mqtt mit
reconnect_delay_set(1, 60)undconnect_async()automatisch neu verbinden. - Puffern Sie Messwerte lokal, solange keine Verbindung besteht, und spielen Sie sie in der richtigen Reihenfolge nach.
- Nehmen Sie in jede Payload einen Zeitstempel auf, damit nachgespielte Daten zum richtigen Zeitpunkt landen.
- Nutzen Sie eine Last-Will-Nachricht auf einem retained
status-Topic, damit das Backend weiß, wann das Gateway verschwindet. - Bevorzugen Sie nach Möglichkeit Ethernet statt WLAN; im WLAN deaktivieren Sie bei Abbrüchen das Energiesparen mit
sudo iw dev wlan0 set power_save off.
Zustandsüberwachung aus der Ferne über MQTT
Was Sie nicht sehen, können Sie nicht beheben. Lassen Sie jedes Gateway jede Minute eine kleine Zustandsmeldung veröffentlichen: Betriebszeit, CPU-Temperatur, Drosselungs-Flags, freier Speicherplatz, Puffertiefe und Softwareversion. Das Tutorial Raspberry Pi Systemwerte über MQTT zeigt einen vollständigen Publisher. Mit einem Cloud-MQTT-Broker in der Mitte überwachen Sie eine ganze Flotte von einer Stelle aus, und ConnectMQ-Schwellwert-Alarmregeln melden ein Gateway, dessen Temperatur oder Puffertiefe einen Grenzwert überschreitet. Der retained Last-Will-Status sowie das Broker-Topic $SYS/broker/connection/{clientId}/state zeigen Ihnen, welche Geräte gerade online sind.
Checkliste für Zuverlässigkeit
- Von SSD oder NVMe booten oder eine High-Endurance-SD-Karte verwenden.
- Logs im RAM, Swap deaktiviert,
noatimeauf dem Root-Mount. - Schreibgeschütztes Overlay für stabile Installationen aktiviert.
- Offizielles oder industrielles Netzteil;
get_throttledliefert0x0. - Kühlkörper oder aktive Kühlung; Temperatur wird überwacht.
- Hardware-Watchdog in systemd aktiviert.
- Gateway läuft als systemd-Dienst mit
Restart=alwaysund Anwendungs-Watchdog. - Automatischer MQTT-Reconnect, Offline-Puffer und Last Will konfiguriert.
- Zustandsmetriken werden jede Minute veröffentlicht und von Alarmen überwacht.
- Gehärtetes Betriebssystem und TLS-Verbindungen gemäß der Checkliste für sichere Raspberry-Pi-IoT-Geräte.
Gemeinsam angewendet, beseitigen diese Schritte die häufigen Ausfallursachen und machen die seltenen verbleibenden aus der Ferne behebbar. Für die Grundlagen der Verbindung eines Pi mit einem Broker beginnen Sie mit dem Raspberry Pi MQTT Tutorial; modellspezifische Details zu Stromversorgung und Booten finden Sie in der offiziellen Raspberry-Pi-Dokumentation.
Auch die Serverseite zuverlässig halten mit ConnectMQ
Ein Gateway, das nie ausfällt, verliert trotzdem Daten, wenn der Broker ausfällt, mit dem es spricht. Ein verwalteter MQTT-Broker wie ConnectMQ kümmert sich um den Broker, damit Sie sich auf die Edge konzentrieren können. Legen Sie unter app.connectmq.com ohne Kreditkarte einen kostenlosen Serverless-Broker an, verbinden Sie Ihr Gateway per TLS auf Port 8883 und beobachten Sie seine Zustands-Topics im Live-Topic-Explorer.
Häufig gestellte Fragen
Wie lange hält eine SD-Karte in einem Raspberry-Pi-Gateway?
Das hängt ganz von der Schreiblast und der Kartenqualität ab. Weniger Schreibzugriffe und eine High-Endurance-Karte oder SSD verlängern die Lebensdauer erheblich, während starkes Logging eine billige Karte schnell verschleißen kann.
Macht ein schreibgeschütztes Dateisystem meinen MQTT-Client kaputt?
Nicht, wenn der Client nur seinen Code und seine Konfiguration lesen muss. Alles, was er dauerhaft speichern muss, etwa einen Offline-Puffer, braucht einen separaten beschreibbaren Ort.
Brauche ich eine USV für einen Raspberry Pi?
Nicht immer, aber dort, wo die Stromversorgung instabil ist, lohnt sie sich. Ein sauberes Herunterfahren schützt das Dateisystem, und ein schreibgeschütztes Root verringert den Schaden, wenn der Strom ohne Vorwarnung ausfällt.
Sollte ich regelmäßige Neustarts einplanen?
Geplante Neustarts verdecken Probleme, statt sie zu beheben. Watchdogs plus Zustandsüberwachung sind besser, doch ein wöchentlicher Neustart ist eine pragmatische Notlösung, während Sie einem Speicherleck nachgehen.



