MQTT2 Device - SetList

Begonnen von gloob, 10 Mai 2019, 22:21:34

Vorheriges Thema - Nächstes Thema

Beta-User

(Sorry für weiteres OT)
Zitat von: Klausi am 12 Juni 2019, 11:27:17
Der Hinweis, über einen Event-Handler die Daten vom OBIS-Modul zum MQTT2 Server zu bringen war der
entscheidende Hinweis. Wie Du schon sagtest, ist dann auch kein MQTT2 Device notwendig.
Danke für die Rückmeldung.

ZitatIch habe es letztendlich mit DOIF gelöst.
defmod di_Q3D DOIF (["SWU_Q3D:power_"])\
(\
   set MQTT_Server publish fhem/SWU_Q3D/p_L1 [SWU_Q3D:power_L1];;\
   set MQTT_Server publish fhem/SWU_Q3D/p_L2 [SWU_Q3D:power_L2];;\
   set MQTT_Server publish fhem/SWU_Q3D/p_L3 [SWU_Q3D:power_L3];;\
   set MQTT_Server publish fhem/SWU_Q3D/p_sum [SWU_Q3D:power];;\
   set MQTT_Server publish fhem/SWU_Q3D/p_ges [SWU_Q3D:total_consumption];;\
)
attr di_Q3D do always
attr di_Q3D room DOIF

Ich kenne mich mit diesem Modul nicht aus und werde in diesem Leben vermutlich auch nicht mehr verstehen, warum man das für solche einfachen Aufgaben nutzt, aber m.E. ist da ein Fehler drin, weil (vermutlich!?) das publish aller Werte jeweils durchgeführt wird, wenn sich einer der power_-Werte ändert.

Wenn, dann wäre das "suboptimal".

Als notify dürfte sowas reichen:
defmod n_Q3D notify SWU_Q3D:.* set MQTT_Server publish fhem/SWU_Q3D/$EVTPART0 $EVTPART1
Das gibt dann allerdings topics, die wie die Readings heißen, dafür wird nur gesendet, was sich geändert hat...
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

Klausi

Nochmals kurzes Feedback

ich habe Dein notify eingegeben und es funktioniert, aber es werden mir auch topics gemeldet, die ich garnicht brauche
0.0.96.1.255.255 = 1ESY1160287766 <---
1.0.0.0.0.255 = 11-53-43-18-2 <---
1.0.96.5.5.255 = 80 <---
Verbrauch = 1.624 <---
power = 88.19
power_G = 88.19
power_L1 = 14.56
power_L2 = 60.78
power_L3 = 12.85
power_total = 9328.1730318
total_consumption = 9328.1730318


Du hast völlig recht mit dem Deinen Einwand, dass auf jede Änderung der "power_-Werte" getriggert wird. Deswegen habe ich nun den Event-Trigger auf
(["SWU_Q3D:total_consumption"])

gesetzt.

lg Klausi

Beta-User

 :)
...man kann auch bei einem notify den Trigger einschränken...

(Das hätte den Vorteil, dass man es auch als einfachen "Generalersatz" für MQTT_GENERIC_BRIDGE nutzen kann ;) ):
defmod n_publish_MQTT notify SWU_Q3D:(power|total_).* set MQTT_Server publish fhem/$NAME/$EVTPART0 $EVTPART1
Du mußt dann nur noch die Regex anfassen, z.B. so:
(Fenster_sensorx:|SWU_Q3D:(power|total_)).*
Dann wird auch jede triggernde Reading-Änderung von Fenster_sensorx "ver-mqtt".
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

GabbaGundolf

Hi zusammen,
ich hoffe, ich darf hier den alten Beitrag noch erweitern. Mein Thema passt meiner Ansicht nach ganz gut in die Reihe, weil das Problem auch mit dem gut beschriebenen setList-Attribut bei MQTT2-Devices zusammenhängt:
Ich habe in FHEM ein MQTT2_DEVICE angelegt(, welches einen Arduino mit PWM-Dimmermodul schalten soll). Die Kommunikation über MQTT funktioniert zwischen dem FHEM-Device und dem Arduino einwandfrei. Schalten kann ich den Dimmer über das FHEM-Webfrontend. Jedoch wird mir der aktuelle Status nicht korrekt im FHEM-Webfrontend angezeigt. Hier steht nur unter Internals:
STATE STATE

und unter Readings:
state     STATE      2020-05-12 15:33:48

Ich hänge schon seit Stunden an dem wahrscheinlich kleinen Problem und habe schon die verschiedensten Varianten ausprobiert. Aber ich stehe wohl auf dem Schlauch. Hat jemand eine Idee?

Hier die Definition des Device:

defmod Waermelampe MQTT2_DEVICE
attr Waermelampe IODev myBroker
attr Waermelampe alias Wärmelampe
attr Waermelampe group Hühner
attr Waermelampe icon sani_heating
attr Waermelampe room Garten
attr Waermelampe setList STATE:0,25,50,75,100 /Garten/Huehnerstall/HausWaermelampe $EVTPART1


Vielen Dank im Voraus!

Gruß André

Beta-User

Der Zusammenhang ist aber wirklich auch nur sehr lose; mMn. wäre auch das besser in einem eigenen Thread aufgehoben gewesen (es ist kein Vergehen, einen Thread zu öffnen, es ist eher unhöflich, einen uralt-Thread aufzuwärmen, selbst, wenn der noch nicht als [gelöst] gekennzeichnet ist( ;) ))...

Versuch's mal mit Kleinschreibung (STATE sollte man m.E. besser für das Internal freihalten):
attr Waermelampe setList state:0,25,50,75,100 /Garten/Huehnerstall/HausWaermelampe $EVTPART1
(Die bereits vorhandenen Anmerkungen zu einem ggf. passenden widget (würde hier "CT" vorschlagen) gelten auch hier).

Wenn das obige nicht klappt, bitte einen eigenen Thread aufmachen.
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