Autor Thema: Fragen zu json2reading  (Gelesen 2741 mal)

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4181
  • ... wer sät, der erntet ...
Fragen zu json2reading
« am: 03 Dezember 2021, 12:52:44 »
Hallo,

keine Ahnung welcher Forumbereich der richtige ist, ich kann auch verschieben wenn gewollt.

Beim mitlesen hier beschäftigt mich die Frage ob es mit json2reading möglich ist aus diesem JSON

{"area": 1, "zone": 51, "type": 54, "type_f": "{D_TYPE_54}", "name": "Innen", "tag": "", "cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1", "tamper": "", "tamper_ok": "1", "bypass": 0, "rssi": "{WEB_MSG_STRONG} 6", "resp_mode": [0,0,0,0,0,0], "ammeter": "0", "ver": "", "bypass_tamper": 0, "sid": "ZS:a47a01", "su": 1, "alarm_status": "", "status_ex": "0", "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_TS_DEGREE} 21.36 {WEB_MSG_RH_HUMIDITY} 37"}
den rssi Wert ohne dem String in geschweiften Klammern oder noch verzweigter die Temperatur.-/Feuchtigkeitswerte aus status ohne den Stings in Klammern in einzelnen/separaten Readings zu erhalten ?

Das was ich bisher verstanden habe:

{my $json= '{"area": 1, "zone": 51, "type": 54, "type_f": "{D_TYPE_54}", "name": "Innen", "tag": "", "cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1", "tamper": "", "tamper_ok": "1", "bypass": 0, "rssi": "{WEB_MSG_STRONG} 6", "resp_mode": [0,0,0,0,0,0], "ammeter": "0", "ver": "", "bypass_tamper": 0, "sid": "ZS:a47a01", "su": 1, "alarm_status": "", "status_ex": "0", "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_TS_DEGREE} 21.36 {WEB_MSG_RH_HUMIDITY} 37"}';; json2reading($defs{Device1},$json,"",undef,"","battery_ok|area|rssi|^status\$");;'done'}
schreibt mir diese Readings:

setstate Device1 2021-12-03 12:42:33 area 1
setstate Device1 2021-12-03 12:42:33 battery_ok 1
setstate Device1 2021-12-03 12:42:33 rssi {WEB_MSG_STRONG} 6
setstate Device1 2021-12-03 12:42:33 status {WEB_MSG_TS_DEGREE} 21.36 {WEB_MSG_RH_HUMIDITY} 37

Oder ist j2r schlicht für solche Fälle nicht gedacht ?

Gruß

Thomas

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18102
  • Stoppt den Unicode-Irrsinn!
Antw:Fragen zu json2reading
« Antwort #1 am: 03 Dezember 2021, 13:17:56 »
Oder ist j2r schlicht für solche Fälle nicht gedacht ?

Dazu muss man verstehen, wie JSON aufgebaut ist.
Einfach erklärt: Jedes einzelne JSON-Element besteht aus seinem Wertenamen und dem zugehörigen Wert, getrennt durch einen Doppelpunkt

"rssi": "{WEB_MSG_STRONG} 6",
json2reading zerlegt dieses Element also in seine zwei Bestandteile

Name: rssi
Wert: {WEB_MSG_STRONG} 6

und arbeitet somit 100% korrekt.

Jeder andere JSON Parser würde exakt das gleiche Ergebnis liefern.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4181
  • ... wer sät, der erntet ...
Antw:Fragen zu json2reading
« Antwort #2 am: 03 Dezember 2021, 20:00:31 »
Soweit ist mir das bisher auch klar, mittlerweile, trotzdem Danke.

Ich hab ja nur mitgelesen und kurz gegrübelt, vlt. wollt ich im Hinterkopf (zu der Zeit noch unbewusst) nur ausschliessen das es durch welchen Parameter auch immer und wie, doch vlt. möglich ist nur numerische Werte zu "parsen".

edit:
trotzdem bleibt dann das Problem hiermit
{WEB_MSG_TS_DEGREE} 21.36 {WEB_MSG_RH_HUMIDITY} 37(spar dir den Kommentar dazu)
« Letzte Änderung: 03 Dezember 2021, 20:10:38 von TomLee »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18102
  • Stoppt den Unicode-Irrsinn!
Antw:Fragen zu json2reading
« Antwort #3 am: 03 Dezember 2021, 21:18:00 »
(spar dir den Kommentar dazu)

gehts noch?  :o
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4181
  • ... wer sät, der erntet ...
Antw:Fragen zu json2reading
« Antwort #4 am: 03 Dezember 2021, 21:28:39 »
Das war in keinsterweise böswillig gemeint, für mich nur Spass am Rande.

Mir war es wichtig hervorzuheben das ich verstanden habe das dieses Problem weiterhin besteht, auch wenn ein "filtern" von numerischen Werten möglich wäre, du das auch so siehst und mir dann vorwerfen könntest das ich diesen Fall übersehen hätte.

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4181
  • ... wer sät, der erntet ...
Antw:Fragen zu json2reading
« Antwort #5 am: 25 Januar 2022, 18:30:21 »
Hallo Rudolf oder jeder andere der weiter helfen kann,

mit hashKeyRename hab ich mich ehrlich gesagt bisher nicht beschäftigt, deine Antworten dazu bisher einfach nur so hingenommen.

Hier der Fall hat mich jetzt gepackt und ich will jetzt wissen wie es geht.

Was mach ich hier jetzt nicht richtig, was hab noch nicht verstanden:

defmod Demo at +*01:00 {HttpUtils_NonblockingGet({ url=>"https://mymuell.jumomind.com/webservice.php?idx=termins&city_id=66005&area_id=2734&ws=3",callback=>sub($$$){json2reading($defs{Demo},$_[2],undef,undef,'hashKeyRename($ret, "^([0-9]+)__...._([0-9]+)_cal_garbage_type:(.*)","^([0-9]+)__...._([0-9]+)_cal_date_normal")','cal_garbage_type|cal_date_normal')}})}
edit:

Wer das nachvollziehen möchte der macht erstmal einfach ein:

defmod Demo_at_j2r_nonjsnmap_sum at +*01:00 {HttpUtils_NonblockingGet({ url=>"https://mymuell.jumomind.com/webservice.php?idx=termins&city_id=66005&area_id=2734&ws=3",callback=>sub($$$){json2reading($defs{Demo_at_j2r_nonjsnmap_sum},$_[2],undef,undef,undef,undef)}})}
damit mein ich ist es erstmal einfacher zu verstehen auf welche Readings ich aus bin, ob die jetzt sinnvoll sind darum gehts nicht, es geht mir darum hashKeyRename zu verstehen.

edit2:

Denke hab da einen Denkfehler und es hat sich erübrigt
« Letzte Änderung: 25 Januar 2022, 21:43:36 von TomLee »