Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Mikrocontroller
    • Arduino
    • ESP32 & Co.
    • Calliope Mini
    • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
Menu

Shelly MQTT einrichten und erste Befehle nutzen

Veröffentlicht am 24. Juni 202623. Juni 2026 von Stefan Draeger

Shelly-Geräte lassen sich nicht nur über RPC-Kommandos und HTTP-Requests steuern, sondern auch über das MQTT-Protokoll. Dafür benötigst du zusätzlich einen sogenannten MQTT-Broker, der die Nachrichten zwischen den beteiligten Geräten und Anwendungen vermittelt.

Wie MQTT grundsätzlich funktioniert und warum sich das Protokoll besonders gut für IoT- und Smart-Home-Projekte eignet, habe ich dir bereits im Beitrag „MQTT einfach erklärt: Was ist MQTT und warum ist es perfekt für IoT?“ ausführlich erklärt.

In diesem Beitrag zeige ich dir nun Schritt für Schritt, wie du MQTT auf deinem smarten Shelly-Schalter aktivierst, die Verbindung zu einem MQTT-Broker einrichtest und anschließend die ersten Befehle sendest. Außerdem schauen wir uns an, welche Statusmeldungen der Shelly automatisch über MQTT veröffentlicht.

Shelly per MQTT steuern – Einrichtung, Befehle und Statusmeldungen
Dieses Video auf YouTube ansehen.

Inhaltsverzeichnis

  • MQTT auf dem Shelly aktivieren
  • MQTT-Verbindung mit dem MQTT Explorer testen
  • Ausgang des Shelly über MQTT steuern
    • Ausgang einschalten
    • Ausgang ausschalten
    • Ausgang umschalten
    • Ausgang zeitgesteuert schalten
    • Status des Ausgangs abfragen
  • Automatische Statusmeldungen empfangen
  • Häufige Fragen zu Shelly und MQTT
    • Benötige ich für Shelly MQTT die Shelly Cloud?
    • Welchen MQTT-Broker kann ich verwenden?
    • Welchen Port verwendet MQTT?
    • Warum verbindet sich mein Shelly nicht mit dem MQTT-Broker?
    • Kann ich den Shelly gleichzeitig über MQTT und die Shelly-App verwenden?
    • Wie lautet das MQTT-Topic zum Schalten des Ausgangs?
    • Warum enthält eine automatische Statusmeldung nicht alle Gerätedaten?
    • Kann ich die Geräte-ID oder den MQTT-Topic-Präfix ändern?
  • Quellen und weiterführende Informationen
  • Fazit und Ausblick

MQTT auf dem Shelly aktivieren

Die MQTT-Schnittstelle ist auf einem Shelly standardmäßig deaktiviert und muss zunächst über die lokale Weboberfläche eingeschaltet werden.

Rufe dazu die IP-Adresse deines Shelly-Geräts im Browser auf. Die IP-Adresse wurde dem Gerät von deinem Router zugewiesen und kann beispielsweise in der Geräteliste deines Routers oder in der Shelly Smart Control App eingesehen werden.

Lokale Weboberfläche des Shelly 1PM Gen3 im Browser
Die lokale Weboberfläche des Shelly 1PM Gen3 wird über die IP-Adresse des Geräts im Browser geöffnet.
Settings-Menü der Shelly-Weboberfläche mit dem Konfigurationspunkt MQTT
Im Menü „Settings“ befindet sich der Konfigurationspunkt „MQTT“.
MQTT-Einstellungen des Shelly mit IP-Adresse und Port eines lokalen MQTT-Brokers
In den MQTT-Einstellungen wird die Adresse des lokalen MQTT-Brokers inklusive Port eingetragen.

Navigiere anschließend in der Weboberfläche zu: Settings → MQTT

Aktiviere dort zunächst die Option „Enable MQTT network“.

Im Feld für den MQTT-Server trägst du die IP-Adresse oder den Hostnamen deines MQTT-Brokers ein. Direkt dahinter folgt, durch einen Doppelpunkt getrennt, der verwendete MQTT-Port.

Ein möglicher Eintrag sieht beispielsweise so aus: 192.168.178.186:1883

Dabei ist 192.168.178.186 die IP-Adresse des MQTT-Brokers und 1883 der standardmäßig verwendete Port für eine unverschlüsselte MQTT-Verbindung.

Die Client ID ist bereits mit einer eindeutigen Bezeichnung vorbelegt. Du kannst diesen Wert übernehmen oder nach deinen eigenen Vorstellungen anpassen. Wichtig ist lediglich, dass jede Client ID innerhalb des MQTT-Brokers nur einmal verwendet wird.

Speichere anschließend die Einstellungen. Damit die MQTT-Verbindung aktiviert und die neue Konfiguration vollständig übernommen wird, muss der Shelly neu gestartet werden.

Hinweis zum Neustart des Shelly nach dem Speichern der MQTT-Einstellungen
Nach dem Speichern der MQTT-Konfiguration muss der Shelly über den eingeblendeten Link neu gestartet werden.

MQTT-Verbindung mit dem MQTT Explorer testen

Für einen ersten Test benötigst du ein Programm, mit dem du MQTT-Topics abonnieren und eigene Nachrichten veröffentlichen kannst. Dafür eignet sich der kostenlose MQTT Explorer, den du unter mqtt-explorer.com herunterladen kannst.

Nach der Installation richtest du im MQTT Explorer eine neue Verbindung zu deinem MQTT-Broker ein. Dafür benötigst du mindestens die IP-Adresse oder den Hostnamen des Brokers sowie den verwendeten Port. Falls dein Broker durch einen Benutzernamen und ein Passwort geschützt ist, müssen diese Zugangsdaten ebenfalls eingetragen werden.

MQTT Explorer mit empfangener Statusmeldung eines Shelly 1PM Gen3
Der MQTT Explorer zeigt eine automatisch vom Shelly veröffentlichte Statusmeldung im Topic events/rpc.

Nach dem Aufbau der Verbindung zeigt dir der MQTT Explorer alle Topics an, die auf dem Broker veröffentlicht werden. Sobald dein Shelly erfolgreich mit dem MQTT-Broker verbunden ist, sollten dort auch die vom Gerät gesendeten Topics und Statusmeldungen erscheinen.

Zusätzlich kannst du mit dem MQTT Explorer eigene Nachrichten veröffentlichen. Dadurch lässt sich direkt überprüfen, ob sich der Ausgang des Shellys über MQTT ein- und ausschalten lässt.

Ausgang des Shelly über MQTT steuern

Nachdem der Shelly mit dem MQTT-Broker verbunden ist, können wir seinen Ausgang über ein MQTT-Topic steuern. Öffne dazu im MQTT Explorer den Bereich zum Veröffentlichen einer neuen Nachricht.

Das benötigte Topic setzt sich aus der Geräte-ID des Shellys und dem angesprochenen Ausgang zusammen:

<Geräte-ID>/command/switch:0

Bei meinem Shelly 1PM Gen3 lautet das Topic beispielsweise:

shelly1pmg3-3030f9e95140/command/switch:0

Der Bestandteil switch:0 steht für den ersten Ausgang des Geräts. Bei Shelly-Geräten mit mehreren Ausgängen werden diese entsprechend mit switch:0, switch:1 und so weiter angesprochen.

Als Payload wird lediglich der gewünschte Befehl gesendet. Ein zusätzliches JSON-Objekt ist für diese einfache Steuerung nicht notwendig.

PayloadFunktion
onAusgang einschalten
offAusgang ausschalten
toggleAktuellen Zustand umschalten
on,10Ausgang einschalten und nach 10 Sekunden wieder ausschalten
off,10Ausgang ausschalten und nach 10 Sekunden wieder einschalten
status_updateAktuellen Status des Ausgangs anfordern

Ausgang einschalten

Trage im MQTT Explorer zunächst das Topic des Ausgangs ein: shelly1pmg3-3030f9e95140/command/switch:0

Als Payload verwendest du: on

Nachdem du die Nachricht veröffentlicht hast, schaltet der Shelly den Ausgang ein.

Ausgang ausschalten

Zum Ausschalten verwendest du dasselbe Topic und sendest die folgende Payload: off

Ausgang umschalten

Mit dem Befehl toggle wird der aktuelle Zustand des Ausgangs umgekehrt: toggle

Ist der Ausgang ausgeschaltet, wird er eingeschaltet. Ist er bereits eingeschaltet, wird er ausgeschaltet.

Ausgang zeitgesteuert schalten

Optional kannst du hinter dem Schaltbefehl eine Zeit in Sekunden angeben. Mit der folgenden Payload wird der Ausgang eingeschaltet und nach zehn Sekunden automatisch wieder ausgeschaltet: on,10

Auch die umgekehrte Variante ist möglich: off,10

In diesem Fall wird der Ausgang zunächst ausgeschaltet und nach zehn Sekunden wieder eingeschaltet.

Status des Ausgangs abfragen

Mit dem Befehl status_update

forderst du den vollständigen Status des Ausgangs an. Der Shelly veröffentlicht die Antwort anschließend unter folgendem Topic:

shelly1pmg3-3030f9e95140/status/switch:0

Die Antwort enthält abhängig vom verwendeten Shelly unter anderem den Schaltzustand sowie Werte zur Leistung, Spannung und zum Stromverbrauch.

Automatische Statusmeldungen empfangen

Der Shelly kann nicht nur Befehle über MQTT empfangen, sondern veröffentlicht auch selbstständig Statusänderungen. Bei meinem Shelly 1PM Gen3 wird ungefähr einmal pro Minute eine neue Meldung mit den aktualisierten Energiewerten an den MQTT-Broker gesendet.

Die Meldungen werden über das folgende Topic veröffentlicht: shelly1pmg3-3030f9e95140/events/rpc

Im MQTT Explorer wird beispielsweise die folgende Nachricht angezeigt:

{
  "src": "shelly1pmg3-3030f9e95140",
  "dst": "shelly1pmg3-3030f9e95140/events",
  "method": "NotifyStatus",
  "params": {
    "ts": 1782207060,
    "switch:0": {
      "id": 0,
      "aenergy": {
        "by_minute": [
          0,
          202.254,
          0
        ],
        "minute_ts": 1782207060,
        "total": 14.36
      },
      "ret_aenergy": {
        "by_minute": [
          0,
          0,
          0
        ],
        "minute_ts": 1782207060,
        "total": 0
      }
    }
  }
}

An der Eigenschaft method lässt sich erkennen, dass es sich um eine automatische Statusänderung handelt:

"method": "NotifyStatus"

Unter switch:0 befinden sich die Daten des ersten Ausgangs. Der Bereich aenergy enthält die vom angeschlossenen Verbraucher bezogene Energie.

Der Wert total gibt den bisher gemessenen Gesamtverbrauch in Wattstunden an:

"total": 14.36

Das entspricht einem bisherigen Energieverbrauch von:

14,36 Wh beziehungsweise 0,01436 kWh

Das Array by_minute enthält die Energieverbräuche der letzten drei vollständig abgeschlossenen Minuten. Die Werte werden dabei in Milliwattstunden angegeben:

"by_minute": [
  0,
  202.254,
  0
]

Der Bereich ret_aenergy enthält die in die entgegengesetzte Richtung gemessene beziehungsweise zurückgespeiste Energie. Da in diesem Beispiel keine Energie zurückgespeist wurde, beträgt der Wert total hier 0.

Für das Empfangen dieser Meldungen ist kein eigener Befehl notwendig. Sobald MQTT aktiviert und der Shelly mit dem Broker verbunden ist, erscheinen die Statusänderungen automatisch im MQTT Explorer.

Häufige Fragen zu Shelly und MQTT

Benötige ich für Shelly MQTT die Shelly Cloud?

Nein. Die Kommunikation über MQTT erfolgt direkt zwischen dem Shelly und deinem MQTT-Broker. Eine aktive Verbindung zur Shelly Cloud ist dafür nicht erforderlich. Der Shelly, der MQTT-Broker und das verwendete Programm müssen sich jedoch gegenseitig über das Netzwerk erreichen können.

Welchen MQTT-Broker kann ich verwenden?

Du kannst grundsätzlich jeden kompatiblen MQTT-Broker verwenden. Eine häufig eingesetzte Lösung ist Eclipse Mosquitto, der beispielsweise auf einem Raspberry Pi, einem Server, in Docker oder als Erweiterung in Home Assistant betrieben werden kann.

Welchen Port verwendet MQTT?

Für eine unverschlüsselte MQTT-Verbindung wird üblicherweise der Port 1883 verwendet. Verschlüsselte MQTT-Verbindungen verwenden häufig den Port 8883. Entscheidend ist jedoch, welcher Port auf deinem MQTT-Broker konfiguriert wurde.

Warum verbindet sich mein Shelly nicht mit dem MQTT-Broker?

Überprüfe zunächst die IP-Adresse beziehungsweise den Hostnamen des Brokers und den eingetragenen Port. Falls dein MQTT-Broker eine Anmeldung verlangt, müssen außerdem Benutzername und Passwort korrekt hinterlegt sein. Nach einer Änderung der MQTT-Konfiguration muss der Shelly neu gestartet werden.

Kann ich den Shelly gleichzeitig über MQTT und die Shelly-App verwenden?

Ja. Die Aktivierung von MQTT verhindert nicht automatisch die Verwendung der lokalen Weboberfläche oder der Shelly Smart Control App. Der Shelly kann weiterhin über mehrere unterstützte Schnittstellen gesteuert werden.

Wie lautet das MQTT-Topic zum Schalten des Ausgangs?

Das Topic setzt sich standardmäßig aus der Geräte-ID und dem angesprochenen Ausgang zusammen: /command/switch:0

