Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Parser Regex

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Parser Regex

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      Wuffi26 last edited by

      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 Reply Quote 0
      • M
        MCU last edited by MCU

        @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

        1 Reply Last reply Reply Quote 0
        • W
          Wuffi26 last edited by

          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 OliverIO 2 Replies Last reply Reply Quote 0
          • M
            MCU @Wuffi26 last edited by MCU

            @wuffi26 Keine Ahnung ob es funktioniert
            Regex

            \"SOC\":(\d+(\.\d+)?)
            
            /\"SOC\":(\d+(\.\d+)?)/
            
            1 Reply Last reply Reply Quote 0
            • W
              Wuffi26 last edited by

              OK danke werde es gleich mal probieren.

              1 Reply Last reply Reply Quote 0
              • W
                Wuffi26 last edited by

                @mcu said in Parser Regex:

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

                Leider keine Ergebnisse.

                1 Reply Last reply Reply Quote 0
                • W
                  Wuffi26 last edited by

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

                  1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Wuffi26 last edited by OliverIO

                    @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]+),
                    
                    1 Reply Last reply Reply Quote 0
                    • W
                      Wuffi26 last edited by

                      @oliverio said in Parser Regex:

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

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

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Wuffi26 last edited by

                        @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

                        1 Reply Last reply Reply Quote 0
                        • W
                          Wuffi26 last edited by

                          Ok vielen Dank für Deine Hilfe.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

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

                          390
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          344
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo