Seite 1 von 1

formatBeforePublish funktioniert nicht

Verfasst: 17. Jun 2023 03:27
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

Re: formatBeforePublish funktioniert nicht

Verfasst: 17. Jun 2023 09:07
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.

Re: formatBeforePublish funktioniert nicht

Verfasst: 26. Jun 2023 17:21
von Taifun2300
Danke! Number:Energy war das Zauberwort :-D