NEWS
Parser Regex
-
@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)
-
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?
-
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?
-
@oliverio said in Parser Regex:
\"SOC\":([\d.,]+),
Ein Regex Experte, es fontioniert. Ich werde daraus einfach nicht schlau. Vielen Dank.
ja regex ist hart.
habe auch mehrere anläufe über die jahre gebraucht bis ich es kapiert habedie 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