WAGO Data Injection über MQTT: So bringst du Daten rein und raus

Eine WAGO-Steuerung (PFC100/PFC200, Edge Controller) arbeitet als MQTT-Client: Sie publiziert I/O- und Prozesswerte auf einen Broker und kann über Subscriptions auch Sollwerte oder Steuerbefehle einspeisen. „Data Injection" meint dabei zwei Richtungen – Daten aus der Anlage herausschreiben (publish) und Daten in die Anlage hineinschreiben (subscribe).
MQTT ist ein publish/subscribe-Protokoll mit einem zentralen Broker (z. B. Mosquitto, HiveMQ, Azure/AWS IoT). Die WAGO ist Client, nicht Server: Sie verbindet sich zum Broker, schickt Werte unter einem Topic (publish) und empfängt Werte, indem sie ein Topic abonniert (subscribe). Der Broker verteilt – die WAGO kennt die Gegenstelle nicht direkt. Daten fließen also nie „direkt in die WAGO", sondern immer über den Broker.

1) In der WAGO-Weboberfläche (WBM) oder per CODESYS/e!COCKPIT den MQTT-Client aktivieren. 2) Broker-Adresse, Port und Zugangsdaten hinterlegen (unverschlüsselt Standard-Port 1883, mit TLS 8883). 3) Ein publish-Topic definieren, z. B. anlage/wago1/leistung. 4) Die zu sendenden SPS-Variablen dem Topic zuordnen, üblich als JSON-Nutzlast. 5) Sende-Trigger wählen (zyklisch, bei Wertänderung oder ereignisgesteuert). Danach erscheinen die Werte beim Broker und können von jedem berechtigten Abonnenten gelesen werden.

Damit externe Systeme Sollwerte setzen, abonniert die WAGO ein Topic wie anlage/wago1/sollwert. Ein anderer Client publiziert dort einen Wert, der Broker stellt ihn zu, und dein SPS-Programm schreibt ihn auf eine Variable oder einen Ausgang. Wichtig: Prüfe eingespeiste Werte im SPS-Code auf gültige Grenzen (Min/Max, Plausibilität), bevor sie auf Aktoren wirken – sonst kann ein fehlerhafter oder manipulierter MQTT-Wert die Anlage falsch steuern.

Üblich ist eine JSON-Nutzlast pro Topic, z. B. {"leistung_kw": 42.1, "ts": "2026-07-13T10:00:00Z"}. Halte die Struktur stabil und dokumentiere Einheiten, damit die empfangende Seite (Cloud, Dashboard, Datenbank) sauber parsen kann. Für einzelne Messwerte reicht oft auch ein reiner Zahlwert als Nutzlast – dann muss die Bedeutung über das Topic eindeutig sein.

MQTT ohne Absicherung ist offen. Nutze deshalb: TLS (Port 8883) statt Klartext (1883), Benutzer/Passwort oder Client-Zertifikate am Broker, sowie strikte Topic-Berechtigungen (ACLs), damit ein Client nur seine eigenen Topics schreiben darf. So verhinderst du, dass Fremde ungewollt Steuerwerte in die WAGO „injizieren". Ergänzend: eingehende Werte im SPS-Programm validieren und den Broker nicht ungeschützt ins offene Internet stellen.
MQTT kennt drei Zustellstufen: QoS 0 (höchstens einmal, kein Empfangsnachweis), QoS 1 (mindestens einmal, kann doppelt ankommen) und QoS 2 (genau einmal). Für Messwerte, die ohnehin zyklisch neu kommen, reicht meist QoS 0 oder 1; für einmalige Steuerbefehle ist QoS 1 oder 2 sinnvoll. Über „Retained Messages" hält der Broker den letzten Wert eines Topics vor, und mit „Last Will" meldet der Broker, wenn die WAGO die Verbindung verliert.
→ Passend dazu: wago sps software
→ Passend dazu: zendure mqtt