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. Skripten / Logik
  4. MQTT Antwort parsen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

MQTT Antwort parsen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
21 Beiträge 9 Kommentatoren 2.2k Aufrufe 5 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.
  • Andre 6A Andre 6

    Moin,

    ich möchte einen Datenpunkt parsen welcher leider kein Json ist.
    Ich lese per MQTT einen Marstek B2500 Speicher aus und bekomme nur einen Datenpunkt mit dem Wert z.B.

    p1=1,p2=1,w1=100,w2=101,usw
    

    w1 ist hier die Leistung des 1. PV Eingang des Speichers, also 100Watt.

    Das ganze möchte ich nun in einzelne Datenpunkte schreiben, aber alle Beispiele die ich finde haben keine = Zeichen sondern :.

    Scripten ist nicht meine Lieblingsbaustelle 😉.

    BananaJoeB Online
    BananaJoeB Online
    BananaJoe
    Most Active
    schrieb am zuletzt editiert von BananaJoe
    #2

    @andre-6 die .split() Methode wäre dein Freund:
    https://www.w3schools.com/jsref/jsref_split.asp

    Du könntest erst an den , splitten, dann hättest du ein Array mit den einzelnen p1=1 Strings.
    Die kannst du wiederum splitten anhand des =

    Womit Skriptes du denn bisher? JavaScript? Blockly? NodeRed?

    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

    Andre 6A paul53P 2 Antworten Letzte Antwort
    0
    • BananaJoeB BananaJoe

      @andre-6 die .split() Methode wäre dein Freund:
      https://www.w3schools.com/jsref/jsref_split.asp

      Du könntest erst an den , splitten, dann hättest du ein Array mit den einzelnen p1=1 Strings.
      Die kannst du wiederum splitten anhand des =

      Womit Skriptes du denn bisher? JavaScript? Blockly? NodeRed?

      Andre 6A Offline
      Andre 6A Offline
      Andre 6
      schrieb am zuletzt editiert von
      #3

      @bananajoe derzeit nur mit Blockly

      It's not a bug it's a feature.

      Marc BergM 1 Antwort Letzte Antwort
      0
      • BananaJoeB BananaJoe

        @andre-6 die .split() Methode wäre dein Freund:
        https://www.w3schools.com/jsref/jsref_split.asp

        Du könntest erst an den , splitten, dann hättest du ein Array mit den einzelnen p1=1 Strings.
        Die kannst du wiederum splitten anhand des =

        Womit Skriptes du denn bisher? JavaScript? Blockly? NodeRed?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #4

        @bananajoe sagte: , splitten, dann hättest du ein Array mit den einzelnen p1=1 Strings. Die kannst du wiederum splitten anhand des =

        Etwa so, wenn nur Zahlenwerte enthalten sind:

        Blockly_temp.JPG

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        Andre 6A 1 Antwort Letzte Antwort
        1
        • Andre 6A Andre 6

          @bananajoe derzeit nur mit Blockly

          Marc BergM Offline
          Marc BergM Offline
          Marc Berg
          Most Active
          schrieb am zuletzt editiert von Marc Berg
          #5

          @andre-6

          p1=1,p2=1,w1=100,w2=101,usw

          Ich würde es ohne Skripting mit Aliasen machen und einer Read-Konvertierung:

          val.split(',').find(p => p.startsWith('w1=')).split('=')[1]
          

          oder mit regulären Ausdrücken:

          value.match(/w1=(\d+)/)[1]
          

          Dabei das "w1" jeweils um den Parameter ersetzen, der gefragt ist.

          426cb3a1-093d-46b8-8a3f-d45594d8b0c9-grafik.png

          EDIT: Dabei nicht von Fehlermeldungen des Read-Konverters irritieren lassen, nach dem erstmaligen Speichern sind die weg.

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+RabbitMQ+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          1 Antwort Letzte Antwort
          2
          • mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #6

            Oder Du kombinierst Blockly mit regulären Ausdrücken:

            8235100c-ec78-47f0-b077-3d207fd2eb43-image.png

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="$%$5rI0yxpvMs4%k|yC4">Liste</variable>
             </variables>
             <block type="variables_set" id="M5y-_xkzw7p$o;Nh}70$" x="37" y="37">
               <field name="VAR" id="$%$5rI0yxpvMs4%k|yC4">Liste</field>
               <value name="VALUE">
                 <block type="convert_jsonata" id=".^AH}C!F%:rI)h:V,4!.">
                   <value name="EXPRESSION">
                     <shadow type="text" id="c-[Ca!mn22wn^I5^+3sJ">
                       <field name="TEXT">$match($,/=(\d*)/).groups.$number($)</field>
                     </shadow>
                   </value>
                   <value name="TARGET">
                     <block type="text" id="rbq*`zu)B|tNn]Rv=Qa/">
                       <field name="TEXT">p1=1,p2=1,w1=100,w2=101</field>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="debug" id="(r7g2sJ.-~jcZ[my26u~">
                   <field name="Severity">info</field>
                   <value name="TEXT">
                     <shadow type="text" id="Dk0A6{beL/b)S0Kg}q9N">
                       <field name="TEXT">rr</field>
                     </shadow>
                     <block type="lists_getSublist" id="BmlvS7-lwJ_{e%+$NyJ@">
                       <mutation at1="false" at2="false"></mutation>
                       <field name="WHERE1">FIRST</field>
                       <field name="WHERE2">LAST</field>
                       <value name="LIST">
                         <block type="variables_get" id="kN6v1wMR.Pg{zEHu8Uaa">
                           <field name="VAR" id="$%$5rI0yxpvMs4%k|yC4">Liste</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
               </next>
             </block>
            </xml>
            

            ...und wandelst auch gleich in Zahlenwerte um.

            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.

            Andre 6A 1 Antwort Letzte Antwort
            1
            • paul53P paul53

              @bananajoe sagte: , splitten, dann hättest du ein Array mit den einzelnen p1=1 Strings. Die kannst du wiederum splitten anhand des =

              Etwa so, wenn nur Zahlenwerte enthalten sind:

              Blockly_temp.JPG

              Andre 6A Offline
              Andre 6A Offline
              Andre 6
              schrieb am zuletzt editiert von Andre 6
              #7

              @paul53 wo / wie hast du diesen Bausteinen her ? 5c8f76ba-592f-4de3-b23f-e971b8b5e4ae-image.png

              ich finde nur den 1570a9fc-cd1c-47dc-bde4-2a60dec2ef5f-image.png

              It's not a bug it's a feature.

              paul53P 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                Oder Du kombinierst Blockly mit regulären Ausdrücken:

                8235100c-ec78-47f0-b077-3d207fd2eb43-image.png

                <xml xmlns="https://developers.google.com/blockly/xml">
                 <variables>
                   <variable id="$%$5rI0yxpvMs4%k|yC4">Liste</variable>
                 </variables>
                 <block type="variables_set" id="M5y-_xkzw7p$o;Nh}70$" x="37" y="37">
                   <field name="VAR" id="$%$5rI0yxpvMs4%k|yC4">Liste</field>
                   <value name="VALUE">
                     <block type="convert_jsonata" id=".^AH}C!F%:rI)h:V,4!.">
                       <value name="EXPRESSION">
                         <shadow type="text" id="c-[Ca!mn22wn^I5^+3sJ">
                           <field name="TEXT">$match($,/=(\d*)/).groups.$number($)</field>
                         </shadow>
                       </value>
                       <value name="TARGET">
                         <block type="text" id="rbq*`zu)B|tNn]Rv=Qa/">
                           <field name="TEXT">p1=1,p2=1,w1=100,w2=101</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="debug" id="(r7g2sJ.-~jcZ[my26u~">
                       <field name="Severity">info</field>
                       <value name="TEXT">
                         <shadow type="text" id="Dk0A6{beL/b)S0Kg}q9N">
                           <field name="TEXT">rr</field>
                         </shadow>
                         <block type="lists_getSublist" id="BmlvS7-lwJ_{e%+$NyJ@">
                           <mutation at1="false" at2="false"></mutation>
                           <field name="WHERE1">FIRST</field>
                           <field name="WHERE2">LAST</field>
                           <value name="LIST">
                             <block type="variables_get" id="kN6v1wMR.Pg{zEHu8Uaa">
                               <field name="VAR" id="$%$5rI0yxpvMs4%k|yC4">Liste</field>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </next>
                 </block>
                </xml>
                

                ...und wandelst auch gleich in Zahlenwerte um.

                Andre 6A Offline
                Andre 6A Offline
                Andre 6
                schrieb am zuletzt editiert von
                #8

                @mickym ich hätte das schon gerne direkt als einzelne Datenpunkte
                2fa65ce6-ad8e-43dd-a262-3f7125efad24-image.png

                It's not a bug it's a feature.

                1 Antwort Letzte Antwort
                0
                • Andre 6A Andre 6

                  @paul53 wo / wie hast du diesen Bausteinen her ? 5c8f76ba-592f-4de3-b23f-e971b8b5e4ae-image.png

                  ich finde nur den 1570a9fc-cd1c-47dc-bde4-2a60dec2ef5f-image.png

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #9

                  @andre-6 sagte: wo / wie hast du diesen Bausteinen her ?

                  Zwei Text-Elemente und interne Eingänge:

                  Blockly_temp.JPG

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • Andre 6A Offline
                    Andre 6A Offline
                    Andre 6
                    schrieb am zuletzt editiert von
                    #10

                    @paul53 aha...
                    07451f45-06aa-412f-b273-d6ff04b0d817-image.png
                    und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette?

                    It's not a bug it's a feature.

                    Andre 6A paul53P 2 Antworten Letzte Antwort
                    0
                    • Andre 6A Andre 6

                      @paul53 aha...
                      07451f45-06aa-412f-b273-d6ff04b0d817-image.png
                      und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette?

                      Andre 6A Offline
                      Andre 6A Offline
                      Andre 6
                      schrieb am zuletzt editiert von Andre 6
                      #11

                      @andre-6 602cca23-90c0-4679-a5df-c54748da47af-image.png

                      ich bitte um Nachsicht, aber das ist echt nicht meins....
                      Ich möchte ja nicht nur den einen Wert haben

                      mein erster Ansatz war es so zu lösen, aber da es ja kein Json ist geht das nicht

                      31ac23c1-ee87-4a85-b2ba-bc3da0e13ad6-image.png

                      It's not a bug it's a feature.

                      1 Antwort Letzte Antwort
                      0
                      • Andre 6A Andre 6

                        @paul53 aha...
                        07451f45-06aa-412f-b273-d6ff04b0d817-image.png
                        und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette?

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #12

                        @andre-6 sagte: und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette?

                        An diese Stelle muss der Beginn der Datenpunkt-ID. Beispiel: "0_userdata.0.PV.Speicher." ergibt mit "w1" die Datenpunkt-ID "0_userdata.0.PV.Speicher.w1". Die Datenpunkte vom Typ "Zahl" müssen alle bereits erstellt sein.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        Andre 6A 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @andre-6 sagte: und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette?

                          An diese Stelle muss der Beginn der Datenpunkt-ID. Beispiel: "0_userdata.0.PV.Speicher." ergibt mit "w1" die Datenpunkt-ID "0_userdata.0.PV.Speicher.w1". Die Datenpunkte vom Typ "Zahl" müssen alle bereits erstellt sein.

                          Andre 6A Offline
                          Andre 6A Offline
                          Andre 6
                          schrieb am zuletzt editiert von
                          #13

                          @paul53 ok, also müssen alle Werte die ich in dem Quelldatenpunkt habe zwingend auch als einzelne Datenpunkte existieren.
                          Kann ich mir auch nur meine Rosinen raus picken?

                          It's not a bug it's a feature.

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • Andre 6A Andre 6

                            @paul53 ok, also müssen alle Werte die ich in dem Quelldatenpunkt habe zwingend auch als einzelne Datenpunkte existieren.
                            Kann ich mir auch nur meine Rosinen raus picken?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #14

                            @andre-6 sagte: Kann ich mir auch nur meine Rosinen raus picken?

                            Kannst du.

                            Blockly_temp.JPG

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            Andre 6A 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @andre-6 sagte: Kann ich mir auch nur meine Rosinen raus picken?

                              Kannst du.

                              Blockly_temp.JPG

                              Andre 6A Offline
                              Andre 6A Offline
                              Andre 6
                              schrieb am zuletzt editiert von
                              #15

                              @paul53 vielen Dank, zwar noch nicht verstanden was wie und wo aber es läuft

                              It's not a bug it's a feature.

                              1 Antwort Letzte Antwort
                              0
                              • Andre 6A Andre 6

                                Moin,

                                ich möchte einen Datenpunkt parsen welcher leider kein Json ist.
                                Ich lese per MQTT einen Marstek B2500 Speicher aus und bekomme nur einen Datenpunkt mit dem Wert z.B.

                                p1=1,p2=1,w1=100,w2=101,usw
                                

                                w1 ist hier die Leistung des 1. PV Eingang des Speichers, also 100Watt.

                                Das ganze möchte ich nun in einzelne Datenpunkte schreiben, aber alle Beispiele die ich finde haben keine = Zeichen sondern :.

                                Scripten ist nicht meine Lieblingsbaustelle 😉.

                                J Offline
                                J Offline
                                Jeba
                                schrieb am zuletzt editiert von
                                #16

                                @andre-6 Hallo Andre, kannst Du mir bitte sagen, wie du den Speicher ausliest.
                                Ich habe mir auch einen bestellt und möchte den einbinden.
                                Kann man in der App MQTT konfigurieren

                                M 1 Antwort Letzte Antwort
                                0
                                • Andre 6A Andre 6

                                  Moin,

                                  ich möchte einen Datenpunkt parsen welcher leider kein Json ist.
                                  Ich lese per MQTT einen Marstek B2500 Speicher aus und bekomme nur einen Datenpunkt mit dem Wert z.B.

                                  p1=1,p2=1,w1=100,w2=101,usw
                                  

                                  w1 ist hier die Leistung des 1. PV Eingang des Speichers, also 100Watt.

                                  Das ganze möchte ich nun in einzelne Datenpunkte schreiben, aber alle Beispiele die ich finde haben keine = Zeichen sondern :.

                                  Scripten ist nicht meine Lieblingsbaustelle 😉.

                                  M Offline
                                  M Offline
                                  manrum1
                                  schrieb am zuletzt editiert von
                                  #17

                                  @andre-6 Könntest du mir bitte sagen wie du es geschafft hast MQTT überhaupt einzuschalten? Ich habe seit ein paar Wochen den Marstek B2500, der funktioniert auch ganz gut, nur komme ich nicht an die Daten ran.
                                  Vor kurzem gab es noch die WEB-Seite: https://eu.hamedata.com/app/AfterSales/index.html
                                  Dort konnte man den Punkt MQTT zwar enablen, auch wenn sich hinterher nichts getan hat.
                                  Bei mir geht seit einigen Tagen dei o.a. WEB-Seite gar nicht mehr (kommt dauernd eine Maintenance-Seite.).

                                  1 Antwort Letzte Antwort
                                  0
                                  • J Jeba

                                    @andre-6 Hallo Andre, kannst Du mir bitte sagen, wie du den Speicher ausliest.
                                    Ich habe mir auch einen bestellt und möchte den einbinden.
                                    Kann man in der App MQTT konfigurieren

                                    M Offline
                                    M Offline
                                    michihorn
                                    schrieb am zuletzt editiert von
                                    #18

                                    @jeba sagte in MQTT Antwort parsen:

                                    Kann man in der App MQTT konfigurieren

                                    Das würde ich auch gerne wissen
                                    Michael

                                    1 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      michihorn
                                      schrieb am zuletzt editiert von
                                      #19

                                      Ich mache gerade meine ersten Versuche meinen Marstek B2500 per mqtt in den IOBROKER zu bekommen.
                                      Anbei ein Bild der Objekte, mehr kommt nicht
                                      mars.png
                                      Gruß
                                      Michael

                                      M 1 Antwort Letzte Antwort
                                      0
                                      • M michihorn

                                        Ich mache gerade meine ersten Versuche meinen Marstek B2500 per mqtt in den IOBROKER zu bekommen.
                                        Anbei ein Bild der Objekte, mehr kommt nicht
                                        mars.png
                                        Gruß
                                        Michael

                                        M Offline
                                        M Offline
                                        manrum1
                                        schrieb am zuletzt editiert von
                                        #20

                                        @michihorn Bei mir schauts genau so aus! Kann jemand helfen?

                                        HomoranH 1 Antwort Letzte Antwort
                                        0
                                        • M manrum1

                                          @michihorn Bei mir schauts genau so aus! Kann jemand helfen?

                                          HomoranH Nicht stören
                                          HomoranH Nicht stören
                                          Homoran
                                          Global Moderator Administrators
                                          schrieb am zuletzt editiert von Homoran
                                          #21

                                          @manrum1 sagte in MQTT Antwort parsen:

                                          @michihorn Bei mir schauts genau so aus! Kann jemand helfen?

                                          warum Doppelpost?

                                          hier gilt die gleiche Antwort!

                                          Außerdem kannst du und @michihorn nichts parsen, wenn ihr nichts zum parsen hast.
                                          Also ist das hier nicht der richtige Thread für euch

                                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          747

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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