FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: Icinger am 04 September 2018, 16:37:53

Titel: expandJSON und true/false
Beitrag von: Icinger am 04 September 2018, 16:37:53
Hi,

habe hier grade dass "Problem", dass in einer MQTT-Payload

{"battery":"100.00","voltage":3155,"smoke":false}
steht.

Battery und Voltage werden brav vom expandJSON aufgedröselt, allerdings "smoke" wird einfach ignoriert.
lt. JSON-Tester ist das so aber valid.

Wenn ich jetzt das false/true in Anführungszeichen stelle, dann klappt das auch.
{"battery":"100.00","voltage":3155,"smoke":"false"}

Jemand eine Idee/Lösung?

lg, Stefan
Titel: Antw:expandJSON und true/false
Beitrag von: CoolTux am 04 September 2018, 17:14:25
Das liegt daran das decode_json() aus true und false ohne Anführungszeichen 1 und 0 macht.
Titel: Antw:expandJSON und true/false
Beitrag von: dev0 am 06 September 2018, 18:00:38
Nicht ganz, ich hatte (eigentlich) extra dafür eine Abfrage eingebaut, kann mich aber im Moment nicht mehr an Details erinnern. Siehe hier (https://forum.fhem.de/index.php/topic,82734l).

Fehlt vielleicht einfach nur das Perl Modul 'JSON::XS::Boolean'?

Edit: Sorry für die verzögerte Anwort, aber ich wurde nicht (per Mail) über diesen neuen Thread mit "expandJSON" im Subject informiert. Ich hoffe, dass das Ab- und wieder Anbestellen der neuen Threads in diesem Board nun wieder funktioniert. Ich habe den Thread eher durch Zufall entdeckt...
Titel: Antw:expandJSON und true/false
Beitrag von: Icinger am 09 September 2018, 18:19:36
Warning: Cannot install JSON::XS::Boolean, don't know what it is.
Try the command

    i /JSON::XS::Boolean/

to find objects with matching identifiers.

cpan[2]> cpan[2]> i /JSON::XS::Boolean/
No objects found of any type for argument /JSON::XS::Boolean/


Das ist ja eigentlich nur ein Dummy, lt. metacpan
Titel: Antw:expandJSON und true/false
Beitrag von: hdo am 09 September 2018, 22:35:53
Hmm interessant. Ich habe seit gestern auch expanJSON im Einsatz (zigbee2mqtt) und mir ist auch aufgefallen, dass Boolean-Werte in JSON verschluckt werden.

Laut Changelog wurde das bereits seit Februar behoben, aber ich habe defintiv die aktuelle Version.

Evtl. gibt es noch weitere Dependencies? In den Logs war nichts zu sehen.
Titel: Antw:expandJSON und true/false
Beitrag von: hdo am 10 September 2018, 08:19:25
Mea Culpa!

Nach ein wenig Spielerei habe ich das Problem bei mir gefunden, es lag am JSON Modul.

Ich habe es mit 'sudo cpan install JSON:PP' installiert aber es musste mit 'sudo cpan install JSON' installiert werden.

Danach funktionierte expandJSON auch wie erwartet mit Boolean Werten ;-)
Titel: Antw:expandJSON und true/false
Beitrag von: dev0 am 10 September 2018, 10:32:22
Laut meinen Installationsnotizen habe ich die Perl Modul JSON und JSON::XS via CPAN Repository installiert...
Damit funktioniert diese Abfrage problemlos:
if (ref($ref) eq "JSON::PP::Boolean") {...}
Titel: Antw:expandJSON und true/false
Beitrag von: hdo am 10 September 2018, 10:48:05
Danke für die Info ;-)

Bei mir hat es mit der Installation von JSON::XS nicht funktioniert.

Erst als ich danach JSON installiert hatte ging es. Offenbar wird dabei irgendetwas konfiguriert,
denn ich habe bei mir sowohl JSON:PP als auch JSON:XS drin.
Titel: Antw:expandJSON und true/false
Beitrag von: Icinger am 11 September 2018, 07:44:29
Benötigt scheinbar BEIDE Module.....

Hatte erst nur JSON installiert, ging nicht --> danach noch JSON::XS installiert, seither klappt es.
Also eigentlich genau umgekehrt zu hdo's Version.

Könntest du evtl. in der CommandRef so erwähnen.

lg, Stefan
Titel: Antw:expandJSON und true/false
Beitrag von: dev0 am 11 September 2018, 08:49:44
Ist erledigt.