Mqtt-Topic einzelne Zeichen auslesen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Jimbo
Beiträge: 14
Registriert: 23. Feb 2022 18:21
Answers: 0

Mqtt-Topic einzelne Zeichen auslesen

Beitrag von Jimbo »

Guten Abend,
ich komme bei folgender Aufgabenstellung leider nicht weiter.

Über meinen Mqtt-broker lese ich folgendes Topic mittels Generic MQTT Thing als String ein. Nun habe ich aber alle crtl-Werte in einem Item. Mit Hilfe von REGEX bzw. JasonPath schaffe ich es nicht die einzelnen Werte als Item anzulegen. :oops: :(
mqtt_1.PNG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Harka
Beiträge: 523
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Mqtt-Topic einzelne Zeichen auslesen

Beitrag von Harka »

Moin,
RegEx steht mit mir auf Kriegsfuß daher gehe ich lieber über Javascript (JavaScript Scripting installiert?). Hiermit könntest den Wert von "ctrl" in ein JSON umwandeln und auf die einzelnen Werte zugreifen.

Code: Alles auswählen

   configuration:
      stateTopic: test/ctrl
      transformationPattern:
        - JS:|var obj = {}; input.split(',').forEach(pair => { var [key, value] = pair.split('=').map(s => s.trim()); obj[key] = Number(value); }); obj.p2;
Für ein Versuch musst noch bei stateTropic "test" ersetzen und solltest dann mit obj.p2 den Wert von p2 (2) erhalten.

E: wenn es funktioniert kannst Du auch mit einem Channel für alle benötigten Items arbeiten

Code: Alles auswählen

JS:|var obj = {}; input.split(',').forEach(pair => { var [key, value]
          = pair.split('=').map(s => s.trim());  obj[key] = Number(value);
          });JSON.stringify(obj);
An die Werte kommst Du da indem Du im Profil der Item-Links
JSONPATH wählst und im Feld JSONPath_Ausdruck z.B. $.p2 einträgst.
Zuletzt geändert von Harka am 15. Sep 2025 16:41, insgesamt 2-mal geändert.

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

Re: Mqtt-Topic einzelne Zeichen auslesen

Beitrag von udo1toni »

Wie immer: Bitte nach Möglichkeit keine Bilder posten. Bilder sind in 99% der Fälle die schlechteste Möglichkeit, einen Sachverhalt darzustellen.
Der Screenshot scheint aus dem MQTT Explorer zu stemmen. Dort reicht es, das gewünschte Topic auszuwählen (hier also hame_energgy/HMJ-2/App/device/b42f0398ac11/ctrl) und dann rechts in der "Value" Karte auf das Copy to Clipboard Symbol zu klicken, um den Status des Topics in die Zwischenablage zu übernehmen. Diesen Text kann man dann wunderbar hier im Forum als Code markiert posten (In der Vollansicht des Foreneditors aud die Schaltfläche </> klicken).
openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

Antworten