MQTT als Json payload in Readings auflösen

Begonnen von o.l.i, 22 Juli 2020, 17:39:15

Vorheriges Thema - Nächstes Thema

o.l.i

Hallo,

ich habe ein Shelly Plug S mit Tasmota geflashed und kann es erfolgreich an und ausschalten.
Jetzt möchte ich auch die aktuelle Leistung und Gesamtleistung welches als Jason Payload ins FHEM kommt auslesen und jeweils ein Reading dazu erstellen / aktualsisieren lassen.

Dies kann man ja mittels "defmod ej3 expandJSON" machen. Aber ich komme damit nicht klar und benötige etwas Support.

Hier ist mein MQTT payload welchen ich im FHEM von der Shelly erhalte:
2020.07.22 17:29:11.343 5 : publish received for Smarthome/KE_Waschmaschine/tele/SENSOR, {"Time":"2020-07-22T17:29:11","ENERGY":{"TotalStartTime":"2020-07-22T09:06:06","Total":0.012,"Yesterday":0.000,"Today":0.012,"Power":160,"ApparentPower":178,"ReactivePower":78,"Factor":0.90,"Voltage":238,"Current":0.750}}

-> Davon soll "Power" & "Total" als Reading im FHEM verwendet werden.

rudolfkoenig

Ich wuerde statt den veralteten/komplizierten MQTT+MQTT_DEVICE das neuere MQTT2_CLIENT+MQTT2_DEVICE verwenden, und ein passendes attrTemplate anwenden.

Noch einfacher fuer Anfaenger ist MQTT2_SERVER+MQTT2_DEVICE, da hier noch mehr automatisch angelegt/konfiguriert wird.

o.l.i

Ich habe einige MQTT Geräte im EInsatz welche alle gut und zuverlässig funktionieren. Wenn ich MQTT2_CLIENT+MQTT2_DEVICE verwende, dann reiße ich mir u.U. wieder neue Baustellen auf.

Desshalb liegt meine Präferenz eher auf das aktuelle System.

o.l.i

Hat jemand einen Lösungsvorschlag?
So wie ich es verstehe sollte es mit "defmod ej3 expandJSON"  möglich sein.

Ein Anstoß dazu wäre gut

MadMax-FHEM

Wie oft willst du das noch fragen!? ;)

https://forum.fhem.de/index.php/topic,113068.msg1073904.html#msg1073904

Noch solltest du den löschen können...
...wenn jemand drauf geantwortet hat...
...schwierig...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

#5
Zitat von: o.l.i am 23 Juli 2020, 10:01:38
So wie ich es verstehe sollte es mit "defmod ej3 expandJSON"  möglich sein.
Klar. Im Prinzip.

Aber man sollte die Syntax dann auch so gestalten, wie es in der commandref steht: https://fhem.de/commandref_modular.html#expandJSON

define <name> expandJSON <source_regex> [<target_regex>]
Beispiele für source_regex sind aaO. zu finden, ebenso ein kleines Beispiel für eine target_regex, die (fast) deinen Anwendungsfall abdecken...

Leseempfehlung: https://wiki.fhem.de/wiki/Dokumentationsstruktur

(Und da du Anfänger zu sein scheinst: Rudi hat recht, wenn er dir den Umstieg auf MQTT2_.* empfiehlt. Da passieren einige Dinge (halb-) automatisch, für die man sonst ein eher vertiefteres Verständnis der Materie mitbringen sollte. Just my2ct.)

EDIT: Für den Fall, dass der Umstieg oder zumindest das Antesten in Frage kommt, hier der "Master"-Thread mit vielen Fragen zum Thema Umstellung und Vorgehen dazu: https://forum.fhem.de/index.php/topic,103762.0.html
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

o.l.i

OK, vielen Dank für die Links.
Ich habe mich überzeugen lassen den MQTT2 Server auf Port 1884 zu aktivieren, da ich damit meine MQTT Geräte nach und nach umziehen kann.
Ich habe mein Shelly PLug S mit Tasmota per autocreate angelegt. Jetzt sollte ich noch ein Template dazu definieren, Meine Fragen dazu:

-Es schein bereits zu funktionieren. Die Leistungsdaten werden in den Readings aktualisiert. Wozu benötig eich jetzt noch das Template?
-Ich habe das Shelly Plug S mit Tasmota und habe in der Tasmota das Modul BlitzWolf SHP definiert, um es zum Laufen zu bekommen. Welches Template würde da jetzt in Frage kommen?

Oliver

Beta-User

Vorab mal Danke für die Rückmeldung und die Bestätigung, dass MQTT2_.* für Einsteiger einfacher ist.

Also:

- das (passende) attrTemplate sorgt z.B. dafür, dass die eingehenden Werte ggf. in "bessere" Readings umgeleitet werden (v.a. POWER nach state), legt gleich userReadings an, usw.. Du kannst ja vorher anschauen, was genau passiert, das erscheint ja unterhalb des "set"-Dialogfelds, wenn man die attrTemplates durchscrollt, da ist auch etwas Text, der in etwa Aufschluss darüber geben sollte, für was es gedacht ist; für eine Gesamtliste zum Durchsuchen: "?". Verbesserungsvorschläge nehme ich entgegen, aber scheinbar erübrigt sich das für die meisten User, sobald sie etwas Erfahrung mit den attrTemplates haben...?

- Es ist mMn. nicht notwendig, die Shelly-firmware gegen Tasmota zu tauschen, von Nachahmung würde ich ausdrücklich abraten (auch wenn die teils auch nicht perfekt ist, da auch "geschwätzig")

- Es sollte mMn. auch ein besseres "blakadder"-(Tasmota-)Template geben, aber dazu bitte die Tasmota-Seiten konsultieren. Sobald ein ESP8266 mit Tasmota geflasht ist, ist es aus FHEM-attrTemplate-Sicht einfach ein "tasmota"-attrTemplate, welches, richtet sich nach den "Fähigkeiten" (hier wohl tasmota_POW)

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

o.l.i

Danke für deinen Support! Ich habe es soweit zum Laufen bekommen, dass ich kein Template zugewiesen habe aber aus dem  tasmota_POW Template ein paar Dinge übernommen habe.

der Grund warum ich die Shelly Software gegen Tasmota tausche ist einfach nur weil ich Tasmota (OpenSource mit Community) mehr Vertraue als Shelly (Firma). Ich setze auch keine "Cloud enabled" Geräte in meinem Smarthome ein. Auch wenn ich das bei der Shelly deaktivieren kann ...
Jedes Cloud Gerät bohrt ein Loch in meine Firewall ...

Oliver

Beta-User

Vielleicht noch eine Anmerkung zu attrTemplate:

Grade die Tasmota-attrTemplates sind etwas verschachtelt, und auf den ersten Blick kann man da ggf. was m.E. wichtiges übersehen: Man kann die firmware nämlich so einstellen, dass sie on/off statt ON/OFF sendet. Die Kleinschreibung ist an vielen Stellen einfacher mit anderen Geräten zu kombinieren, also falls du das nicht gemacht hast...



Was Freie Software angeht (es gibt da einen kleinen Unterschied zu "nur" open source, über den ich auch erst vor kurzem bewußt gestolpert bin), kann ich das im Prinzip nachvollziehen. Aber zum einen ist die Fa. eine, die im europ. Rechtsraum ansässig ist (und daher Datenschutzaspekte anders zu beachten hat wie Anbieter aus anderen Rechtsräumen), und zum anderen ist das flashen auch ein versicherungsrechtliches Thema, daher würde ich _in diesem speziellen Fall_ weiter bei der Empfehlung bleiben, die firmware nicht zu tauschen und einfach nur die Cloud abzuschalten (das passiert automatisch, wenn man die "Experteneinstellung" (...!) MQTT wählt, und man kann auch den Rest an "Heimtelefonaten" "ausknipsen").
Aber das muß letztlich jeder für sich entscheiden, mir ging's nur darum, dass du es nicht nach dem Motto machst "hat irgendein Videoblogger so vorgebetet".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

o.l.i