Sensordaten von der Beckhoff-SPS per MQTT an Stromfee.info senden

Du hast eine Beckhoff-SPS (z. B. CX-Reihe mit TwinCAT 3) und willst Messwerte an Stromfee.info schicken. Hier bekommst du den direkten Weg über MQTT – ohne Umwege.
1) In TwinCAT 3 die Function TF6701 „IoT Communication" installieren (liefert die Bibliothek Tc3_IotBase). 2) In deinem SPS-Projekt die Bibliothek referenzieren und eine Instanz von FB_IotMqttClient anlegen. 3) Broker-Adresse (Hostname/IP von Stromfee.info), Port und Zugangsdaten setzen. 4) Deine Sensorwerte als JSON-String verpacken. 5) Zyklisch FB_IotMqttClient.Execute() aufrufen und mit .Publish() auf dein Topic senden. Broker-Adresse, Port, Topic-Struktur und Zugangsdaten bekommst du von Stromfee – trag genau diese Werte ein, rate nicht.

Lege FB_IotMqttClient als Instanz an. Fülle sHostName mit der von Stromfee genannten Broker-Adresse und nPort mit dem Port (Standard 1883 unverschlüsselt, 8883 mit TLS). Rufe den Baustein in jedem SPS-Zyklus mit .Execute(TRUE) auf und prüfe bBrokerConnected. Erst wenn die Verbindung steht, sendest du Daten – sonst gehen Publishes verloren.

MQTT überträgt reine Bytes, deshalb formatierst du deine Messwerte sinnvoll als JSON. Mit der Bibliothek Tc3_JsonXml und dem FB_JsonSaxWriter baust du z. B. {"anlage":"cx-01","leistung_kw":12.4,"ts":"..."}. Alternativ setzt du den String bei einfachen Werten selbst zusammen. Halte dich an die Feldnamen, die Stromfee für die Auswertung erwartet.

Mit stMqttMessage.eQoS legst du die Zustellgarantie fest (QoS 0 = feuern und vergessen, QoS 1 = mindestens einmal – für Zählwerte meist QoS 1). Setze das Topic exakt so, wie Stromfee es vorgibt (oft nach dem Muster kunde/anlage/messwert). Übergib deinen JSON-String als Payload und rufe .Publish() auf. Sende nicht in jedem SPS-Zyklus, sondern getaktet (z. B. alle 1–10 s), um Broker und Netz nicht zu fluten.

Nutze für den Produktivbetrieb Port 8883 mit TLS und die von Stromfee bereitgestellten Zertifikate bzw. Benutzername/Passwort. Trag die Credentials nicht fest in den SPS-Quelltext, den du weitergibst. Ohne gültige Zugangsdaten weist der Broker die Verbindung ab – bBrokerConnected bleibt dann FALSE.
Prüfe der Reihe nach: Erreicht die SPS den Broker (Ping/Portfreigabe in der Firewall)? Steht bBrokerConnected auf TRUE? Stimmen Topic und Zugangsdaten exakt? Zum Gegentesten abonnierst du dein Topic mit einem MQTT-Client wie MQTT Explorer oder mosquitto_sub und schaust, ob deine Payload eintrifft. So trennst du sauber SPS-Seite von Broker-Seite.