mehrere DS18B20 an einem GPIO - Zurodnung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
amuelkx
Beiträge: 3
Registriert: 18. Jul 2020 17:27
Answers: 0

mehrere DS18B20 an einem GPIO - Zurodnung

Beitrag von amuelkx »

Hallo zusammen,

Ich habe an einem GPIO 2 DS18B20 hängen, die Funktion ist erst mal da ich bekomme im MQTT
20:30:43.869 MQT: Oxilife/tele/SENSOR = {"Time":"2022-02-15T20:30:43","DS18B20-1":{"Id":"01211201713A","Temperature":5.4},"DS18B20-2":{"Id":"012111E9465D","Temperature":3.9}

Was ich gelesen habe ?! ist die Zurordnung DS18B20-1 und -2 zu den Ids nicht zwingend fix ..

Wie bekomme ich nun die Temperatur zu Id1 und zu Id2 immer in je ein eindeutiges Thing bzw. Item. Eine Filterung mit [ stateTopic="Oxilife/tele/SENSOR", transformationPattern="JSONPATH:$.DS18B20-1.Temperature"] geht ja nur auf die -1 bzw. -2 aber nicht auf die ID ...

Wer kann mir hier helfen, habe auch bei Dr. Google nix gefunden ...

Danke und Grüße

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: mehrere DS18B20 an einem GPIO - Zurodnung

Beitrag von udo1toni »

Der Trick ist, einen Filter zu nutzen. Erst mal das JSON Objekt, etwas schöner formatiert:

Code: Alles auswählen

{
    "Time": "2022-02-15T20:30:43",
    "DS18B20-1": {
        "Id": "01211201713A",
        "Temperature": 5.4
    },
    "DS18B20-2": {
        "Id": "012111E9465D",
        "Temperature": 3.9
    }
Wir wollen die Temperatur, aber zugeordnet zu einer Id.

Code: Alles auswählen

JSONPATH:$.[?(@.Id=='01211201713A')].Temperature

Code: Alles auswählen

JSONPATH:$.[?(@.Id=='012111E9465D')].Temperature
Das Statement sucht diejenigen Knoten, bei denen im Tag Id die jeweilige ID steht, nutzt diese Knoten und liefert jeweils die Werte der Temperatur Tags. Da die ID eindeutig ist, kommt nur jeweils ein Wert zurück.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

amuelkx
Beiträge: 3
Registriert: 18. Jul 2020 17:27
Answers: 0

Re: mehrere DS18B20 an einem GPIO - Zurodnung

Beitrag von amuelkx »

Habe in einem anderen Beitrag wo du auch beigetragen hast gesehen dass beim JSONpaTH:$.. zwei Punkte hin müssen - dann funktioniert es

JSONPATH:$..[?(@.Id=='012111E9465D')].Temperature

Danke !

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: mehrere DS18B20 an einem GPIO - Zurodnung

Beitrag von udo1toni »

eigentlich sollte der zweite Punkt nicht notwendig sein, aber sei's drum... eventuell irgendeine Änderung mit der aktuellen Version...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten