Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Parser Regex

NEWS

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

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

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

Parser Regex

Scheduled Pinned Locked Moved ioBroker Allgemein
11 Posts 3 Posters 600 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    Wuffi26
    wrote on last edited by
    #1

    Hallo, ich rufe mit dem Parser einen String von einen Server ab, der an meinen WR angesteckt ist. Nun ist es so, das alles werte übertragen werden, ich möchte via Regex, ein Wort mit dem dazugehörigen Wert in ein Datenpunkt schreiben un Ihn dann via Influx loggen. Ich bekomme das einfach nicht hin, den Zahlenwert an ein Wort zu binden. Zum Beispiel: Batterieladezustand (SOC) in %. Wie müßte die Regex aussehen?
    Bin hier am verzweifeln, und die Erfahrung mit Regex habe ich leider auch nicht. Vielen Dank für Eure Hilfe.

    { "val": "{\"InverterStatus\":5,\"InputPower\":270,\"PV1Voltage\":362.9,\"PV1InputCurrent\":0.7,\"PV1InputPower\":257.9,\"PV2Voltage\":288.4,\"PV2InputCurrent\":0,\"PV2InputPower\":20.9,\"OutputPower\":496.7,\"GridFrequency\":49.98,\"L1ThreePhaseGridVoltage\":241.5,\"L1ThreePhaseGridOutputCurrent\":2.3,\"L1ThreePhaseGridOutputPower\":492.9,\"L2ThreePhaseGridVoltage\":0,\"L2ThreePhaseGridOutputCurrent\":0,\"L2ThreePhaseGridOutputPower\":0,\"L3ThreePhaseGridVoltage\":0,\"L3ThreePhaseGridOutputCurrent\":0,\"L3ThreePhaseGridOutputPower\":0,\"TodayGenerateEnergy\":27.9,\"TotalGenerateEnergy\":6828.3,\"TWorkTimeTotal\":5.903158e7,\"PV1EnergyToday\":12.3,\"PV1EnergyTotal\":3153.6,\"PV2EnergyToday\":17.1,\"PV2EnergyTotal\":3378.2,\"PVEnergyTotal\":6554.4,\"InverterTemperature\":36,\"TemperatureInsideIPM\":33.3,\"BoostTemperature\":35.9,\"DischargePower\":0,\"ChargePower\":0,\"BatteryVoltage\":53.3,\"SOC\":100,\"ACPowerToUser\":0,\"ACPowerToUserTotal\":0,\"ACPowerToGrid\":81,\"ACPowerToGridTotal\":81,\"INVPowerToLocalLoad\":200,\"INVPowerToLocalLoadTotal\":200,\"BatteryTemperature\":26,\"BatteryState\":5,\"EnergyToUserToday\":1.2,\"EnergyToUserTotal\":8244.3,\"EnergyToGridToday\":0.8,\"EnergyToGridTotal\":217.9,\"DischargeEnergyToday\":8.8,\"DischargeEnergyTotal\":3086.6,\"ChargeEnergyToday\":10.8,\"ChargeEnergyTotal\":3092.5,\"LocalLoadEnergyToday\":27.8,\"LocalLoadEnergyTotal\":14574.9,\"ACChargeEnergyToday\":0.4,\"ACChargeEnergyTotal\":840.4,\"Mac\":\"48:55:19:68:30:C9\",\"Cnt\":100808}", "ack": true, "ts": 1719331820944, "q": 0, "from": "system.adapter.mqtt.0", "user": "system.user.admin", "lc": 1719331820944, "_id": "mqtt.0.SPH4600", "common": { "name": "SPH4600", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "SPH4600" }, "type": "state", "acl": { "object": 1636, "state": 1636, "owner": "system.user.dressman79", "ownerGroup": "system.group.user" } }
    
    1 Reply Last reply
    0
    • M Online
      M Online
      MCU
      wrote on last edited by MCU
      #2

      @Wuffi26
      Mit javascript?

      let dpInhalt = { 
          "val": "{\"InverterStatus\":5,\"InputPower\":270,\"PV1Voltage\":362.9,\"PV1InputCurrent\":0.7,\"PV1InputPower\":257.9,\"PV2Voltage\":288.4,\"PV2InputCurrent\":0,\"PV2InputPower\":20.9,\"OutputPower\":496.7,\"GridFrequency\":49.98,\"L1ThreePhaseGridVoltage\":241.5,\"L1ThreePhaseGridOutputCurrent\":2.3,\"L1ThreePhaseGridOutputPower\":492.9,\"L2ThreePhaseGridVoltage\":0,\"L2ThreePhaseGridOutputCurrent\":0,\"L2ThreePhaseGridOutputPower\":0,\"L3ThreePhaseGridVoltage\":0,\"L3ThreePhaseGridOutputCurrent\":0,\"L3ThreePhaseGridOutputPower\":0,\"TodayGenerateEnergy\":27.9,\"TotalGenerateEnergy\":6828.3,\"TWorkTimeTotal\":5.903158e7,\"PV1EnergyToday\":12.3,\"PV1EnergyTotal\":3153.6,\"PV2EnergyToday\":17.1,\"PV2EnergyTotal\":3378.2,\"PVEnergyTotal\":6554.4,\"InverterTemperature\":36,\"TemperatureInsideIPM\":33.3,\"BoostTemperature\":35.9,\"DischargePower\":0,\"ChargePower\":0,\"BatteryVoltage\":53.3,\"SOC\":100,\"ACPowerToUser\":0,\"ACPowerToUserTotal\":0,\"ACPowerToGrid\":81,\"ACPowerToGridTotal\":81,\"INVPowerToLocalLoad\":200,\"INVPowerToLocalLoadTotal\":200,\"BatteryTemperature\":26,\"BatteryState\":5,\"EnergyToUserToday\":1.2,\"EnergyToUserTotal\":8244.3,\"EnergyToGridToday\":0.8,\"EnergyToGridTotal\":217.9,\"DischargeEnergyToday\":8.8,\"DischargeEnergyTotal\":3086.6,\"ChargeEnergyToday\":10.8,\"ChargeEnergyTotal\":3092.5,\"LocalLoadEnergyToday\":27.8,\"LocalLoadEnergyTotal\":14574.9,\"ACChargeEnergyToday\":0.4,\"ACChargeEnergyTotal\":840.4,\"Mac\":\"48:55:19:68:30:C9\",\"Cnt\":100808}", 
          "ack": true, 
          "ts": 1719331820944, 
          "q": 0, 
          "from": "system.adapter.mqtt.0", 
          "user": "system.user.admin", 
          "lc": 1719331820944, 
          "_id": "mqtt.0.SPH4600", 
          "common": { "name": "SPH4600", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, 
          "native": { "topic": "SPH4600" }, 
          "type": "state", 
          "acl": { "object": 1636, "state": 1636, "owner": "system.user.dressman79", "ownerGroup": "system.group.user" } 
          }
      
      let val = dpInhalt.val
      let parsedVal = JSON.parse(val)
      log(parsedVal.SOC)
      log(parsedVal.Cnt)
      

      DP holen

      let val = getState('mqtt.0.SPH4600').val
      let parsedVal = JSON.parse(val)
      log(parsedVal.SOC)
      log(parsedVal.Cnt)
      

      fe904bd5-1ab3-4ef0-b77d-096368dfcc5b-image.png

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      1 Reply Last reply
      0
      • W Offline
        W Offline
        Wuffi26
        wrote on last edited by
        #3

        Danke für die schnelle, aber mit JS habe ich keinen Plan. In der Parser Instanz kann man eine Regex eingeben, da der string sich immer wieder aktualisiert, wolle eigentlich diesen Weg nehmen. Wie könnte man das noch realisieren?

        M OliverIOO 2 Replies Last reply
        0
        • W Wuffi26

          Danke für die schnelle, aber mit JS habe ich keinen Plan. In der Parser Instanz kann man eine Regex eingeben, da der string sich immer wieder aktualisiert, wolle eigentlich diesen Weg nehmen. Wie könnte man das noch realisieren?

          M Online
          M Online
          MCU
          wrote on last edited by MCU
          #4

          @wuffi26 Keine Ahnung ob es funktioniert
          Regex

          \"SOC\":(\d+(\.\d+)?)
          
          /\"SOC\":(\d+(\.\d+)?)/
          

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          1 Reply Last reply
          0
          • W Offline
            W Offline
            Wuffi26
            wrote on last edited by
            #5

            OK danke werde es gleich mal probieren.

            1 Reply Last reply
            0
            • W Offline
              W Offline
              Wuffi26
              wrote on last edited by
              #6

              @mcu said in Parser Regex:

              /"SOC":(\d+(.\d+)?)/

              Leider keine Ergebnisse.

              1 Reply Last reply
              0
              • W Offline
                W Offline
                Wuffi26
                wrote on last edited by
                #7

                Wenn ich nur SOC eingebe findet er logischerweise Nur das Wort.

                1 Reply Last reply
                0
                • W Wuffi26

                  Danke für die schnelle, aber mit JS habe ich keinen Plan. In der Parser Instanz kann man eine Regex eingeben, da der string sich immer wieder aktualisiert, wolle eigentlich diesen Weg nehmen. Wie könnte man das noch realisieren?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  wrote on last edited by OliverIO
                  #8

                  @wuffi26

                  oder so

                  \\\"SOC\\\":([\d\.\,]+),
                  

                  das regex brücksichtigt auch, das die zahl auch mal punkt und komma enthält
                  snsonsten reicht auch

                  \\\"SOC\\\":([\d]+),
                  

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  1 Reply Last reply
                  0
                  • W Offline
                    W Offline
                    Wuffi26
                    wrote on last edited by
                    #9

                    @oliverio said in Parser Regex:

                    \"SOC\":([\d.,]+),

                    Ein Regex Experte, es fontioniert. Ich werde daraus einfach nicht schlau. Vielen Dank.

                    OliverIOO 1 Reply Last reply
                    0
                    • W Wuffi26

                      @oliverio said in Parser Regex:

                      \"SOC\":([\d.,]+),

                      Ein Regex Experte, es fontioniert. Ich werde daraus einfach nicht schlau. Vielen Dank.

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      wrote on last edited by
                      #10

                      @wuffi26

                      ja regex ist hart.
                      habe auch mehrere anläufe über die jahre gebraucht bis ich es kapiert habe

                      die folgende seite hilft da enorm.
                      da habe ich genau deinen fall mal gespeichert.
                      oben rechts steht die beschreibung welche zeichen da was genau was matcht.
                      die größte schwierigkeit besteht ein stop zeichen zu finden, da regex als greedy gilt und lieber mehr zeichen anzeiht als zu wenig.
                      aber hier haben wir das , nach der zahl
                      https://regex101.com/r/WiCynN/1

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      1 Reply Last reply
                      0
                      • W Offline
                        W Offline
                        Wuffi26
                        wrote on last edited by
                        #11

                        Ok vielen Dank für Deine Hilfe.

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

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

                        729

                        Online

                        32.4k

                        Users

                        81.4k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe