Guten Abend,
nach Stunden am RegEx-Tester frage ich dann doch lieber mal ;):
"name": "Innensirene Waschkeller", "tag": "", "cond": "{WEB_MSG_AC_FAILURE}", "cond_ok": "0", "battery": "", "battery_ok": "1"
ist die Ausgabe HTTPMOD. Meine RegEx
[(?s)(Innensirene Waschkeller)+.*?("cond_ok": )([^}]?\d]
spuckt für "cond_ok": immer "0 aus. Das Tüttelchen muss weg.
Hat jemand eine Idee, wie es sich eliminieren lässt?
Vielen Dank im Voraus,
Ingo
Das sieht erstmal wie JSON ohne Klammern aus. Ist das sicher das, was roh von HTTPMOD ausgelesen wird?
Ja. Lese so auch die Temperaturen und die Luftfeuchte aus; klappt einwandfrei. Bloß da sieht der String anders aus, nämlich im Ausschnitt so:
0,"status": "{WEB_MSG_TS_DEGREE} 20.46 {WEB_MSG_RH_HUMIDITY} 24"}]
Hierfür benutze ich (?s)(Garage)+.*?(\{WEB_MSG_TS_DEGREE})([^ }]*)
. Im Problemstring haben wir halt noch das hartnäckige " vor der gesuchten Ziffer.
Poste doch bitte mal ein komplettes list des Devices. Mit JSON wäre das viel, viel einfacher.
Hier ist es:
"sid": "ZS:b58601", "su": 1, "alarm_status": "", "status_ex": "1", "hue": "-1", "sat": "-1", "ctemp": "-1", "hue_cmode": "-1", "hue_cie_x": "-1", "hue_cie_y": "-1", "hue_color_cap": "0", "nuki": "-1", "shutter_turn": 0,"status": "{WEB_MSG_PSS_ON} {WEB_MSG_PSM_POWER} 0.1 {WEB_MSG_POWER_METER_ENERGY} 359.4"},
{"area": 1, "zone": 43, "type": 22, "type_f": "{D_TYPE_22}", "name": "Innensirene Waschkeller",
"tag": "",
"cond": "{WEB_MSG_AC_FAILURE}", "cond_ok": "0", "battery": "", "battery_ok": "1",
"tamper": "", "tamper_ok": "1", "bypass": 0, "rssi": "{WEB_MSG_STRONG} 6",
"resp_mode": [0,5,5,5,5,0], "ammeter": "0", "ver": "SRAC_00.00.03.02TC",
"bypass_tamper": 0,
Von JSON habe ich leider überhaupt keine Ahnung.
Ich habs:
(?s)(Innensirene Waschkeller)+.*?(cond_ok": )\"([^,]*)"
bringt eine saubere Null (0) ohne Tüttelchen. Wahrscheinlich ist einiges unnützes Zeug in der RegEx, aber wenns funktioniert...
Vielen Dank fürs Mitdenken!