httpmod XML vs. JSON

Begonnen von Wolfgang Hochweller, 27 April 2021, 10:32:54

Vorheriges Thema - Nächstes Thema

Wolfgang Hochweller

Super, danke, teste ich.

In allen Beschreibungen tauchen sowohl 'in'  als auch 'contains' auf, die, soweit ich sehe, auf substrings testen sollten.

Sowas :


$.properties.timeseries[?(@.time contains '16:00:00')].time


funktioniert bei Jayway,aber nicht bei Goessner

Bei


$.properties.timeseries[?(/16:00:00/ .test (@.time ))].time


ist es genau umgekehrt.

Man muss also genau aufpassen, welchen 'Auswerter' man verwendet.

herrmannj

ja, das ist so. Schau mal hier auf das Kleingedruckte: https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html

Die möglichen Filter hängen von der engine ab. Vielleicht mag jemand die für JsonMod im Wiki dokumentieren.

Danke, vg
joerg

ph1959de

Zitat von: herrmannj am 29 April 2021, 09:51:08
Die möglichen Filter hängen von der engine ab. Vielleicht mag jemand die für JsonMod im Wiki dokumentieren.

Ich hätte ja schon mit Doku im Wiki begonnen ... wenn denn JSONMod mal in der Maintainer.txt aufgetaucht wäre  ;)
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Wolfgang Hochweller

Getestet und fuer gut befunden  :)
Super, danke !

Das hier :


multi(jsonPath("\$.properties.timeseries.[?(\@.time =~ '12:00:00Z')]"), concat('temp_',count),property('data.instant.details.air_temperature')) );


liefert mir jetzt :


   READINGS:
     2021-04-29 10:27:10   temp_0          12.3
     2021-04-29 10:27:10   temp_1          10.5
     2021-04-29 10:27:10   temp_2          9.1
     2021-04-29 10:27:10   temp_3          7.8
     2021-04-29 10:27:10   temp_4          6.9
     2021-04-29 10:27:10   temp_5          8.5
     2021-04-29 10:27:10   temp_6          7.5
     2021-04-29 10:27:10   temp_7          7.5
     2021-04-29 10:27:10   temp_8          8.8


Genau das brauche ich fuer meine Widgets in FTUI.

herrmannj

#19
Zitat von: ph1959de am 29 April 2021, 10:14:10
Ich hätte ja schon mit Doku im Wiki begonnen ... wenn denn JSONMod mal in der Maintainer.txt aufgetaucht wäre  ;)
Ok, ok ... :D &Danke!!

herrmannj


yersinia

#21
Zitat von: herrmannj am 29 April 2021, 00:47:37@Yersinia: falls Du mitliest, Du hattest einige Male einen ungeklärten Bug auf OS oder perl Ebene. JSON::XS wäre eine mögliche Ursache. In dieser Version habe ich JSON::XS durch Cpanel::JSON::XS ersetzt. Das müsste installiert sein, ansonsten wird das pure perl fallback verwendet.
Sorry, konnte gestern nicht testen - habe aber deine Version jetzt eingespielt (via normalen FHEM Update). Erstmal funktioniert es anscheinend weiter.
Die SEGV Probleme konnte ich lösen indem ich ein (!) JsonMod Device gelöscht habe, seitdem ist das nicht mehr aufgetreten. Ich werde es beobachten.
Weiterhin läuft es, ohne Cpanel::JSON::XS bewusst installiert zu haben, bisher auch unauffällig. Wäre eigtl JSON::MaybeXS eine Option für dich gewesen?

[sOT]Irgendwie überzeugt mich CPAN noch nicht, neben (auf raspi OS) apt noch mit cpan rumhantieren um alle FHEM Module zum Laufen zu bewegen, ich weiß nicht. Vor allem muss ich die Aktualsierungen dann auch noch neben apt über cpan(minus) abfragen. ::)
EDIT: es gibt allerdings ein libcpanel-json-xs-perl Paket - und (EDIT II) das scheint auch zu funktionieren.[sOT]
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

herrmannj

schau sicherheitshalber nochmal auf die version, fhem update verteilt das erst an einer bestimmten Zeit. (8:00, 10:00? dont know...)

JSON::XS vs Cpanel:JSON::XS: beides schnelle C Implementierungen. JSON::XS ist bekannt für teilweise zickiges (bug) Verhalten, Cpanel ist der neuere und verbesserte fork.  JSON::MaybeXS ist nur ein loader und wenn man Pech hat wird dann eben doch JSON::XS verwendet. Macht keinen Sinn.

Da JSON die Kernkompetenz von JsonMod ist, bringt das Modul eine schnelle (pure perl) JSON Implementierung mit. Wenn Cpanel::JSON::XS vorhanden ist, dann wird das verwendet und falls nicht die pure perl Implementierung. In diesem Fall findest Du eine Nachricht im Log (... JSON ist pure perl, consider installing Cpanel::JSON::XS)

libcpanel-json-xs-perl, -> der empfohlene Weg auf Systemen die das haben. (sudo apt-get install libcpanel-json-xs-perl)


yersinia

Zitat von: herrmannj am 30 April 2021, 09:16:33schau sicherheitshalber nochmal auf die version, fhem update verteilt das erst an einer bestimmten Zeit. (8:00, 10:00? dont know...)
seit 7:45 heute morgen:
98_JsonMod.pm 24360 2021-04-29 21:17:23Z herrmannj
8)

Ja, ich hatte ich gestern auch gelesen, dass Cpanel::JSON::XS wesentlich schneller als JSON:XS oder JSON:PP sein soll. Opbjektiv ist dies auch so. Schön.

Zitat von: herrmannj am 30 April 2021, 09:16:33libcpanel-json-xs-perl, -> der empfohlene Weg auf Systemen die das haben. (sudo apt-get install libcpanel-json-xs-perl)
Genau das! :D Läuft auch.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

ph1959de

Seite JsonMod im Wiki ist angelegt und mit ersten Informationen (insbesondere auch Liste der Anwendungsbeispiele) gefüllt.
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"