Raspberry Pi

Raspberry Pi Zuverlässigkeit: Einen Pi rund um die Uhr als IoT-Gateway betreiben

Ein praxisnaher Leitfaden, um ein Raspberry Pi MQTT-Gateway monatelang am Laufen zu halten: Speicherverschleiß, schreibgeschützte Dateisysteme, Stromversorgung, Kühlung, Hardware- und Software-Watchdogs sowie Fernüberwachung des Zustands.

Raspberry-Pi-Gateway im Schaltschrank mit SSD und stabiler Stromversorgung als Beispiel für Raspberry Pi Zuverlässigkeit im 24/7-Betrieb
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

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:

  1. Lassen Sie paho-mqtt mit reconnect_delay_set(1, 60) und connect_async() automatisch neu verbinden.
  2. Puffern Sie Messwerte lokal, solange keine Verbindung besteht, und spielen Sie sie in der richtigen Reihenfolge nach.
  3. Nehmen Sie in jede Payload einen Zeitstempel auf, damit nachgespielte Daten zum richtigen Zeitpunkt landen.
  4. Nutzen Sie eine Last-Will-Nachricht auf einem retained status-Topic, damit das Backend weiß, wann das Gateway verschwindet.
  5. 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

  1. Von SSD oder NVMe booten oder eine High-Endurance-SD-Karte verwenden.
  2. Logs im RAM, Swap deaktiviert, noatime auf dem Root-Mount.
  3. Schreibgeschütztes Overlay für stabile Installationen aktiviert.
  4. Offizielles oder industrielles Netzteil; get_throttled liefert 0x0.
  5. Kühlkörper oder aktive Kühlung; Temperatur wird überwacht.
  6. Hardware-Watchdog in systemd aktiviert.
  7. Gateway läuft als systemd-Dienst mit Restart=always und Anwendungs-Watchdog.
  8. Automatischer MQTT-Reconnect, Offline-Puffer und Last Will konfiguriert.
  9. Zustandsmetriken werden jede Minute veröffentlicht und von Alarmen überwacht.
  10. 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.

Verwandte Artikel

Raspberry Pi RFID MQTT: Zutrittsprotokollierung mit dem RC522-Leser

Schließen Sie einen RC522-RFID-Leser an einen Raspberry Pi an, lesen Sie Tags mit Python, prüfen Sie sie gegen eine lokale Allowlist und veröffentlichen Sie jeden Zutrittsversuch als MQTT-Ereignis, das Logger, Dashboards und Alarmwerkzeuge verarbeiten können.

7 Min. Lesezeit

Pico W vs. Pico 2 W für MQTT: RP2040 vs. RP2350 bei Leistung, Speicher und TLS

Der Pico 2 W behält Formfaktor und WLAN-Chip des Pico W, ersetzt aber den RP2040 durch den schnelleren RP2350. Dieser Vergleich zeigt, was das für MQTT-Geräte bedeutet: CPU, Speicher, TLS, Sicherheitsfunktionen, Softwareunterstützung und welches Board für welches Projekt.

8 Min. Lesezeit

Mosquitto auf dem Raspberry Pi installieren: sicherer lokaler MQTT-Broker

Installieren Sie Mosquitto auf einem Raspberry Pi, sichern Sie ihn mit Passwörtern und einer durchdachten Listener-Konfiguration ab, testen Sie ihn mit mosquitto_pub und mosquitto_sub und erfahren Sie, wann ein lokaler Broker per Bridge an einen Cloud-MQTT-Broker angebunden werden sollte.

8 Min. Lesezeit

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.