FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Joshibaer am 21 Juni 2017, 12:14:35

Titel: Zahl aus dem Reading auslesen {"idx":5,"nvalue":0,"svalue":"3191"}
Beitrag von: Joshibaer am 21 Juni 2017, 12:14:35
Ich habe gerade ein Problem die Daten , meine AD Wandlers die per MQTT geliefert werden aus zu lesen.

Die Daten vom AD-Wanler ADS1115 werden in dieser Form übermittelt

Client mosqsub/463-raspberrypi received PUBLISH (d0, q0, r0, m0, '/hooks/devices/6/SensorData/Analog', ... (37 bytes))
/hooks/devices/6/SensorData/Analog {"idx":6,"nvalue":0,"svalue":"-1.00"}

Also steht hinterher im Reading

Analog       {"idx":5,"nvalue":0,"svalue":"3191"}
Ich brauche aber nur die 3191 als Zahl.

Wie kann ich mir die Zahl aus dem Reading hohlen ?

Danke schonmal im Vorraus.
Titel: Antw:Zahl aus dem Reading auslesen {"idx":5,"nvalue":0,"svalue":"3191"}
Beitrag von: dev0 am 21 Juni 2017, 14:27:37
Der einfachste Weg wäre das expandJSON Modul.
Titel: Antw:Zahl aus dem Reading auslesen {"idx":5,"nvalue":0,"svalue":"3191"}
Beitrag von: Joshibaer am 21 Juni 2017, 17:05:01
Danke , das war ja einfacher als ich dachte, mit

# Device ADS1115-0 definieren
define Pooldruckio MQTT_DEVICE ADS1115
attr Pooldruckio IODev MyBroker
attr Pooldruckio group DruckSensoren
attr Pooldruckio room MQTT,Garten,Teich
attr Pooldruckio subscribeReading_Analog /hooks/devices/5/SensorData/Analog

define Pooldruck0 expandJSON Pooldruckio.*:.*:.{.*}
attr Pooldruck0 room MQTT

#Pooldruck

define Pooldruck readingsProxy Pooldruckio:svalue
attr Pooldruck alias Poolpumpendruck
attr Pooldruck alias Poolpumpendruck stateFormat {sprintf("%.0f bar ",ReadingsVal("Pooldruckio","svalue",0)) }
attr Pooldruck room MQTT

habe ich jetzt die Zahl als State umd muss sie nur noch umrechnen.
Titel: Antw:Zahl aus dem Reading auslesen {"idx":5,"nvalue":0,"svalue":"3191"}
Beitrag von: Joshibaer am 23 Juni 2017, 08:46:25
Kleine Berichtigung.
attr Pooldruck alias Poolpumpendruck stateFormat {sprintf("%.0f bar ",ReadingsVal("Pooldruckio","svalue",0)) }
funktioniert nicht , ich habe den Sensor einfach im Node MCU Device kalibriert.
Titel: Antw:Zahl aus dem Reading auslesen {"idx":5,"nvalue":0,"svalue":"3191"}
Beitrag von: Reinhart am 11 Juli 2017, 21:51:06
schau doch mal in den Readings wie expandJson es angelegt hat und setze den richtigen Namen dann ein.
Normalerweise ist vorne noch der Sensortyp mit dabei, wie im Beispiel des angehängten Bildes.

ReadingsVal($name,"xxxxxx",0
LG
Reinhart