Jeder Channel bietet grundsätzlich zwei Richtungen, kommend und gehend, oder auf englisch incomming und outgoing.
Hier hast Du ausschließlich kommende Daten.
Leider fehlt noch das JSON, ohne das wird's nichts werden

, wobei Du natürlich auch die jeweiligen Zeilen aus den Profiles kopieren und hier einfügen kannst.
Aber als Beispiel:
Code: Alles auswählen
UID: mqtt:topic:5b701a1f9e:c8e9525e6b
label: Sensor Keller
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:5b701a1f9e
channels:
- id: SensorKeller
channelTypeUID: mqtt:string
label: Sensor Keller json
description: ""
configuration:
stateTopic: v3/b37058d500100000@ttn/devices/whg-sensor-keller/up
- id: Sensor_Keller_Temperatur
channelTypeUID: mqtt:number
label: Sensor Keller Temperatur
description: ""
configuration:
stateTopic: v3/b37058d500100000@ttn/devices/whg-sensor-keller/up
transformationPattern: REGEX:(.*temperature.*)∩JSONPATH:$.blah.bli.blub.temperature
unit: d°C
transformationPattern ist die "incomming Transformation".
REGEX ist die erste Transformation. der Wert in Klammern wird weitergegeben, hier also der gesamte String, allerdings nur, sofern er die Zeichenfolge "temperature" enthält. das Zeichen
∩ heißt im englischen
Intersection und ist in Windows in der Zeichentabelle falsch mit
Durchschnitt übersetzt worden (korrekt wäre
Schnittmenge).
Du kannst das Zeichen aber auch einfach aus dem zugehörigen Hilfetext in der UI kopieren

Das Ergebnis der ersten Transformation wird nun also an die zweite Transformation weitergereicht, das ist entweder das komplette JSON (sofern eben das Schlüsselwort auftaucht) oder eine leere Zeichenkette.
JSONPATH sucht dann den passenden Wert aus dem JSON Objekt heraus, im Beispiel im Pfad blah.bli.blub.temperature (den echten Path hast Du ja schon im Profile stehen).
Da der Channel vom Typ number ist, steht außerdem noch der Parameter unit zur Verfügung, hier mit d°C (Dezigrad Celsius), der Wert 217 entspräche damit 21,7 °C. Wird der Wert anders dargestellt, kannst Du die Einheit natürlich auch anders angeben, also z.B. °F, K oder eben °C

Das dazu passende Item wäre dann vom Typ Number:Temperature und auch dort solltest Du in den Metadaten den Parameter unit gezielt auf etwas Sinnvolles setzen, z.B. °C. In dieser Einheit speichert openHAB dann den Wert im Item (und somit auch in den verknüpften Persistences).
Die unit im Channel ist abhängig von der Hardware, bzw. wie der Wert angeliefert wird. Die unit im Item kannst Du komplett frei wählen, soweit sie zur gelieferten Einheit passt, hier also eine Temperatur-Einheit, egal welche. Aber Obacht! Du darfst diese unit nur einmal setzen! (Du kannst sie natürlich auch später ändern, aber das hat dann Auswirkungen...) Insofern ist es sinnvoll, hier nicht zu experimentieren (allenfalls mit Items, die Du später wieder entsorgst).
Wie der Wert später angezeigt wird, kannst Du dann - unabhängig von den beiden bisherigen Angaben - über die Metadaten des Items (State Description - Pattern) festlegen, z.B. so:
Bedeutet: Der Wert (vertreten durch %) mit einer Nachkommastelle (.1), als Float (f) in der Einheit °C.
Dabei ist es, wie erwähnt, gleichgültig, in welcher Einheit der Wert aus dem Channel kommt oder auch im Item gespeichert wird, openHAB rechnet vollautomatisch um.
Die State Description wirkt übrigens
nicht in der Itemliste, dort wird immer der "Rohwert" angezeigt (und das mit voller Absicht!), ansonsten wird aber für die Anzeige immer die State Description herangezogen, soweit das möglich ist (Nicht möglich wäre es z.B. für ungültige Werte UNDEF oder NULL).
Im Unterschied zu den beiden units von oben kannst Du die State Description jederzeit und beliebig oft ändern.
Ganz wichtig (weil es schon falsch gemacht wurde...) ist, dass nun im Link das Standard Profile (= keinerlei Beeinflussung) gesetzt wird, denn nun kommt ja kein JSON Objekt mehr an, sondern ein diskreter einheitenbehafteter Wert.
Es versteht sich von selbst, dass neben MQTT und JSONPATH auch REGEX installiert sein muss

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet