formatBeforePublish funktioniert nicht

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Thalon
Beiträge: 1
Registriert: 28. Mai 2023 00:00
Answers: 0

formatBeforePublish funktioniert nicht

Beitrag von Thalon »

Hi,

ich habe ein Shelly 1PM um meinen Wechselrichter zu schalten.
Ich habe ein Thing in OpenHab 3.4 konfiguriert und ich kann den Shelly schalten. Die Werte Energie Total, Energie Yesterday usw. werden mir auf der Seite auch angezeigt.
Ich möchte einfach nach den Werten noch 'Watt' angezeigt bekommen.
Dafür hab ich bei formatBeforePublish %s,Watt eigetragen.
Aber leider wird Watt nicht angezeigt nur die blanken Zahlen.

Code: Alles auswählen

  - id: solarpower_total
    channelTypeUID: mqtt:string
    label: Solar Power Total
    description: ""
    configuration:
      formatBeforePublish: "%s,Watt"
      stateTopic: tele/tasmotasolar/SENSOR
      transformationPattern: JSONPATH:$..ENERGY.Total
Das ist der Code z.B. für Power Total

Was mache ich falsch?

Thalon

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

Re: formatBeforePublish funktioniert nicht

Beitrag von udo1toni »

Der Parameter heißt formatBeforePublish und gehört zu einem mqtt Channel. Dieser Parameter bezieht sich darauf, etwas zu formatieren, was von openHAB an ein Topic gesendet (gepublisht) wird.

Du möchtest stattdessen einen empfangenen Wert in openHAB formatieren. In openHAB geht es immer und ausschließlich um Items (also abgesehen davon, wenn es um die Kommunikation mit externen Schnittstellen geht).

Du musst also das entsprechende Item formatieren, nicht den Channel. Über die UI geht das über die Metadaten des Items, und zwar über den Teil State Description und dort das Pattern.

Allerdings wäre es eleganter, das Problem anders zu lösen, und zwar tatsächlich in Teilen über den Channel.
Dazu musst Du allerdings den Channel als number Channel konfigurieren, nicht als string.
Wenn Du das tust, gibt es unter den Advanced Options einen Parameter unit. Dort trägst Du Wh ein.
[{b]Ws[/b] ist die Einheit für Energie (zumindest solange es um Strom geht) und der Shelly liefert Wattstunden, also Wh.

Zusätzlich musst Du das Item statt als String Item als Number:Energy Item anlegen.
Nun wird der Wert automatisch in kWh angezeigt, und zwar mit Einheit.

Power und Energy sind zwei unterschiedliche Größen, die Du nicht verwechseln solltest (auch wenn das sehr häufig passiert), Energy ist Power mal Zeit, also 1 Wh wäre z.B. 1 Watt über 1 Stunde, oder 10 Watt über 6 Minuten, oder 100 Watt über 36 Sekunden.

Und wenn Du die beiden Stellen betrachtest, kannst Du auch den großen Vorteil von UoM (Units of Measurement) erkennen (das ist, was wir hier verwenden). Der Channel liefert Wh, ausgegeben werden aber kWh. Du könntest aber auch MJ (Megajoule) ausgeben lassen, wenn Du das wolltest (in der State Description bei Patttern einfach %.1f MJ eintragen). openHAB wird die Umrechnung vornehmen, in jede beliebige (passende) Einheit. kWh ist halt die gebräuchliche Größe an dieser Stelle, weshalb diese Größe vorausgewählt ist.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Taifun2300
Beiträge: 19
Registriert: 27. Dez 2022 09:19
Answers: 0

Re: formatBeforePublish funktioniert nicht

Beitrag von Taifun2300 »

Danke! Number:Energy war das Zauberwort :-D
openHAB 4.0.3 im Docker auf Debian 11, Anbindung an Raspmatic, Hue, FHEM, Fritzbox, Buderus KM200, Worx, Bilnk, Alexa

Antworten