Abfrage Temperatursensoren

Der CCU-Jack als REST- und MQTT-Schnittstelle für die CCU und virtuelle Geräte für das IoT

Moderator: Co-Administratoren

Antworten
Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Abfrage Temperatursensoren

Beitrag von Wichtelmann007 » 24.01.2024, 11:36

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" }}

Mathias
Beiträge: 1796
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 262 Mal
Kontaktdaten:

Re: Abfrage Temperatursensoren

Beitrag von Mathias » 24.01.2024, 20:00

Wie sind denn die MQTT-Nachrichten aufgebaut. Mit einem beliebigen MQTT-Client (z.B. MQTT-Explorer) können diese betrachtet werden.

Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Re: Abfrage Temperatursensoren

Beitrag von Wichtelmann007 » 24.01.2024, 22:04

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}

Mathias
Beiträge: 1796
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 262 Mal
Kontaktdaten:

Re: Abfrage Temperatursensoren

Beitrag von Mathias » 25.01.2024, 20:51

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}}

Antworten

Zurück zu „CCU-Jack“