Seite 1 von 1

mehrere DS18B20 an einem GPIO - Zurodnung

Verfasst: 15. Feb 2022 20:35
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

Re: mehrere DS18B20 an einem GPIO - Zurodnung

Verfasst: 15. Feb 2022 21:28
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.

Re: mehrere DS18B20 an einem GPIO - Zurodnung

Verfasst: 15. Feb 2022 22:40
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 !

Re: mehrere DS18B20 an einem GPIO - Zurodnung

Verfasst: 16. Feb 2022 01:08
von udo1toni
eigentlich sollte der zweite Punkt nicht notwendig sein, aber sei's drum... eventuell irgendeine Änderung mit der aktuellen Version...