Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. MQTT Adapter sendMessage2Client Escape "

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    351

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

MQTT Adapter sendMessage2Client Escape "

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
14 Beiträge 3 Kommentatoren 1.4k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    maxx8888
    schrieb am zuletzt editiert von
    #1

    Hallo!

    Ich verwende einen Victron Wechselrichter und quatsche mit dem per MQTT Adapter im Client Modus.

    Das Problem ist um den Modus zu wechseln, braucht der Wechselrichter einen value im JSON Format:
    z.b: {"value":9}

    Wie kann ich das richtig escapen?

    Ich kann das schicken versuchen wie ich will, die Anführungszeichen werden immer escaped. Wenn ich als ganzes Objekt schicken versuche dann kommt am Broker undefined an.

    Versuche:

    sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:'{"value" : 9}'});
    
    sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:"{'value' : 9}"});
    
    sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:{"value" : 9}});
    
    sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:"{\"value\" : 9}"});
    

    Klappt leider alles nicht. Das Ergebnis am Broker ist immer:
    6f854bad-4f20-4d3d-a9d9-74dda5e585eb-image.png

    Sollte aber so sein damit es klappt:
    a740673a-a525-4a29-8b1b-7d5618d04598-image.png

    Vielen Dank schon mal für jede Hilfe!

    mickymM T 2 Antworten Letzte Antwort
    0
    • M maxx8888

      Hallo!

      Ich verwende einen Victron Wechselrichter und quatsche mit dem per MQTT Adapter im Client Modus.

      Das Problem ist um den Modus zu wechseln, braucht der Wechselrichter einen value im JSON Format:
      z.b: {"value":9}

      Wie kann ich das richtig escapen?

      Ich kann das schicken versuchen wie ich will, die Anführungszeichen werden immer escaped. Wenn ich als ganzes Objekt schicken versuche dann kommt am Broker undefined an.

      Versuche:

      sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:'{"value" : 9}'});
      
      sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:"{'value' : 9}"});
      
      sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:{"value" : 9}});
      
      sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:"{\"value\" : 9}"});
      

      Klappt leider alles nicht. Das Ergebnis am Broker ist immer:
      6f854bad-4f20-4d3d-a9d9-74dda5e585eb-image.png

      Sollte aber so sein damit es klappt:
      a740673a-a525-4a29-8b1b-7d5618d04598-image.png

      Vielen Dank schon mal für jede Hilfe!

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @maxx8888 Du escapsed das nicht, sondern du sendest das Objekt so wie es ist.

      Du lässt das Object wie es ist und stringifizierst :grin: das Objekt. ;)

       message:JSON.stringify({value : 9})
      

      Ein JSON String ist ein stringifiziertes Objekt, um als String Objekte über eine Vielzahl von Protokollen zu senden. Ein JSON String als String zu definieren, wird immer scheitern.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      M 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @maxx8888 Du escapsed das nicht, sondern du sendest das Objekt so wie es ist.

        Du lässt das Object wie es ist und stringifizierst :grin: das Objekt. ;)

         message:JSON.stringify({value : 9})
        

        Ein JSON String ist ein stringifiziertes Objekt, um als String Objekte über eine Vielzahl von Protokollen zu senden. Ein JSON String als String zu definieren, wird immer scheitern.

        M Offline
        M Offline
        maxx8888
        schrieb am zuletzt editiert von
        #3

        @mickym

        Oh mann, Knopf im Kopf... Vielen Dank! So wird es funktionieren!

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          maxx8888
          schrieb am zuletzt editiert von
          #4

          Tja,

          Ist zwar lange her und ich habe immer wieder damit rumgespielt, aber es funktioniert leider nach wie vor nicht.

          sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:JSON.stringify({value: -0})});
          

          Endet wieder in einen escapen String am MQTT Explorer:
          b51ebf7e-1843-4156-9d3c-94589531eed6-image.png

          mickymM 1 Antwort Letzte Antwort
          0
          • M maxx8888

            Tja,

            Ist zwar lange her und ich habe immer wieder damit rumgespielt, aber es funktioniert leider nach wie vor nicht.

            sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:JSON.stringify({value: -0})});
            

            Endet wieder in einen escapen String am MQTT Explorer:
            b51ebf7e-1843-4156-9d3c-94589531eed6-image.png

            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            @maxx8888 sagte in MQTT Adapter sendMessage2Client Escape ":

            sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:JSON.stringify({value: -0})});

            Na bis auf das Minuszeichen vor der 0 sollte es funktionieren. Wenn Du allerdings mqtt.0 als Broker betreibst - hat das Ding wieder ein Problem - deshalb nutze ich als Broker mosquitto.

            Das funktioniert aber:

            00ceaee1-072d-47f7-a979-5d4164196c17-image.png

            sendTo('mqtt.3', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:JSON.stringify({value:0})});
            
            

            Wenn ich den gleichen Befehl an einen Broker schicke - dann geht das auch nicht.

            9b51fa48-3ae8-4a09-92d8-365d6151a577-image.png

            Aber wie gesagt - den Adapter würde ich sowieso nicht als Broker betreiben - da hat mit der zuviele Bugs.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • M maxx8888

              Hallo!

              Ich verwende einen Victron Wechselrichter und quatsche mit dem per MQTT Adapter im Client Modus.

              Das Problem ist um den Modus zu wechseln, braucht der Wechselrichter einen value im JSON Format:
              z.b: {"value":9}

              Wie kann ich das richtig escapen?

              Ich kann das schicken versuchen wie ich will, die Anführungszeichen werden immer escaped. Wenn ich als ganzes Objekt schicken versuche dann kommt am Broker undefined an.

              Versuche:

              sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:'{"value" : 9}'});
              
              sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:"{'value' : 9}"});
              
              sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:{"value" : 9}});
              
              sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/BatteryLife/State', message:"{\"value\" : 9}"});
              

              Klappt leider alles nicht. Das Ergebnis am Broker ist immer:
              6f854bad-4f20-4d3d-a9d9-74dda5e585eb-image.png

              Sollte aber so sein damit es klappt:
              a740673a-a525-4a29-8b1b-7d5618d04598-image.png

              Vielen Dank schon mal für jede Hilfe!

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von
              #6

              @maxx8888
              Ich sende meine Dinge so wie du... nur das : ist immer '{"key": 1}'

              Nutze aber wie mickym mosquitto

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                maxx8888
                schrieb am zuletzt editiert von
                #7

                Wie macht ihr das genau?

                Klingt interessant. Ich habe wohl auch schon einen Mosquitto Docker laufen der die Daten vom Venus OS abruft. Aber parallel mqtt.0 direkt zum Venus OS.
                Verstehe ich das richtig das ihr im IOBroker schon auch einen mqtt Adapter am laufen habt, aber mit Mosquitto verbunden anstatt mit Venus OS?

                mickymM 1 Antwort Letzte Antwort
                0
                • M maxx8888

                  Wie macht ihr das genau?

                  Klingt interessant. Ich habe wohl auch schon einen Mosquitto Docker laufen der die Daten vom Venus OS abruft. Aber parallel mqtt.0 direkt zum Venus OS.
                  Verstehe ich das richtig das ihr im IOBroker schon auch einen mqtt Adapter am laufen habt, aber mit Mosquitto verbunden anstatt mit Venus OS?

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @maxx8888 Ja. Ich glaube VenusOS agiert auch als Broker. In dem Fall hättest Du 2 Broker in Deinem System und bräuchtest deshalb 2 Instanzen von dem mqtt- Adapter.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  M 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @maxx8888 Ja. Ich glaube VenusOS agiert auch als Broker. In dem Fall hättest Du 2 Broker in Deinem System und bräuchtest deshalb 2 Instanzen von dem mqtt- Adapter.

                    M Offline
                    M Offline
                    maxx8888
                    schrieb am zuletzt editiert von
                    #9

                    @mickym

                    MQTT.0 Adapter ist als Client/Subscriber konfiguriert im IOBroker.

                    Also bei mir im Moment:
                    VenusOS(Broker) -> MQTT.0 Adapter(Client)

                    Parallel damit ich auch im Mosquitto alle Daten habe:
                    VenusOS(Broker) -> Mosquitto(Broker)

                    Haben wir dann nicht doch die gleichen Settings?

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • M maxx8888

                      @mickym

                      MQTT.0 Adapter ist als Client/Subscriber konfiguriert im IOBroker.

                      Also bei mir im Moment:
                      VenusOS(Broker) -> MQTT.0 Adapter(Client)

                      Parallel damit ich auch im Mosquitto alle Daten habe:
                      VenusOS(Broker) -> Mosquitto(Broker)

                      Haben wir dann nicht doch die gleichen Settings?

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #10

                      @maxx8888 Nein das geht nicht, das sind 2 verschiedene Broker. Aber das brauchst Du dann ja nicht, weil wenn Du den mqtt-Adapter als Client konfiguriert hast, dann sollte er auch das Objekt richtig schreiben. Also in meinem 1. Beispiel funktionierte das ja. Ob ich jetzt mosquitto oder den VenusOS als Broker nutze sollte dann eigentlich aus iobroker Sicht keinen Unterschied machen

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        maxx8888
                        schrieb am zuletzt editiert von
                        #11

                        Es tut mir Leid ich stehe jetzt etwas auf der Leitung. Was funktioniert da nicht?
                        Könntest Du mir bitte nochmal genau erklären wie Du aus ioBroker eine MQTT Message an Victron schickst.

                        Ich habe nur das Problem das bei mir der mqtt.0 Adapter bei einem "sendMessage2Client" die message scheinbar falsch escaped. Alle 3 Teilnehmer funktionieren an sich normal, ich sehe alle Daten überall.

                        Ich kann auch andere Daten die keine Kombination aus {"xxx":"xxx"} enthalten ganz normal an Victron schicken:

                        Um Venus MQTT aktiv zu halten schicke ich zb:

                        //Refresh all:
                            sendTo('mqtt.0', 'sendMessage2Client', {topic:"R/dca6322aed74/keepalive", message:"#"});
                        

                        Hier gibt es das escaping Problem nicht.

                        Dieses tritt nur auf wenn die Message die man schickt und diese eine Kombination aus {"xxx":"xxx"}enthält:

                        sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:JSON.stringify({value: 0})});
                        

                        Hier meine Adapter Settings:
                        880ebbfc-eca8-42e6-943c-447232da085c-image.png

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • M maxx8888

                          Es tut mir Leid ich stehe jetzt etwas auf der Leitung. Was funktioniert da nicht?
                          Könntest Du mir bitte nochmal genau erklären wie Du aus ioBroker eine MQTT Message an Victron schickst.

                          Ich habe nur das Problem das bei mir der mqtt.0 Adapter bei einem "sendMessage2Client" die message scheinbar falsch escaped. Alle 3 Teilnehmer funktionieren an sich normal, ich sehe alle Daten überall.

                          Ich kann auch andere Daten die keine Kombination aus {"xxx":"xxx"} enthalten ganz normal an Victron schicken:

                          Um Venus MQTT aktiv zu halten schicke ich zb:

                          //Refresh all:
                              sendTo('mqtt.0', 'sendMessage2Client', {topic:"R/dca6322aed74/keepalive", message:"#"});
                          

                          Hier gibt es das escaping Problem nicht.

                          Dieses tritt nur auf wenn die Message die man schickt und diese eine Kombination aus {"xxx":"xxx"}enthält:

                          sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:JSON.stringify({value: 0})});
                          

                          Hier meine Adapter Settings:
                          880ebbfc-eca8-42e6-943c-447232da085c-image.png

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #12

                          @maxx8888 Ich bin ehrlich gesagt überfragt, warum das bei Dir nicht tut. Bei mir tut es wenn der mqtt Adapter ein Client ist. Ich habe keine Ahnung warum das bei Dir nicht tut.

                          Ich habe bei den Adaptersettings nichts angehakt - aber glaube nicht, dass das einen Unterschied macht. Ich habe leider keine Ahnung. Sorry.

                          3eb39440-296e-4052-bdaa-2bd1925b924f-image.png

                          c9ac1171-1e52-4625-b84b-de5391fc0e29-image.png

                          Genau der gleiche String nur mqtt.3

                          c4458790-964d-4e6d-b8ed-0ea819ea246b-image.png

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          1 Antwort Letzte Antwort
                          0
                          • M Offline
                            M Offline
                            maxx8888
                            schrieb am zuletzt editiert von
                            #13

                            Perfekt!

                            Das hat geholfen. Problem ist das setting "Zustandsobject als MQTT Nachricht senden".
                            Ich habe das abgehakt, und siehe da, das Problem ist weg.

                            Dafür hat das keepalive Kommando nicht mehr geklappt und Venus OS hört auf Daten zu schicken.
                            Hier scheint aber die ältere Variante auch zu funktionieren.

                            Vielen Dank für Deinen Screenshot vom Adapter. Der war Gold wert :-)

                                //Keepalive:
                                sendTo('mqtt.0', 'sendMessage2Client', {topic:"R/dca6322aed74/system/0/Serial", message: ''});
                            
                                //ACPowerSetpoint
                                sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:'{"value" : ' + 0 +'}'});
                            
                            mickymM 1 Antwort Letzte Antwort
                            0
                            • M maxx8888

                              Perfekt!

                              Das hat geholfen. Problem ist das setting "Zustandsobject als MQTT Nachricht senden".
                              Ich habe das abgehakt, und siehe da, das Problem ist weg.

                              Dafür hat das keepalive Kommando nicht mehr geklappt und Venus OS hört auf Daten zu schicken.
                              Hier scheint aber die ältere Variante auch zu funktionieren.

                              Vielen Dank für Deinen Screenshot vom Adapter. Der war Gold wert :-)

                                  //Keepalive:
                                  sendTo('mqtt.0', 'sendMessage2Client', {topic:"R/dca6322aed74/system/0/Serial", message: ''});
                              
                                  //ACPowerSetpoint
                                  sendTo('mqtt.0', 'sendMessage2Client', {topic:'W/dca6322aed74/settings/0/Settings/CGwacs/AcPowerSetPoint', message:'{"value" : ' + 0 +'}'});
                              
                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @maxx8888 Du kannst ja eine zusätzliche Instanz installieren mit anderen Einstellungen. Es können sich ja beliebig viele Clients an einen mqtt-Broker anmelden.

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              1 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              578

                              Online

                              32.5k

                              Benutzer

                              81.8k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe