Re: Mqtt Werte vom ADS1115 auslesen
Verfasst: 1. Apr 2019 23:23
Nach dem $ fehlt da noch ein Punkt. Im Online Evaluator sieht es eigentlich gut aus:
falls das - aus welchen Gründen auch immer - nicht funktioniert, könntest Du versuchen, den Teil mit den vier Sensorwerten in ein String Item zu schreiben. Anschließend könntest Du innerhalb einer Rule bei Änderung die vier Werte extrahieren.
Natürlich sollte man ein paar Prüfungen einbauen, dass da auch wirklich gültige Werte raus kommen.
Ich hab das jetzt nicht wirklich ausprobiert
könnte also sein, dass da noch Fehler lauern.
Code: Alles auswählen
Type number :ads1115a0 "A0" [stateTopic="tele/Wemos1/SENSOR", transformationPattern="JSONPATH:$.ADS1115[0].A0" ]
Type number :ads1115a0 "A1" [stateTopic="tele/Wemos1/SENSOR", transformationPattern="JSONPATH:$.ADS1115[0].A1" ]
Type number :ads1115a0 "A2" [stateTopic="tele/Wemos1/SENSOR", transformationPattern="JSONPATH:$.ADS1115[0].A2" ]
Type number :ads1115a0 "A3" [stateTopic="tele/Wemos1/SENSOR", transformationPattern="JSONPATH:$.ADS1115[0].A3" ]Code: Alles auswählen
Type string :ads1115 "Messwerte roh" [stateTopic="tele/Wemos1/SENSOR", transformationPattern="JSONPATH:$.ADS1115[0]" ]Code: Alles auswählen
String ads1115json { channel="mqtt:topic:broker:wemos1:ads1115" }
Number ads1115a0 "A0 [%d]"
Number ads1115a1 "A1 [%d]"
Number ads1115a2 "A2 [%d]"
Number ads1115a3 "A3 [%d]"Code: Alles auswählen
rule "wemos messwerte aufteilen"
when
Item ads1115json changed
then
var myJson = ads1115json.state.toString.subString(2,ads1115json.state.toString.size - 2)
ads1115a0.postUpdate(int::parseInt(transform("JSONPATH","$.A0",myJson)))
ads1115a1.postUpdate(int::parseInt(transform("JSONPATH","$.A1",myJson)))
ads1115a2.postUpdate(int::parseInt(transform("JSONPATH","$.A2",myJson)))
ads1115a3.postUpdate(int::parseInt(transform("JSONPATH","$.A3",myJson)))
endIch hab das jetzt nicht wirklich ausprobiert