Hallo Zusammen,
ich habe nun einige ESPs am laufen.
Läuft auch alles super. Leider musste ich bei zwei die Software von Wifi-Iot draufspielen.
Dieser schickt nun MQTTs im JSON Format:
{"system":{"hostname":"GARAGE","uptime":312648,"rssi":-80,"freemem":29560},"sensors":},"pwm":{0:0},"gpio":{"2":1,"14":1}}
Wie kann ich FHEM beibringen dies in Readings zu übersetzen?
Danke euch schonmal
Grüße
Nico
Zitat
{"system":{"hostname":"GARAGE","uptime":312648,"rssi":-80,"freemem":29560},"sensors":},"pwm":{0:0},"gpio":{"2":1,"14":1}}
Der gezeigte JSON string ist nicht gültig. Vertippt oder sendet Wifi-Iot wirklich so einen Mist?
Das ist der "status" vom anderen ESP
{"system":{"hostname":"ESP0008C50C","uptime":1280749,"rssi":-76,"freemem":30248},"sensors":},"pwm":{0:255,1:255},"gpio":{"2":1}}
das schickt er so.. ist komplett copy paste
EDIT: auch in der Doku sieht es so aus:
https://wifi-iot.com/p/wiki/87/ru/ (https://wifi-iot.com/p/wiki/87/ru/)
Der String ist kaputt, kannst Du zB. auch hier testen: http://jsonlint.com/
Wenn Du einen validen JSON String hast, dann kannst Du das expandJSON Modul nutzen: https://github.com/ddtlabs/expandJSON/
Ich versuche nachher mal einen "Sensor" anzulegen. Evtl löst dies das Problem
Danke für den ersten Lösungsansatz!
Mit dem Beispiel aus Deinem Link funktioniert es:
defmod d dummy
defmod ej expandJSON d:json:.{.*}
setreading d json {"system":{"hostname":"test","uptime":56858,"rssi":-59,"freemem":13264},"sensors":{"dsw1":28.9,"dsw2":28.8,"dsw3":28.1,"dsw4":25.5,"ping":1},"gpio":{"16":0},"pwm":{"0":120}}
list d
Internals:
...
Readings:
2017-02-21 09:24:45 gpio_16 0
2017-02-21 09:24:45 json {"system":{"hostname":"test","uptime":56858,"rssi":-59,"freemem":13264},"sensors":{"dsw1":28.9,"dsw2":28.8,"dsw3":28.1,"dsw4":25.5,"ping":1},"gpio":{"16":0},"pwm":{"0":120}}
2017-02-21 09:24:45 pwm_0 120
2017-02-21 09:24:45 sensors_dsw1 28.9
2017-02-21 09:24:45 sensors_dsw2 28.8
2017-02-21 09:24:45 sensors_dsw3 28.1
2017-02-21 09:24:45 sensors_dsw4 25.5
2017-02-21 09:24:45 sensors_ping 1
2017-02-21 09:24:45 system_freemem 13264
2017-02-21 09:24:45 system_hostname test
2017-02-21 09:24:45 system_rssi -59
2017-02-21 09:24:45 system_uptime 56858
Habe den Fehler gefunden. Es ist mal ein Sensor angelegt gewesen. Dieser wurde gelöscht aber der MQTT sendet weiterhin. Hat aber keinen Sensor. Daher fehlt
:{"dsw1":28.9,"dsw2":28.8,"dsw3":28.1,"dsw4":25.5,"ping":1}
Dieses macht das ganze dann ungültig. Werde es mal an WIFI-IOT melden damit dies überarbeitet wird.
Danke für die Hilfe