Shelly Pro 3EM => Einbindung via MQTT ???

Geflasht oder ungeflasht ...

Moderator: seppy

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

Re: Shelly Pro 3EM => Einbindung via MQTT ???

Beitrag von udo1toni »

sebiLBO hat geschrieben: 30. Aug 2023 22:49 Er speichert ja jetzt durch die falsche Einheit mit Faktor 1000 in der Persistence.
Nein, dann hast Du den unit Parameter im Channel nicht gesetzt. Möglich, dass der unter den Advanced Options versteckt ist, ich sitze gerade nicht vor meinem System um nachzuschauen...

Falls dort kein unit Parameter zu finden ist, solltest Du zunächst versuchen, openHAB auf Version 3.4.5-2 upzudaten, also die letzte openHAB3 Version mit allen Backport Patches. Der unit Parameter stand auf jeden Fall schon unter openHAB3.4.x zur Verfügung, ich bin mir nur bei x nicht sicher, ob nun 3.4.0 oder vielleicht erst 3.4.3?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

chilobo
Beiträge: 19
Registriert: 17. Jan 2021 12:04
Answers: 0

Re: Shelly Pro 3EM => Einbindung via MQTT ???

Beitrag von chilobo »

Ich bekomme das auch nicht hin unter Openhab 4.1.2

Shelly pro 3EM, MQTT-Explorer zeigt an:
"total_act": 5610.91"

Versuch 1:
Einstellungen im Channel:
Unit of Measurement: Wh
Incoming value transformation: JSONPATH:$.total_act
Outgoing value Format: %f

Add link to Item - Create a new Item
Type Number
Dimension Energie (kWh) (da kommt die Einheit im Paket mit, nicht änderbar)
Unit kWh
State Description Pattern %0.f kWh

Anzeige:
5616.94000 Wh im Item selbst
5.61694 kWh im Panel unter Administration
5.61917 kWh in Analyze
Warum zeigen Panel und Item selbst unterschiedliche Werte?

Versuch 2
Wie vor, Item gelöscht und Verknüpfung gelöscht, neues Item wie vor, aber:
alles wir vor, aber:
Unit Wh
State Description Pattern %0.f Wh
Anzeige
5618.8500 Wh im Item selbst
5.61917 kWh im Panel unter Items
5.61917 kWh in Analyze
also keine Änderung ? zu Versuch 1

Versuch 3

Wie vor, Item gelöscht und Verknüpfung gelöscht, neues Item wie vor:
alles wir vor, aber:
Unit Wh
State Description Pattern %0.f kWh
Anzeige
5618.8500 Wh im Item selbst
5.61917 kWh im Panel unter Items
Analyze zeigt 5.6197 kWh an
Also keine Änderung zu Versuch 1 und 2

Es scheint also vollkommen egal zu sein, was man da beim Item unter Unit und State Description pattern als Einheiten verwendet.

Ich habe dann noch einmal versucht, bei der Generierung des Channels Unit of Measurement kWh zu wählen - keine Veränderung.

Ist das
Outgoing value Format: %f
im Channel vielleicht doch falsch?

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

Re: Shelly Pro 3EM => Einbindung via MQTT ???

Beitrag von udo1toni »

Ein Channel hat grundsätzlich zwei Kommunikationsrichtungen.
In mqtt gibt es dafür immer zwei Topics, da die Kommunikation in mqtt grundsätzlich gerichtet ist (d.h. ein Topic ist zum lesen da, ein anderes zum schreiben).
Genauso gibt es Parameter, wie die Daten aufbereitet werden, also die Incoming und Outgoing Value Transformation sowie das
format before publish. Leider ist aus dem format before publish in der UI das Outgoing Value Format geworden, so dass man auch auf die Idee kommen könnte, das hätte etwas mit der Richtung nach openHAB zu tun (das ist nicht der Fall).
Da Du den Zähler nicht setzen willst, musst Du dieses Feld gar nicht berücksichtigen. Ich habe keinen Shelly, ich mutmaße mal, dass es sowieso keine Möglichkeit gibt, den Zähler gezielt zu setzen.

Anzeige in der UI: In der Itemliste wird das State Description Pattern nicht berücksichtigt, hier wird der Wert immer so angezeigt, wie er im Item vorliegt. In der Detailansicht des Items sollte das State Description Pattern verwendet werden. Im Analyzer sollte die Unit verwendet werden, d.h. letztlich der Wert, so wie er in der Itemliste angezeigt wird (denn dieser Wert wird durch die Unit des Items bestimmt).

Dass die Werte im Detail voneinander abweichen, kann ein Rundungsfehler sein. Im Analyze Bereich kommt es auch noch auf den verwendeten Persistence Service an, der eventuell selbst Rundungsfehler mit einbringt.

Dass die Anzeige nicht beeinflusst wird, kann ich nicht bestätigen, es kann aber z.B. gut sein, dass Du jeweils den Browser dazu zwingen musst, die Seite komplett neu zu laden (z.B. Firefox: <Ctrl>+<F5>), ansonsten könnten fehlerhaft Formatierungen aus dem Browser Cache verwendet werden.

Deine Formatierung %0.f ist falsch.
Grundsätzlich ist das Format so definiert: %[Index][Flags][Width][.Precision]Conversion. Die 0 ist kein gültiger Index, aber es gibt ein Flag "0". Das hat allerdings nur Auswirkungen, wenn auch die Width gesetzt ist, und zwar auf einen Integer Wert größer 0. Nach dem . muss zwingend ein Integer Wert stehen, der fehlt aber bei Dir. In der Folge wird die Formatierung eventuell komplett ignoriert. Die Conversion ist zwingend anzugeben, alle anderen Teilstrings sind optional.

Mutmaßlich möchtest Du die Nachkommastellen unterdrücken, das wäre dann %.0f :) Du könntest z.B. auch mit %+05.2f erreichen, dass vor dem Dezimaltrenner immer mindestens fünf Stellen ausgegeben werden und der Wert auf zwei Nachkommastellen gerundet wird. Hat die Zahl weniger als fünf Stellen, wird mit führenden Nullen gefüllt. Außerdem wird das Vorzeichen mit ausgegeben, auch wenn die Zahl positiv ist. Die 0 gehört ebenfalls zu den Flags.
Eine Liste aller möglichen Flags und überhaupt des Formatierunsstrings: https://docs.oracle.com/javase/8/docs/a ... tml#syntax
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

chilobo
Beiträge: 19
Registriert: 17. Jan 2021 12:04
Answers: 0

Re: Shelly Pro 3EM => Einbindung via MQTT ???

Beitrag von chilobo »

Danke - in der Tat lag es am falschen Format im Item.
Ich habe jetzt %.3f kWh eingetragen, dann passt das bei mir.

Antworten