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?
-
@wuffi26 Keine Ahnung ob es funktioniert
Regex\"SOC\":(\d+(\.\d+)?) /\"SOC\":(\d+(\.\d+)?)/
-
OK danke werde es gleich mal probieren.
-
-
Wenn ich nur SOC eingebe findet er logischerweise Nur das Wort.
-
oder so
\\\"SOC\\\":([\d\.\,]+),
das regex brücksichtigt auch, das die zahl auch mal punkt und komma enthält
snsonsten reicht auch\\\"SOC\\\":([\d]+),
-
@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 -
Ok vielen Dank für Deine Hilfe.