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.
Der einfachste Weg wäre das expandJSON Modul.
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.
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.
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