10_MQTT2_DEVICE

Begonnen von P.A.Trick, 24 August 2018, 11:40:27

Vorheriges Thema - Nächstes Thema

P.A.Trick

Ich habe eine Device wie folgt definiert (nur als Test, kein Device vorhanden).

defmod mqtt_dev1 MQTT2_DEVICE
attr mqtt_dev1 IODev mqttserver
attr mqtt_dev1 getList power power mqtt_dev1/cmd/status
attr mqtt_dev1 readingList mqtt_dev1/cmd/power.* power\
mqtt_dev1/cmd/status.* status\

attr mqtt_dev1 setList on mqtt_dev1/cmd/power on\
off mqtt_dev1/cmd/power off
attr mqtt_dev1 stateFormat power
attr mqtt_dev1 verbose 5


Wenn ich nun on oder off drücke wird zum einen der Topic aktualisiert (kann man auch mit einem mosquitto_sub auf dem Broker sehen)
allerdings wird der Status nicht aktualisiert. Was mache ich falsch? Wenn ich den Status extern mit mosquitto_pub setze funktioniert alles
einwandfrei!?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

majorshark

Ich habe die Module MQTT2 erst gestern durchgespielt. Ich habe es so verstanden das MQTT2 nicht mit mosqitto zusammenspielt. Dafür gibt es den MQTT2_SERVER. Da beide Broker dann auf Port 1883 lauschen muss man sich entscheiden mit wem man es machen will oder man änder die Ports.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

P.A.Trick

Zitat von: majorshark am 24 August 2018, 12:03:05
Ich habe die Module MQTT2 erst gestern durchgespielt. Ich habe es so verstanden das MQTT2 nicht mit mosqitto zusammenspielt. Dafür gibt es den MQTT2_SERVER. Da beide Broker dann auf Port 1883 lauschen muss man sich entscheiden mit wem man es machen will oder man änder die Ports.

Sorry ich nutze natürlich den internen Broker.
defmod mqttserver MQTT2_SERVER 1883
attr mqttserver rawEvents 1
attr mqttserver verbose 5

setstate mqttserver 2018-08-24 11:45:20 nrclients 0
setstate mqttserver 2018-08-24 00:39:44 state Initialized
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

majorshark

Ich habe es gestern so getestet und es funktionierte einwandfrei.

defmod Mqtt2Plug03 MQTT2_DEVICE
attr Mqtt2Plug03 IODev Mqtt2_Server
attr Mqtt2Plug03 devStateIcon on:rc_GREEN:off off:rc_RED:on
attr Mqtt2Plug03 icon hue_filled_outlet
attr Mqtt2Plug03 readingList tele/$DEVICETOPIC/S.* { MQTT2_JSON($EVENT) }\
stat/$DEVICETOPIC/POWER:.* state\
tele/$DEVICETOPIC/LWT:.* LWT
attr Mqtt2Plug03 room MQTT
attr Mqtt2Plug03 setList on cmnd/MqttPlug03/POWER on\
off cmnd/MqttPlug03/POWER off


Setzt aber voraus, dass man die StateText1 bis StateText3 entsprechen auf kleine Schreibweise (off,on,toggle) im Tasmota eingestellt hat.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

rudolfkoenig

@P.A.Trick: set hat bisher nicht den Status (state Reading) geaendert, das habe ich jetzt geaendert.
Der Workaround von majorshark ist, dass er die Statusmeldung des Geraetes nach state geschrieben hat.
Beide Verfahren haben ihre Vorteile.

P.A.Trick

Zitat von: rudolfkoenig am 24 August 2018, 18:11:47
@P.A.Trick: set hat bisher nicht den Status (state Reading) geaendert, das habe ich jetzt geaendert.
Der Workaround von majorshark ist, dass er die Statusmeldung des Geraetes nach state geschrieben hat.
Beide Verfahren haben ihre Vorteile.

Danke das funktioniert zwar ist aber mMn nicht die Lösung. Das Problem ist, dass das power Reading trotz denn subscribes nicht aktualisiert wird, nachdem das publish Kommando abgesetzt wurde. Das state Reading hätte dann doch durch stateformat aktualisiert werden müssen, oder irre ich mich?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

rudolfkoenig

ZitatDas Problem ist, dass das power Reading trotz denn subscribes nicht aktualisiert wird, nachdem das publish Kommando abgesetzt wurde.
Kannst du bitte mit "attr Mqtt2_Server verbose 4" zeigen, was das Endgeraet nach dem Kommando zurueckschickt?

ZitatDas state Reading hätte dann doch durch stateformat aktualisiert werden müssen, oder irre ich mich?
Das stateFormat Attribut bestimmt wie das fuer die Anzeige verwendete STATE gesetzt wird. Ohne gesetztes Attribut wird das state Reading uebernommen.
Neu ist, dass ein set Befehl das state Reading setzt.

P.A.Trick

Ich habe ja oben geschrieben das es nur eine Dummy Config ohne physisches Device ist! Ich bin davon ausgegangen, dass ein subscripe aus Fhem heraus auch ein Reading aktualisiert, aber dem ist wohl nicht so!? BTW:  in gerade unterwegs von daher kein verbose Log! Mache ich nachher!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

P.A.Trick

Zitat von: rudolfkoenig am 25 August 2018, 16:48:46
Kannst du bitte mit "attr Mqtt2_Server verbose 4" zeigen, was das Endgeraet nach dem Kommando zurueckschickt?
Das stateFormat Attribut bestimmt wie das fuer die Anzeige verwendete STATE gesetzt wird. Ohne gesetztes Attribut wird das state Reading uebernommen.
Neu ist, dass ein set Befehl das state Reading setzt.

Bei verbose 4 beim Server kommt gar nichts im Log an :-/
Hier mal mit global verbose 5

2018.08.25 20:51:37.244 4: WEB_127.0.0.1_36358 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2018-08.log; BUFLEN:0
2018.08.25 20:51:34.988 4: Connection accepted from WEB_127.0.0.1_36720
2018.08.25 20:51:34.763 4: Connection closed for WEB_127.0.0.1_36704: EOF
/
2018.08.25 20:51:32.260 4: WEB: /fhem?cmd.mqtt_dev1=set%20mqtt_dev1%20off&room=Unsorted&XHR=1&fwcsrf=csrf_570303748574225&fw_id=25 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
2018.08.25 20:51:32.260 5: End notify loop for mqtt_dev1
2018.08.25 20:51:32.260 5: Starting notify loop for mqtt_dev1, 1 event(s), first is off
2018.08.25 20:51:32.260 5: Cmd: >set mqtt_dev1 off<
2018.08.25 20:51:32.259 4: WEB_127.0.0.1_36358 POST /fhem?cmd.mqtt_dev1=set%20mqtt_dev1%20off&room=Unsorted&XHR=1&fwcsrf=csrf_570303748574225&fw_id=25; BUFLEN:0
/
2018.08.25 20:51:30.988 4: WEB: /fhem?cmd.mqtt_dev1=set%20mqtt_dev1%20on&room=Unsorted&XHR=1&fwcsrf=csrf_570303748574225&fw_id=25 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
2018.08.25 20:51:30.987 5: End notify loop for mqtt_dev1
2018.08.25 20:51:30.987 5: createNotifyHash
2018.08.25 20:51:30.987 5: Starting notify loop for mqtt_dev1, 1 event(s), first is on
2018.08.25 20:51:30.986 5: Cmd: >set mqtt_dev1 on<
2018.08.25 20:51:30.986 4: WEB_127.0.0.1_36358 POST /fhem?cmd.mqtt_dev1=set%20mqtt_dev1%20on&room=Unsorted&XHR=1&fwcsrf=csrf_570303748574225&fw_id=25; BUFLEN:0
2018.08.25 20:51:29.325 4: Connection accepted from WEB_127.0.0.1_36704
2018.08.25 20:51:29.183 4: Connection closed for WEB_127.0.0.1_36696: EOF
/
2018.08.25 20:51:29.178 4: WEB: /fhem?room=Unsorted / RL:1904 / text/html; charset=UTF-8 / Content-Encoding: gzip
2018.08.25 20:51:29.176 4: WEB_127.0.0.1_36358 GET /fhem?room=Unsorted; BUFLEN:0
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

