Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Fehlerhafte Objektnamen im mqtt [gelöst]

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Fehlerhafte Objektnamen im mqtt [gelöst]

    This topic has been deleted. Only users with topic management privileges can see it.
    • geschild
      geschild last edited by geschild

      f98d292f-691a-4b15-b321-f308029a1110-image.png

      Bei mir läuft eine Stromerfassung mit optischem Sensor -> Wemos D1 -> mqtt.

      Alle 5sek werden vom Wemos 7 kurze Strings mit den Messdaten übertragen.

      In der Objektübersicht im mqtt.0 finden sich immer wieder "verstümmelte" Einträge. (eigentlich sollten nur Datenpunkte in <iobroker.mqtt.0.Stromerfassung_49> beschrieben werden).

      Wer weiß wodurch ? Verbindung ist mit ca -55dBm eigentlich gut.

      1 Reply Last reply Reply Quote 0
      • Marc Berg
        Marc Berg Most Active last edited by Marc Berg

        @geschild sagte in [Fehlerhafte Objektnamen im mqtt](/post/

        Wer weiß wodurch ? Verbindung ist mit ca -55dBm eigentlich gut.

        Mit den wenigen Angaben ist eine Ermittlung der Ursache natürlich nicht möglich. Aber wenn ich wetten müsste, dann darauf, dass der Wemos einfach Müll sendet. Hast du mal einen MQTT Client wie „MQTT Explorer“ mitlaufen lassen? Dann siehst du ja, ob saubere Daten ankommen.

        Was läuft auf dem Wemos?
        Welcher Broker?
        Welcher Adapter?

        geschild 1 Reply Last reply Reply Quote 0
        • geschild
          geschild @Marc Berg last edited by

          @marc-berg
          Der Wemos bekommt im Sekundentakt vom optischen Sensor ca. 450 Byte mit 9600 baud. Diese werden ausgewertet und die so ermittelten Messwerte gesendet. Dazwischen dümpelt der Wemos vor sich hin. Keine Interrupts meinerseits. Programmiert mit Arduino Ide, fürs mqtt wird die 'Pubsubclient' Bibliothek verwendet.

          Das 'publishen' der 6 Messwerte, je 5 bis 10 Byte, erfolgt ohne weitere delays dazwischen hintereinanderweg. Könnte es ein Problem sein, dass der Raspi (iobroker) noch an einem Telegram arbeitet und das nächste zu schnell danach kommt ?

          Adapter: MQTT Broker/Client 4.0.7

          Marc Berg 1 Reply Last reply Reply Quote 0
          • Marc Berg
            Marc Berg Most Active @geschild last edited by

            @geschild sagte in Fehlerhafte Objektnamen im mqtt:

            Das 'publishen' der 6 Messwerte, je 5 bis 10 Byte, erfolgt ohne weitere delays dazwischen hintereinanderweg. Könnte es ein Problem sein, dass der Raspi (iobroker) noch an einem Telegram arbeitet und das nächste zu schnell danach kommt ?

            Zeig mal den Teil des Codes, in welchem die Werte published werden. Ich würde nach dem publish() zum Testen mindestens ein delay(200) einfügen, damit ein mögliches Disconnect nicht zu früh kommt. Ein anderes Problem könnte auch das zu häufige Aufrufen von MQTTclient.loop() sein, welches gern mal den Netzwerkstack überlastet.

            geschild 1 Reply Last reply Reply Quote 0
            • geschild
              geschild @Marc Berg last edited by

              @marc-berg Stromerfassung.txt

              Danke für deine schnelle Antwort.

              Da alle Sekunde Daten vom Sensor kommen, habe ich erstmal nur delay(130) eingefügt, alle fehlerhaften Datenpunkte gelöscht und beobachte das mal.
              Der entsprechende Code ist anbei. MQTTclient.loop() läuft noch zyklisch. Ich habe mehrere Geräte mit der gleichen "Standardsoftware" laufen. Die Probleme zeigen sich nur bei diesem.

              1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active last edited by mickym

                Das Problem scheint mir nicht zu sein, dass es direkt verstümmelt ist, sondern dass Du einen seriellen Datenstrom hast, den Du nicht richtig parsed - also Zeichen oder Merkmal, die den Datenstrom in sinnvolle Records trennen.

                Das schaut doch teilweise wie eine Laufschrift aus, in der je nach Momentaufnahme verschiedene Teile eines Strings als topics verwendet werden. Also würde ich mal an der Stelle suchen - die die Informationen published und nicht auf der Empfängerseite.

                @geschild sagte in Fehlerhafte Objektnamen im mqtt:

                @marc-berg
                Der Wemos bekommt im Sekundentakt vom optischen Sensor ca. 450 Byte mit 9600 baud. Diese werden ausgewertet und die so ermittelten Messwerte gesendet. Dazwischen dümpelt der Wemos vor sich hin. Keine Interrupts meinerseits. Programmiert mit Arduino Ide, fürs mqtt wird die 'Pubsubclient' Bibliothek verwendet.

                Das 'publishen' der 6 Messwerte, je 5 bis 10 Byte, erfolgt ohne weitere delays dazwischen hintereinanderweg. Könnte es ein Problem sein, dass der Raspi (iobroker) noch an einem Telegram arbeitet und das nächste zu schnell danach kommt ?

                Adapter: MQTT Broker/Client 4.0.7

                Wenn Du halt Node-Red nutzen würdest, dann hättest Du ein paar Optionen, wenn Du die serielle Node nutzt:

                hier hast Du dann mehrere Optionen - Datensätze zu erstellen
                fc3e415a-c285-4b6f-b501-ef5f92d98db1-image.png

                geschild 1 Reply Last reply Reply Quote 0
                • geschild
                  geschild @mickym last edited by geschild

                  @mickym

                  Danke für deine Anregung aber, ich prüfe
                  A : Die Vollständigkeit der Startsequenz,
                  B : Die Anzahl der empfangenen Bytes und
                  C : Die Vollständigkeit der Endsequenz.

                  Daraus ergibt sich, dass ein vollständiges Telegramm im Array ist. Bedingt durch die Struktur des SML Protokolls, sind gleiche Messwerte immer!! an der gleichen Stelle.
                  Somit ist ein detaillierteres parsen m.E. nicht notwendig.

                  Nachtrag: 20.06.2023

                  Seitdem ich die publishes nicht mehr direkt hintereinander sende, sondern dazwischen ein delay(130) geschoben habe, ist der Fehler weg.

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  920
                  Online

                  31.7k
                  Users

                  79.6k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  298
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo