Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT Parser Syntax

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    MQTT Parser Syntax

    Hallo alle zusammen,

    vielleicht kann mir ja hier jemand bei helfen. Ich bekomme per MQTT folgende Werte von einem Tasmota ESP32. Als Subscripe habe halt den Sensor ausgefwählt mit

    "tele/tasmota_44B7B8/SENSOR/#"

    und bekomme dann folgende Werte als Payload

    ({"Time":"2021-11-27T14:36:57","COUNTER":{"C1":329},"ESP32":{"Temper ature":46.7},"TempUnit":"C"})

    jetzt versuche ich mit dem MQTT Parser halt den Counter Wert heraus zuziehen. Aber ich komme halt einfach nicht zurecht mit der Syntax im Parser. Ich bin wohl zu Blond für die Hilfe. Kann mir da jemand helfen wie ich da den Counter Wert 329 nun daraus bekomme ?

    Gruß
    Marhal


    #2
    Du wirfst da was durcheinander. Du bekommt vom MQTT LBS ein JSON. Dafür brauchst du einen JSON Extractor. Sind da wirklich runde Klammern vorn und hinten? Dann wäre es kein gültiges JSON. Kann ich mir nicht vorstellen.

    Wenn es ein MQTT Topic gibt, welches direkt den Wert zurückgibt, welches du brauchst, dann musst du darauf subscriben. Ansonsten den o.g. String in den JSON Extractor schieben und dort den Wert extrahieren.

    Wenn es keine runden Klammern gibt, dann "COUNTER|C1",
    wenn es eckige Klammern statt runder Klammern sind, dann "0|COUNTER|C1"
    als Extraktionskriterium wählen.

    Kommentar


      #3
      Hallo Jonofe,

      Nein die Klammern hatte ich dahin geschrieben, da ich erst die Syntax im Text hatte damit man das aus einander halten kann. Ahh ok, dann hatte ich halt den falschen Ansatz. Ich danke dir vielmals für deine Hilfe.

      Gruß
      Marhal

      Kommentar


        #4
        ich habe das gleiche Thema und komme nicht weiter, Ausgangssituation wie der Threadersteller:

        Subscripe auf tele/tasmota_96DD4C/SENSOR/# liefert folgende Werte:

        {"Time":"2022-01-18T09:34:44","BME280":{"Temperature":25.0,"Humidit y":38.6,"DewPoint":9.9,"Pressure":998.3},"ESP32 ":{ "Temperature":48.3},"PressureUnit":"hPa","Temp Unit ":"C"}||0||0||0

        Nun möchte ich Temperature,Humidity und Pressure die Werte bekommen, anbei meine Logic einmal mit JSON Extrator und einmal ohne, funktioniert aber beides nicht
        Zuletzt geändert von TobiDD; 19.01.2022, 15:31.

        Kommentar


          #5
          Ich kenne die Tasmota's nicht, aber kann man nicht einfach auf tele/tasmota_96DD4C/SENSOR/Temperature subscriben?

          Kommentar


            #6
            Wenn DU den json mal hier reinkoperst: http://json.parser.online.fr/, siehst Du, das Temperature so nicht gibt, sondern BME280/Temperature

            Kommentar


              #7
              danke vento66 habs dann mit BME280|Temperature endlich richtig angezeigt bekommen

              Kommentar


                #8
                Zitat von vento66 Beitrag anzeigen
                Wenn DU den json mal hier reinkoperst: http://json.parser.online.fr/, siehst Du, das Temperature so nicht gibt, sondern BME280/Temperature
                Von mir aus auch so. Hab ja geschrieben ich kenne das Produkt nicht.
                Habe nur gesehen dass im Subscribe eine multi level whitecard (#) verwendet wurde. Dann muss man eben das Ergebnis parsen. Oder man macht die subscription direkt auf das topic. Dann bekommt man auch nur das zurück.

                Kommentar

                Lädt...
                X