Bei meinem Shelly 1PM Gen3 lautet es beispielsweise: shelly1pmg3-3030f9e95140/command/switch:0

Mit den Payloads on, off und toggle kannst du den Ausgang ein-, ausschalten oder seinen aktuellen Zustand umkehren.

Warum enthält eine automatische Statusmeldung nicht alle Gerätedaten?

Bei den Nachrichten unter events/rpc handelt es sich häufig um NotifyStatus-Meldungen. Diese enthalten nur die Werte, die sich geändert haben. In meinem Beispiel wurden die Energiewerte aktualisiert, weshalb die Nachricht hauptsächlich aenergy und ret_aenergy enthält.

Den vollständigen Status des Ausgangs kannst du mit der Payload status_update anfordern. Die Antwort wird anschließend unter dem Topic <Geräte-ID>/status/switch:0 veröffentlicht.

Kann ich die Geräte-ID oder den MQTT-Topic-Präfix ändern?

Die Client-ID und der MQTT-Topic-Präfix können in der MQTT-Konfiguration angepasst werden. Ohne einen eigenen Topic-Präfix verwendet der Shelly standardmäßig seine Geräte-ID. Nach einer Änderung musst du die verwendeten Topics im MQTT Explorer oder in deiner Anwendung entsprechend anpassen.

Quellen und weiterführende Informationen

Die technischen Angaben zu den MQTT-Topics, Konfigurationsmöglichkeiten und Statusmeldungen basieren auf der offiziellen Shelly-Dokumentation:

  • Shelly Technical Documentation – MQTT
  • Shelly Technical Documentation – Switch
  • Shelly Technical Documentation – Notifications

Weitere Informationen zur grundsätzlichen Funktionsweise von MQTT findest du in meinem Beitrag:

  • MQTT einfach erklärt: Was ist MQTT und warum ist es perfekt für IoT?

Das Programm für den praktischen Verbindungstest kannst du auf der offiziellen Projektseite herunterladen:

  • MQTT Explorer

Fazit und Ausblick

MQTT lässt sich auf einem Shelly mit wenigen Schritten aktivieren und bietet eine einfache Möglichkeit, das Gerät lokal zu steuern. Für grundlegende Schaltvorgänge sind keine umfangreichen JSON-Nachrichten notwendig. Über ein passendes MQTT-Topic und einfache Payloads wie on, off oder toggle lässt sich der Ausgang direkt schalten.

Darüber hinaus stellt der Shelly über MQTT auch Statusinformationen zur Verfügung. Mit status_update kann der aktuelle Zustand des Ausgangs gezielt abgefragt werden. Zusätzlich veröffentlicht der Shelly selbstständig Statusänderungen, beispielsweise aktualisierte Energiewerte eines Shelly 1PM Gen3. Damit eignet sich MQTT nicht nur zum Steuern, sondern auch zum Erfassen und Weiterverarbeiten von Messwerten.

Der MQTT Explorer ist für den Einstieg ein praktisches Werkzeug, um Topics und Payloads auszuprobieren. Für eine dauerhafte Automatisierung ist es jedoch wenig komfortabel, jeden Befehl manuell zu veröffentlichen.

Im nächsten Beitrag kommt deshalb Node-RED ins Spiel. Dort werden wir den Shelly über MQTT bequem mit einem einfachen Flow steuern. Außerdem empfangen wir die Statusmeldungen des Geräts und zerlegen die enthaltenen JSON-Daten, sodass sich beispielsweise Schaltzustand, Leistung und Energieverbrauch einzeln auslesen und weiterverarbeiten lassen.

Einfacher Node-RED-Flow zum Steuern des Shelly-Ausgangs über MQTT-Kommandos

Letzte Aktualisierung am: 23. Juni 2026

Foto von Stefan Draeger
Über den Autor

Stefan Draeger — Entwickler & Tech-Blogger

Ich zeige praxisnah, wie du Projekte mit Arduino, ESP32 und Smarthome-Komponenten umsetzt – Schritt für Schritt, mit Code und Schaltplänen.

Mehr Artikel von Stefan →

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • QR-Code Generator
  • Passwort Generator: Sichere Passwörter & Passphrasen erstellen
  • PNG zu WebP konvertieren – kostenlos, schnell & ohne Upload
  • Bilder online komprimieren – PNG, JPG & JPEG ohne Upload
  • Code online formatieren: JSON, HTML, XML, CSS & JavaScript
  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 015565432686
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2026 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
  • Optionen verwalten
  • Dienste verwalten
  • Verwalten von {vendor_count}-Lieferanten
  • Lese mehr über diese Zwecke
Einstellungen anzeigen
  • {title}
  • {title}
  • {title}