Seite 1 von 1

Abfrage Temperatursensoren

Verfasst: 24.01.2024, 11:36
von Wichtelmann007
Ich habe einen Wemos D1 Mini mit mehreren DS18B20 Sensoren.
In CCU-Jack habe ich dazu ein virtuelles Gerät installiert.

Soweit so gut.
In meiner RM werden die Werte dann wie folgt abgerufen (und später per Script in Programmen verwertet).
Siehe Screenshot.
Screen Shot 01-24-24 at 11.31 AM.JPG
Die Werte in ANALOG_INPUT_TRANSMITTER|TOPIC sind

Code: Alles auswählen

tele/tasmota_hzg/SENSOR
Die Werte in ANALOG_INPUT_TRANSMITTER|PATTERN lauten

Code: Alles auswählen

{{ index (parseJSON .) "DS18B20-4" "Temperature" }}
Das funktionert soweit einwandfrei.

Aber dennoch gibts damit ein Problem. Sobald ich neue Sensoren anschließe ändern sich die Sensoren-Nummern, war bisher Sensor DS18B20-7 zB am Vorlauf, so ist er danach zB Aussen.
Nur die ID bleibt natürlich beim jeweiligen Sensor, aber mit dieser Frage ich ja (derzeit) nicht ab.
Kann ich also in der Abfrage anstatt mit der Nummer DS18B20-7 auch irgendwie die Sensor ID angeben? Das würde mir viel Ändeurngsarbeit ersparen...
Wie müsste diese Abfrage dann lauten?
So habe ich es mal probiert, das klappt jedoch nicht:

Code: Alles auswählen

{{ index (parseJSON .)"0822113BE65C" "Temperature" }}

Re: Abfrage Temperatursensoren

Verfasst: 24.01.2024, 20:00
von Mathias
Wie sind denn die MQTT-Nachrichten aufgebaut. Mit einem beliebigen MQTT-Client (z.B. MQTT-Explorer) können diese betrachtet werden.

Re: Abfrage Temperatursensoren

Verfasst: 24.01.2024, 22:04
von Wichtelmann007
Was meinst Du konkret?
Hab den MQTT-Explorer, welche Info brauchst Du?

Den Datensatz?

Code: Alles auswählen

{"sn":{"Time":"2024-01-24T10:05:35","DS18B20-1":{"Id":"082211090FEB","Temperature":39.3},"DS18B20-2":{"Id":"0822112C8A94","Temperature":41.3},"DS18B20-3":{"Id":"0822113BE65C","Temperature":10.1},"DS18B20-4":{"Id":"0822113FABA1","Temperature":48.6},"DS18B20-5":{"Id":"3DE1D4432441","Temperature":41.1},"DS18B20-6":{"Id":"3DE1D44363A5","Temperature":40.8},"DS18B20-7":{"Id":"3DE1D443E76C","Temperature":36.9},"TempUnit":"C"},"ver":1}

Re: Abfrage Temperatursensoren

Verfasst: 25.01.2024, 20:51
von Mathias
Das ist schon etwas komplizierter. Aber folgendes PATTERN sollte die Temperatur 41,3 für die Seriennr. 0822112C8A94 heraus holen:

Code: Alles auswählen

{{range $k,$v:=(parseJSON .).sn}}{{if ge (len $k) 7}}{{if eq (slice $k 0 7) "DS18B20"}}{{if eq $v.Id "0822112C8A94"}}{{$v.Temperature}}{{end}}{{end}}{{end}}{{end}}
Einfach die Seriennummer anpassen um eine andere Temperatur zu lesen.

Nachtrag: Etwas kürzer:

Code: Alles auswählen

{{range $k,$v:=(parseJSON .).sn}}{{if contains $k "DS18B20"}}{{if eq $v.Id "0822112C8A94"}}{{$v.Temperature}}{{end}}{{end}}{{end}}