HomeBlog

Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?

Stromfee Redaktion · 5. Juli 2026
Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?
Energie — Stromfee (KI-Bild)

Du liest den Sensor an einer WAGO-Klemme ein, skalierst den Rohwert im Controller und lässt die WAGO-SPS den Messwert als MQTT-Nachricht an einen Broker senden. Ein Bridge-Dienst auf der Gegenseite abonniert das Topic und schreibt die Werte weg – genau so laufen bei uns die Kunden-IoT-Strecken.

Der Weg in vier Schritten

1) Distanzsensor physisch an eine passende WAGO-Klemme anschließen (Analog 4–20 mA / 0–10 V oder IO-Link). 2) Rohwert im Controller-Programm (CODESYS/e!COCKPIT) einlesen und in eine echte Distanz umrechnen. 3) In der SPS den MQTT-Publisher konfigurieren: Broker-Adresse, Port, Topic und Nutzlast (am besten JSON). 4) Auf der Empfängerseite ein Dienst, der das Topic abonniert und die Werte in deine Datenbank schreibt. Die WAGO ist dabei der Publisher, dein Server der Subscriber.

Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?
Energie — Stromfee (KI-Bild)
Sensor an die richtige WAGO-Klemme

Ein Distanzsensor liefert meist ein analoges Signal (4–20 mA oder 0–10 V) oder kommuniziert über IO-Link. Für 4–20 mA nutzt du eine Analog-Eingangsklemme, für 0–10 V die entsprechende Spannungs-Klemme, für IO-Link eine IO-Link-Master-Klemme. Klemmentyp und Messbereich müssen zum Sensor-Datenblatt passen – sonst stimmt später die Skalierung nicht. Achte auf korrekte Versorgung (24 V) und Zwei-/Drei-Leiter-Anschluss laut Sensor.

Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?
Energie — Stromfee (KI-Bild)
Wert einlesen und skalieren

Im WAGO-Controller liest du den Rohwert der Analog-Klemme aus (typisch ein Integer-Bereich, z. B. 0–32767 über den Messbereich). Diesen rechnest du linear auf die physikalische Distanz um: Distanz = min + (roh − roh_min) / (roh_max − roh_min) × (max − min). Diesen skalierten Wert legst du als Variable ab, die anschließend per MQTT gesendet wird. Prüfe den Wert mit einer bekannten Referenzstrecke, bevor du live gehst.

Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?
Energie — Stromfee (KI-Bild)
MQTT-Publisher in der SPS konfigurieren

WAGO-Controller (z. B. PFC100/PFC200) können über die MQTT-Funktion bzw. eine MQTT-Bibliothek in CODESYS/e!COCKPIT selbst als Publisher senden. Du hinterlegst Broker-IP und Port (unverschlüsselt üblich 1883, mit Authentifizierung/TLS oft 1884), einen Client-Namen sowie Benutzer/Passwort, falls der Broker Auth verlangt. Als Topic wählst du ein eindeutiges, hierarchisches Präfix, etwa standort/geraet/distanz/json, und sendest die Nutzlast als JSON, z. B. {"distanz_mm": 1234, "ts": "..."}. JSON macht das Weiterverarbeiten deutlich einfacher als reine Zahlenwerte.

Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?
Energie — Stromfee (KI-Bild)
Empfängerseite: Bridge zur Datenbank

Auf dem Server läuft ein Dienst, der das Topic abonniert und die Nachrichten wegschreibt. Bei uns übernimmt das z. B. eine MQTT→ClickHouse-Bridge (systemd-Dienst), die Topics wie geraet/*/json abonniert und die Felder direkt in eine Zieltabelle schreibt; alternativ geht der Weg MQTT→InfluxDB. Wichtig: Broker, Topic-Schema und JSON-Feldnamen zwischen SPS und Bridge müssen exakt übereinstimmen, sonst kommen die Werte nicht an.

Typische Stolperfallen

Falscher Klemmentyp oder Messbereich → Skalierung liefert Unsinn. Broker-Port/Auth vertauscht → Verbindung wird stumm abgelehnt. Topic-Schreibfehler → Subscriber empfängt nichts, ohne Fehlermeldung. Rohzahl statt JSON gesendet → Bridge kann Felder nicht parsen. Prüfe die Strecke mit einem MQTT-Client (mosquitto_sub) auf dem Broker, bevor du die Datenbank-Bridge dranhängst – so siehst du sofort, ob die WAGO überhaupt sendet.

🎬 Der Energie-Zähler
Dazu von Stromfee
Charge DirectorArbitrage & WirtschaftlichkeitBESS EngineerAuslegung

Was bringt dir ein Batteriespeicher?

BESS-System ansehen →
🌐 Stromfee in your language: English · Deutsch · Español · Français · Português · العربية · 日本語 · 中文 · 한국어 · हिन्दी · Bahasa