Rob69 hat geschrieben: 18. Feb 2025 19:22
Topic
Hoffentlich nicht.
Die %-Zeichen solltest Du nicht im Topic verwenden, denn Tasmota nutzt die Prozentzeichen, um Umgebungsvariablen zu kennzeichnen (z.B. das FullTopic lautet gewöhnlich
%prefix%/%topic%/ und dabei wird %topic% automatisch durch den Inhalt des Topic-Feldes ersetzt. %prefix% wiederum kann die Werte cmnd, stat oder tele annehmen (wenn die Firmware original Tasmota ist), wobei der cmnd-Zweig für Befehle verwendet wird, der stat-Zweig liefert direkte Rückmeldungen, bezogen auf den letzten Befehl und tele liefert zyklisch Sensorwerte, hier z.B. die Zählerstände. Wie oft so eine zyklische Meldung abgesetzt wird, kann man über ein Command konfigurieren, 5 Minuten ist lediglich der Default Wert (gerade beim Stromzähler kann eine bessere zeitliche Auflösung ja interessant sein, mein Zähler liefert z.B. im Sekundentakt seine Daten, da wäre es doof, wenn nur jeder 360te Wert übertragen wird...)
Dass Dein JSONPATH falsch ist, hat @PeterA ja schon geschrieben.
So sollte Dein Thing eigentlich aussehen:
Code: Alles auswählen
Bridge mqtt:broker:mosquitto "Mosquitto Broker" [
host="192.168.178.---",
secure=false,
username="--------",
password="--------"
] {
Thing topic hichi "Easymeter" {
Channels:
Type number : power "Leistung" [ stateTopic="Tasmota/Stromzähler/SENSOR", transformationPattern="JSONPATH:$.SML.Watt_Summe", unit="W" ]
Type number : sumIn "Summe Bezug" [ stateTopic="Tasmota/Stromzähler/SENSOR", transformationPattern="JSONPATH:$.SML.Verbrauch_Summe", unit="kWh" ]
Type number : sumOut "Summe Einspeisung" [ stateTopic="Tasmota/Stromzähler/SENSOR", transformationPattern="JSONPATH:$.SML.Einspeisung_Summe", unit="kWh" ]
}
}
Und so die zugehörigen Items:
Code: Alles auswählen
Number:Power EasymeterWatt "aktuelle Leistung" { channel="mqtt:topic:mosquitto:hichi:power", unit="W", stateDescription=""[pattern="%.3f kW"]}
Number:Energy EasymeterEnergyIn "Summe Bezug" { channel="mqtt:topic:mosquitto:hichi:sumIn", unit="Wh", stateDescription=""[pattern="%.1f kWh"]}
Number:Energy EasymeterEnergyOut "Summe Einspeisung" { channel="mqtt:topic:mosquitto:hichi:sumOut", unit="Wh", stateDescription=""[pattern="%.1f kWh"]}
Ganz grundsätzlich: Private IP-Adressen kannst Du in meterhohen Lettern außen auf Dein Haus drauf schreiben, spielt keine Rolle, denn diese werden im Internet nicht geroutet. Wenn aber jemand schon in Deinem LAN ist (nur dort kann er etwas mit der IP-Adresse anfangen), reicht ein nmap-Befehl, um alle Geräte innerhalb des Subnetzes zu finden, die IP-Adresse ist dabei dann nur noch eine kleine Detailinformation.
Die öffentliche IP-Adresse solltest Du hingegen tunlichst unter Verschluss halten, es ist also gerade umgekehrt zum verwendeten Namen (weil der sich halt nicht auf die Sicherheit bezieht, sondern darauf, wie die IP verwendet wird).
Ich habe oben das Generic Thing als "Child" der Bridge definiert. Wenn man per Text konfiguriert, ist es naheliegend, das so zu tun, denn es erspart Tipparbeit und vermeidet fehlerhafte Channel UIDs (
mqtt:topic:Tasmota wird zwar nicht angemeckert, es fehlt aber der Bezug auf die Bridge, und das kann an verschiedenen Stellen zu Problemen führen).
Es handelt sich bei allen gelieferten Werten um reine Zahlen, entsprechend sollte man auch number Channel verwenden, und am besten nutzt man Units of Measurement, das erleichtert ebenfalls das Leben. Die Unit im Channel muss der vom Gerät gelieferten Einheit entsprechen, die unit im Item definiert, in welcher Größe das Item den Wert hält (bei den Summen z.B. nicht kWh, sondern Wh, das ist aber nicht zwingend, es muss nur eine Einheit für Energie sein, es ginge z.B. auch Joule oder gar Kalorie). Die unit beim Item "darf" nur einmal gesetzt werden, in dem Sinne, dass man beim Ändern der unit Probleme mit historischen Daten bekommt, denn die unit wird nicht mit persistiert. Entsprechend werden dann historische Werte evtl. in der falschen Einheit ausgegeben. Die unit bestimmt auch, in welcher Einheit Charts gezeichnet werden, also Obacht.
Das Sstate Description Pattern gibt an, wie der Wert in der UI dargestellt wird. Dieses Feld darf beliebig oft angepasst werden, wichtig ist nur, dass die angegebene Einheit zum gewählten QuantityType gehört, also z.B. kW (Kilowatt) für Power und MJ (Megajoule) für Energy.
Wenn Du die Items per UI anlegst, kannst Du die Felder unit und ...pattern über die Metadaten setzen.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte