Mqtt Werte vom ADS1115 auslesen
-
- Beiträge: 4
- Registriert: 11. Mär 2019 11:16
Mqtt Werte vom ADS1115 auslesen
Hallo Zusammen,
ich hab einen Wemos D1 mit Tasmota und einen ADS1115 welcher mir Werte von mehreren Feuchtigkeitssensoren ausliest.
Das Ergebnis von der Tasmota Konsole sieht so aus:
MQT: tele/Wemos1/SENSOR = {"Time":"2019-03-31T12:53:10","BH1750":{"Illuminance":3592},"ADS1115":[{"A0":3151,"A1":12654,"A2":16312,"A3":2360}],"SHT3X-0x45":{"Temperature":23.3,"Humidity":67.8},"TempUnit":"C"}
Die Werte für Temperatur und so weiter sind mir klar und funktionieren. Aber wie bekomme ich die Analogwerte A0 bis A3 richtig angezeigt?
Bei der Json Transformierung habe ich es soweit mit JSONPATH($ADS1115[0].A1) hinbekommen, dass er mir alle vier Werte anzeigt. Speziell einen Wert bekomme ich nicht hin.
Im Log steht dann "ADWandler changed from {A0=2774, A1=12218, A2=14933, A3=2230} to {A0=3638, A1=12230, A2=15262, A3=2193}"
Bin dankbar für Ideen und Lösungen.
Gruß frankydee
ich hab einen Wemos D1 mit Tasmota und einen ADS1115 welcher mir Werte von mehreren Feuchtigkeitssensoren ausliest.
Das Ergebnis von der Tasmota Konsole sieht so aus:
MQT: tele/Wemos1/SENSOR = {"Time":"2019-03-31T12:53:10","BH1750":{"Illuminance":3592},"ADS1115":[{"A0":3151,"A1":12654,"A2":16312,"A3":2360}],"SHT3X-0x45":{"Temperature":23.3,"Humidity":67.8},"TempUnit":"C"}
Die Werte für Temperatur und so weiter sind mir klar und funktionieren. Aber wie bekomme ich die Analogwerte A0 bis A3 richtig angezeigt?
Bei der Json Transformierung habe ich es soweit mit JSONPATH($ADS1115[0].A1) hinbekommen, dass er mir alle vier Werte anzeigt. Speziell einen Wert bekomme ich nicht hin.
Im Log steht dann "ADWandler changed from {A0=2774, A1=12218, A2=14933, A3=2230} to {A0=3638, A1=12230, A2=15262, A3=2193}"
Bin dankbar für Ideen und Lösungen.
Gruß frankydee
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Mqtt Werte vom ADS1115 auslesen
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)))
end
Ich hab das jetzt nicht wirklich ausprobiert

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 4
- Registriert: 11. Mär 2019 11:16
Re: Mqtt Werte vom ADS1115 auslesen
Danke für die Antwort.
Den Punkt beim Jsnon String hab ich vergessen zu schreiben. Der war in der switch.items drin. Was mich wundert ist, wenn ich den Json Transformer Tester nehme und ich den String eintrage, ich auch immer den passenden einzelnen Wert für A0, A1 usw. bekomme. Nur in Openhab funktioniert es nicht.
Ich habe jetzt deine Vorlage genommen für die Umwandlung des Strings. Er meckert bei bei der Zeile"var myJson = ads1115json.state.toString,subString(2,ads1115json.state.toString.size - 2)" und zwar wegen dem "," zwischen toString und subString.
Configuration model 'default.rules' has errors, therefore ignoring it: [5,44]: mismatched input ',' expecting 'end'
Was bedeutet das genau?
Gruß frankydee

Den Punkt beim Jsnon String hab ich vergessen zu schreiben. Der war in der switch.items drin. Was mich wundert ist, wenn ich den Json Transformer Tester nehme und ich den String eintrage, ich auch immer den passenden einzelnen Wert für A0, A1 usw. bekomme. Nur in Openhab funktioniert es nicht.
Ich habe jetzt deine Vorlage genommen für die Umwandlung des Strings. Er meckert bei bei der Zeile"var myJson = ads1115json.state.toString,subString(2,ads1115json.state.toString.size - 2)" und zwar wegen dem "," zwischen toString und subString.
Configuration model 'default.rules' has errors, therefore ignoring it: [5,44]: mismatched input ',' expecting 'end'
Was bedeutet das genau?
Gruß frankydee
-
- Beiträge: 137
- Registriert: 12. Jan 2019 19:56
Re: Mqtt Werte vom ADS1115 auslesen
Ersetze mal das Komma durch einen Punkt.
openHAB 2.5 (M1) in Docker auf NAS: Synology DS418play
mit Homematic, Hue, TP-Link, AVM Fritz!, FritzboxTR064, Nuki, Amazon Echo, Sonos, Harmony, zigbee2mqtt, Denon/Marantz, ...
mit Homematic, Hue, TP-Link, AVM Fritz!, FritzboxTR064, Nuki, Amazon Echo, Sonos, Harmony, zigbee2mqtt, Denon/Marantz, ...
-
- Beiträge: 4
- Registriert: 11. Mär 2019 11:16
Re: Mqtt Werte vom ADS1115 auslesen
Das mit den Punkt war die Fehlerquelle. Leider werden immer noch keine Werte angezeigt. Auf der Sitemap bleibt nur ein Strich.
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Mqtt Werte vom ADS1115 auslesen
Jep, Tippfehler meinerseites (das Komma). Ich korrigiere das mal im Originalposting.
Dann ginge es jetzt an Fehleranalyse.
Ein logInfo() erzeugt eine Ausgabe on openhab.log. Hier mal als Beispiel:
Das wäre erst mal, um zu schauen, ob denn die Werte korrekt abgetrennt werden.
Dann ginge es jetzt an Fehleranalyse.
Ein logInfo() erzeugt eine Ausgabe on openhab.log. Hier mal als Beispiel:
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)
logInfo("wemos","Teilstring: {}",myJson)
logInfo("wemos","Teilstring A0: {}",transform("JSONPATH","$.A0",myJson))
logInfo("wemos","Teilstring A1: {}",transform("JSONPATH","$.A1",myJson))
logInfo("wemos","Teilstring A2: {}",transform("JSONPATH","$.A2",myJson))
logInfo("wemos","Teilstring A3: {}",transform("JSONPATH","$.A3",myJson))
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)))
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 4
- Registriert: 11. Mär 2019 11:16
Re: Mqtt Werte vom ADS1115 auslesen
Puh, ich glaube ich hab da was Missverstanden. Ich hab bisher meine Items immer über die switch.items angelegt und die PaperUI nicht genutzt. Nur zur Kontrolle.
Wenn ich den ADS1115 über die PaperUI und die Json Transformation anlege, bekomme ich die Werte tatsächlich einzeln angelegt! Aber wie bekomme ich diese in die Sitemap? Den Weg bin ich noch nie gegangen.
Edit: habe es geschafft. PaperUI erzeugt andere Item Namen.
Danke für die Hilfe!
Wenn ich den ADS1115 über die PaperUI und die Json Transformation anlege, bekomme ich die Werte tatsächlich einzeln angelegt! Aber wie bekomme ich diese in die Sitemap? Den Weg bin ich noch nie gegangen.
Edit: habe es geschafft. PaperUI erzeugt andere Item Namen.
Danke für die Hilfe!
- sihui
- Beiträge: 1827
- Registriert: 11. Apr 2018 19:03
Re: Mqtt Werte vom ADS1115 auslesen
Hier am Beispiel eines String im MQTT Bindung:
Das Thing aufrufen, den Channel Teil kopieren (geht auch mit dem Symbol rechts daneben), ein String Item in der Items Datei kreieren, den Channel linken:
Code: Alles auswählen
String NTP_String <time> { channel="ntp:ntp:local:string" }
Code: Alles auswählen
Text item=NTP_String label="NTP Datum/Zeit [%s]"
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Mqtt Werte vom ADS1115 auslesen
Ich denke eher nicht.
Grundsätzlich ist es egal, ob man Bridge, Thing oder Item über Paper UI oder über Textfiles anlegt. Man könnte all diese Elemente auch über die Karaf Konsole oder die Rest API erzeugen.
Eine Ausnahme gibt es doch, man kann openHAB1 Bindings nur in einer *.items Datei mit einem Item verbinden.
Paper UI bietet keine Möglichkeit, ein Item zu taggen, auch das geht also am ehesten über eine *.items Datei.
Wenn ein über eine Datei angelegtes Things (bzw. deren Channel) sich anders verhält, stimmt "einfach" etwas mit der textlichen Konfiguration nicht.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet