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

  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.4k

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

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

Parser Regex

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
11 Beiträge 3 Kommentatoren 600 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.
  • W Offline
    W Offline
    Wuffi26
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • M Online
      M Online
      MCU
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      0
      • W Offline
        W Offline
        Wuffi26
        schrieb am zuletzt editiert von
        #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 Antworten Letzte Antwort
        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
          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
          0
          • W Offline
            W Offline
            Wuffi26
            schrieb am zuletzt editiert von
            #5

            OK danke werde es gleich mal probieren.

            1 Antwort Letzte Antwort
            0
            • W Offline
              W Offline
              Wuffi26
              schrieb am zuletzt editiert von
              #6

              @mcu said in Parser Regex:

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

              Leider keine Ergebnisse.

              1 Antwort Letzte Antwort
              0
              • W Offline
                W Offline
                Wuffi26
                schrieb am zuletzt editiert von
                #7

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

                1 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  0
                  • W Offline
                    W Offline
                    Wuffi26
                    schrieb am zuletzt editiert von
                    #9

                    @oliverio said in Parser Regex:

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

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

                    OliverIOO 1 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • W Offline
                        W Offline
                        Wuffi26
                        schrieb am zuletzt editiert von
                        #11

                        Ok vielen Dank für Deine Hilfe.

                        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
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        567

                        Online

                        32.4k

                        Benutzer

                        81.4k

                        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