TIA LMQTT-Client als Subscriber: ungültige Länge im empfangenen MQTT-Packet

Ferdinand_Ka

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,

in meinem Projekt möchte ich mit Hilfe einer S7-1507S per MQTT Sensordaten eines CO2-Sensors einlesen.
Dafür nutze ich die aktuelle LMQTT-Bibliothek von Siemens.

Sobald ich am Client "enable" auf "True" setze, durchläuft er folgende Status: 16#7000 -> 16#7001 -> 16#7002 -> 16#7003. (Beschreibung der Codes im Anhang)
Danach stellt der Status direkt um auf 16#8700: "Ungültige Länge im empfangenen MQTT-Packet: neue Verbindung erforderlich"

Meine Vermutung ist allerdings, dass der Client erst gar keine Verbindung zum Broker aufbaut.
Leider bin ich mir bei diesem Thema sehr unsicher, ob ich alles richtig mache.

Deshalb meine Frage, wo genau und wann muss ich welche Parameter eintragen/ändern, damit mein Client als Subscriber eine Verbindung zum Broker aufbaut?

Oder genauer formuliert:
- Wo trage ich mein Topic ein? (mqttTopic, willTopic oder receivedTopic) Und wird das schon zu Beginn eingetragen?
- Wann aktiviere ich "subscribe" und soll der Wert während des Vorgangs dauerhaft auf "True" bleiben?
- Mein Sensor sendet die Informationen in Form einer json-Datei. Meine Idee war es, den Pfad vom Topic bis zum CO2-Wert anzugeben, um so lediglich diesen Wert zu erhalten. Ist das korrekt?

Schonmal vielen Dank für die Hilfe!

Gruß Ferdinand

Anhang:
- Durchlaufene Status (getrackt durch Ringpuffer)
- Beschreibung der Status
- MqttDB
 

Anhänge

  • Ergebnis1_RingspeicherStatus.png
    Ergebnis1_RingspeicherStatus.png
    1,1 KB · Aufrufe: 10
  • Fehlercodes.png
    Fehlercodes.png
    18,9 KB · Aufrufe: 10
  • MqttClientDB.png
    MqttClientDB.png
    68,2 KB · Aufrufe: 10
Welche Version vom Baustein hast du denn? Falls nicht die neuste, hier die neuste holen: https://support.industry.siemens.com/cs/document/109780503/bibliotheken-für-kommunikation-für-simatic-controller?dti=0&lc=de-WW

Dort werden auch alle Variablen und Signale erklärt in der Dokumentation.

Auch bitte das beachten:
2.1.3. Gültigkeit
• SIMATIC S7-1500 Controller ab Firmware V2.0
• SIMATIC S7-1200 Controller ab Firmware V4.4
• CP 1543-1, CP 1542SP-1, CP 1542SP-1 IRC, CP 1543SP-1 ab Firmware V1.0
• CP 1243-1, CP 1243-8 ab Firmware V2.0

- Wo trage ich mein Topic ein? (mqttTopic, willTopic oder receivedTopic) Und wird das schon zu Beginn eingetragen?
Das Topic von welchem du lesen möchtest trägst du unter mqttTopic ein, willTopic ist für die Will Nachricht ("last will", wird gesendet wenn der Client die Verbindung trennt), receivedTopic ist wie der Name schon sagt das Topic von welchem du die letzte Nachricht erhalten hast.
Ich stelle meistens erst eine Verbindung her und habe dann Case Anweisung mit denen ich abwechselnd Publishe oder Subscribe

- Wann aktiviere ich "subscribe" und soll der Wert während des Vorgangs dauerhaft auf "True" bleiben?
Dann wenn du ein Topic subscriben möchtest, idealerweise nur so lange, bis du eine Nachricht erhalten hast, wenn du es dauerhaft auf True lässt, wird denke ich immer die Nachricht überschrieben.

- Mein Sensor sendet die Informationen in Form einer json-Datei. Meine Idee war es, den Pfad vom Topic bis zum CO2-Wert anzugeben, um so lediglich diesen Wert zu erhalten. Ist das korrekt?
Dein Sensor sendet seine Informationen ja auf ein bestimmtes Topic, das gibst du an, als Antwort erhältst du einen String im Json Format, welchen du mit Bausteinen aus der Bibliothek wieder zerlegen kannst in seine einzelnen Key Value Pairs:

Du hast Username und Passwort ja verpixelt, das würde bedeuten dass du eine sichere Verbindung nutzt, dazu musst du natürlich noch deine Tls Daten mitgeben, ausserdem ist der sichere Port von Mqtt Verbindungen 8883, 1883 ist für unsichere Verbindungen. Wenn du eine unsichere Verbindung hast, dann brauchst du auch keine Anmeldeinformationen übergeben.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für deine Antwort! Jetzt kann ich zumindest sicher sein, dass das Topic an der richtigen Stelle steht.
Welche Version vom Baustein hast du denn?
Ich habe die Version 4.0.4. Sollte also aktuell sein.
Du hast Username und Passwort ja verpixelt, das würde bedeuten dass du eine sichere Verbindung nutzt, dazu musst du natürlich noch deine Tls Daten mitgeben, außerdem ist der sichere Port von Mqtt Verbindungen 8883, 1883 ist für unsichere Verbindungen.
Eine sichere Verbindung mit TLS nutze ich nicht. Die Anmeldedaten für die Sensordaten-Abfrage brauche ich allerdings trotzdem.
Ich nutze zur Kontrolle zusätzlich den MQTT Explorer. Dort funktioniert die Kombination aus QDN-Adresse, Port 1883, dem Topic und den Anmeldedaten.

Auf der SPS klappt es allerdings immer noch nicht. Fehlercode ist der Selbe geblieben.
 
Zuletzt bearbeitet:
Wir selbst nutzen 1883 immer ohne weitere Abfragen von Login etc, bei 8883 wiederum aber dann schon mit Login.

Aktuell würde ich das Subscriben erstmal aussen vor lassen und schauen dass du eine Verbindung zum Broker bekommst.

Wie sieht denn dein Aufruf aus?

Welchen Broker nutzt du und was kannst du dort alles einstellen?
 
Zurück
Oben