Seite 2 von 2

Re: Transformation von MQTT Strings in Number

Verfasst: 20. Feb 2026 22:21
von udo1toni
Das ist ja noch nicht mal auf meinem Mist gewachsen. Ich habe lediglich verifiziert, dass die gewünschte Konfiguration (bei korrekter Semantik) sehr wohl wie gewünscht funktioniert.
Bis auf das Intersection Symbol steht eigentlich alles schon im ersten Posting, und Harka hatte bereits auf das falsche Symbol hingewiesen...
Alles nicht meins :)

Re: Transformation von MQTT Strings in Number

Verfasst: 21. Feb 2026 13:34
von Boris
Habe Udos Variante mal 1:1 kopiert (Topic natürlich angepasst) und es kommt immer noch eine NULL zurück. Ich verzweifel langsam.
Habe folgendes gecheckt:
  • jsonpath und/oder map Transformation nicht installiert
JSONPATH transformation 5.0.0
MAP transformation 5.0.0
  • Datei zigbeeBattery.map in falschem Ordner oder unter falschem Namen angelegt ($OPENHAB_CONF/transform/, Groß/Kleinschreibung beachten!)
Ist korrekt. Wird auch in OH UI angezeigt.
  • Falscher Aufbau der map-Datei (z.B. Leerzeichen zu Beginn der Zeile - links vom Gleichheitszeichen muss der exakte String angegeben sein)
low=20
medium=60
high=100
-=0
  • Falsches Verknüpfungszeichen. Das ∩ gibt es in der Windows Zeichentabelle unter dem Namen "Durchschnitt" (Übersetzungsfehler in Windows, im englischen heißt es korrekt "Intersection", also "Schnittmenge"). Am einfachsten kopiert man das Symbol aus dem Hilfstext in der WebUI (Channel -> show advanced -> incoming value transformations -> Hilfetext, letztes Zeichen
Hatte das ja jetzt aus dem Text hier raus kopiert.
  • Leerzeichen um das Intersection Symbol sind meines Wissens nicht gestattet
OK, ist aber jetzt auch keins mehr... auch wenn schlecht lesbar.

Kann es an der älteren Version liegen? Habe Udos Tipp umgesetzt, und die Signatur angepasst.

Re: Transformation von MQTT Strings in Number

Verfasst: 21. Feb 2026 14:11
von Harka
Moin,
OH 4.2 und Transformationen auf 5.0 kommt mir zumindest seltsam vor :?:
Wenn es nur um die Anzeige geht, habe ich noch einen anderen Lösungsansatz - die stateDescription. Hier als Beispiel im DSL-Format wie ich das bei meinem Präsenzmelder getestet habe.

Code: Alles auswählen

stateDescription=" " [options="none=0,small=1,large=2,static=4"] }

Re: Transformation von MQTT Strings in Number

Verfasst: 21. Feb 2026 19:05
von udo1toni
Gerade wenn die Major Version nicht übereinstimmt, sollte man stutzig werden.

Mein Tipp wäre ein Update, aber: openHAB5 -> 64 Bit only, falls Dein System noch auf 32 Bit läuft, kannst Du nur neu installieren. Die Konfiguration kannst Du natürlich vorher sichern und anschließend wieder einspielen. stable ist die 5.1.2.
Man sollte grundsätzlich vermeiden, Addons mit einer von openHAB Core abweichenden Major Version zu installieren.
Gewöhnlich sollte openHAB die "richtige" Version installieren, Ich könnte mir vorstellen, dass Du mittels apt openhab-addons upgedatet hast, openhab selbst aber nicht.

Wie oben erwähnt, funktioniert die Konfiguration bei mir einwandfrei, auch unter openHAB4.2.2. Es spricht also viel dafür, dass tatsächlich die Versionsdifferenz ursächlich ist.

Ach so...
Du könntest auch zunächst mittels

Code: Alles auswählen

sudo systemctl stop openhab.service
sudo openhab-cli clean-cache
sudo systemctl start openhab.service
versuchen, ob nach dem Restart die richtige Version installiert wird.

Re: Transformation von MQTT Strings in Number

Verfasst: 22. Feb 2026 07:28
von Harka
Falls Du die "Reperatur" so auf die Schnelle nicht machen willst/kannst bietet Dir openHAB noch andere Lösungswege. Die Transformation kann auch per Script erfolgen. Mit Javascript (Add-on Store/Automation/JavaScript Scripting) ginge das hiermit:

Code: Alles auswählen

(function(data) {
  var iFinder = ['low', 'medium', 'high'].indexOf(data) + 1;
  return ([0, 20, 60, 100][(iFinder)]);
})(input)
Das ganze könnte dann so aussehen

Code: Alles auswählen

transformationPattern="JSONPATH:$.battery_state∩JS(zigbeeBattery.js)"

Re: Transformation von MQTT Strings in Number

Verfasst: 23. Feb 2026 17:50
von Boris
So, nach einigen Tagen Pause habe ich nochmal ein bisschen rumgespielt. Ich habe jetzt keine Ahnung woran es wirklich gelegen hat, aber die Version von Udo funktioniert jetzt einwandfrei. Ich glaube ich habe anfangs um das intersection Zeichen Leerzeichen gemacht, um den Quelltext lesbarer zu gestalten. Nach dieser Korrektur hat es möglicherweise noch an Paralleländerungen gelegen, dass es nicht gleich funktioniert hat.
Wie auch immer, das Thema ist gelöst.
BTW.: Ich verstehe auch nicht wirklich, warum ich auf einmal die 5.0.0 AddOns habe. Selbst nach expliziter Installation der Version 4.2.2 in der Konsole, wird mir im UI immer noch 5.0.0 angezeigt.
Welche Konfigurationsdateien muss ich denn retten, wenn ich auf OH5 gehen will und nichts neu machen möchte?
Vielen Dank für die konstruktive Hilfe euch allen.

Re: Transformation von MQTT Strings in Number

Verfasst: 24. Feb 2026 01:42
von udo1toni
Für die reine openHAB-Seite musst Du lediglich in der Shell ein Backup anfertigen:

Code: Alles auswählen

sudo openhab-cli backup
Der Befehl fertigt ein Backup ausschließlich der Konfiguration an. Alternativ:

Code: Alles auswählen

sudo openhab-cli backup --full
Dieser Befehl fertigt ein vollständiges Backup an - Konfiguration, Cache und intern Persistence (rrd4j und mapDB)

Ein Full Backup sollte eigentlich nur auf identische Versionen zurückgespielt werden, allerdings kann man mit sudo openhab-cli clean-cache den Cache leeren lassen (dabei wird die Persistence nicht gelöscht...). Dadurch werden die Addons beim nächsten Start erneut geladen, womit das Full Backup auch versionsübergreifend genutzt werden kann.

Einspielen des Backups über

Code: Alles auswählen

sudo openhab-cli restore /pfad/zur/zip-datei
selbstverständlich muss für den Restore openHAB angehalten sein.

Re: Transformation von MQTT Strings in Number

Verfasst: 24. Feb 2026 13:38
von Boris
Perfekt! Vielen Dank euch allen.