rudolfkoenig

Ich gehe davon aus, das einer der folgenden Annahmen falsch ist, klaer mich bitte auf:
- es gibt ein Endgeraet, was sich ueber MQTT2_SERVER mit FHEM verbindet
- in FHEM ist ein MQTT2_DEVICE definiert
- bei einem set Befehl an diesem MQTT2_DEVICE  wird via MQTT das Endgeraet benachrichtigt
- das Endgeraet meldet Vollzug an FHEM via MQTT
- diese Nachricht wird vom MQTT2_DEVICE ausgewertet
Wenn ich deine Logs richtig interpretiere, dann gibt es kein solches Endgeraet.

P.A.Trick

Zitat von: rudolfkoenig am 25 August 2018, 21:25:20
Ich gehe davon aus, das einer der folgenden Annahmen falsch ist, klaer mich bitte auf:
- es gibt ein Endgeraet, was sich ueber MQTT2_SERVER mit FHEM verbindet
- in FHEM ist ein MQTT2_DEVICE definiert
- bei einem set Befehl an diesem MQTT2_DEVICE  wird via MQTT das Endgeraet benachrichtigt
- das Endgeraet meldet Vollzug an FHEM via MQTT
- diese Nachricht wird vom MQTT2_DEVICE ausgewertet
Wenn ich deine Logs richtig interpretiere, dann gibt es kein solches Endgeraet.

Das stimmt z.B. für Tasmota. Ich bin mir jetzt nicht ganz sicher, aber das Verhalten ging bei den alten Modulen (kann gerade nicht testen, da ich im Urlaub bin).
Kann das jemand anders bestätigen?
PS: Und ja ich habe in meiner VM kein physisches Decvice, wie bereits im ersten Post geschrieben!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

P.A.Trick

#11
So ich habe das noch einmal mit einem mosquitto Server (Port 1884) und den MQTT_SERVER und MQTT_DEVICE Modulen nachgestellt.
Dort funktioniert das statformat und der Status wird auch richtig gesetzt.
Einen Wunsch habe ich noch. Der MQTT2_SERVER loggt, auch bei verbose 5, so gut wie gar nichts. Es wäre schön, wenn der ein wenig gesprächiger wäre, denn
sonst ist das debuggen schwieriger. Danke im Voraus!

Anbei die verwendeten Definitionen:

defmod mqtt1_server MQTT localhost:1884
attr mqtt1_server verbose 5

setstate mqtt1_server opened
setstate mqtt1_server 2018-08-26 20:05:15 connection active
setstate mqtt1_server 2018-08-26 20:04:15 state opened


defmod mqtt_dev2 MQTT_DEVICE
attr mqtt_dev2 IODev mqtt1_server
attr mqtt_dev2 autoSubscribeReadings mqtt_dev1/cmd/+
attr mqtt_dev2 publishSet on off switch:on,off level:slider,0,1,100 /mqtt_dev2/cmd/power
attr mqtt_dev2 subscribeReading_power mqtt_dev1/cmd/power

setstate mqtt_dev2 off
setstate mqtt_dev2 2018-08-26 20:05:44 power on
setstate mqtt_dev2 2018-08-26 20:14:00 state off
setstate mqtt_dev2 2018-08-26 20:13:28 switch off
setstate mqtt_dev2 2018-08-26 20:14:00 transmission-state outgoing publish sent


Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn