Hallo zusammen,
ich habe in meinem Testsystem von mosquitto + MQTT2_CLIENT auf MQTT2_SERVER umgestellt. Im Testsystem habe ich ein Shelly1 (geflashed mit Tasmota).
Tasmota subscribed sich auf cmnd/shelly/wc/POWER1 um bei Empfang das Relais zu schalten.
Tasmota published auf cmnd/shelly/wc/POWER1 bei Drücken des angeschlossenen Tasters.
Tasmota subscribed sich also auf das gleiche topic das auch gepublished wird. Damit kommt MQTT2_SERVER offenbar nicht zurecht.
Wenn sich ein Client auf das gleiche topic subscribed wie das, welches der selbe Client auch published, funktioniert die Subscription nicht.
MQTT2_SERVER schickt die Nachricht nicht "zurück". Mosquitto tut das :o
Nachgestellt habe ich das Verhalten mit MQTTfx.
list MQTT2_SERVER
Internals:
CONNECTS 33
DEF 1883 global
FD 33
FUUID 5d74d26f-f33f-88d3-46b1-a70dd2b314816c7b
NAME mqtt_server
NR 65
PORT 1883
STATE Initialized
TYPE MQTT2_SERVER
READINGS:
2019-09-08 20:28:57 RETAIN {"$SYS/broker/connection/raspberrypi.bridge-2-sandbox/state":"0","ebusd/global/running":"true","ebusd/global/signal":"true","ebusd/global/version":"\u0022ebusd 3.3.v3.3-32-g3926e9c\u0022","espeasy/dht_aussen/ds18b20/temperature":"20.1","espeasy/dht_aussen/sht31/humidity":"64.3","espeasy/dht_aussen/sht31/temperature":"16.5","espeasy/dht_aussen/state":"disconnected","espeasy/dht_aussen/sys/bssid":"44:4E:6D:A5:C6:F3","espeasy/dht_aussen/sys/ip":"192.168.178.28","espeasy/dht_aussen/sys/mac":"A0:20:A6:11:B4:4D","espeasy/dht_aussen/sys/rssi":"-76","espeasy/dht_aussen/sys/ssid":"n***internet","espeasy/dht_aussen/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_aussen/sys/uptime":"0","espeasy/dht_bad/sht31/humidity":"61.0","espeasy/dht_bad/sht31/temperature":"23.7","espeasy/dht_bad/state":"disconnected","espeasy/dht_bad/sys/bssid":"34:31:C4:71:CE:A2","espeasy/dht_bad/sys/ip":"192.168.178.21","espeasy/dht_bad/sys/mac":"A0:20:A6:21:C4:3A","espeasy/dht_bad/sys/rssi":"-70","espeasy/dht_bad/sys/ssid":"n***internet","espeasy/dht_bad/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_bad/sys/uptime":"0","espeasy/dht_k1/sht31/humidity":"63.5","espeasy/dht_k1/sht31/temperature":"21.7","espeasy/dht_k1/state":"disconnected","espeasy/dht_k1/sys/bssid":"44:4E:6D:A5:C6:F3","espeasy/dht_k1/sys/ip":"192.168.178.3","espeasy/dht_k1/sys/mac":"5C:CF:7F:2D:01:D2","espeasy/dht_k1/sys/rssi":"-79","espeasy/dht_k1/sys/ssid":"n***internet","espeasy/dht_k1/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_k1/sys/uptime":"0","espeasy/dht_k3/sht31/humidity":"60.5","espeasy/dht_k3/sht31/temperature":"22.4","espeasy/dht_k3/state":"disconnected","espeasy/dht_k3/sys/bssid":"44:4E:6D:A5:C6:F3","espeasy/dht_k3/sys/ip":"192.168.178.17","espeasy/dht_k3/sys/mac":"5C:CF:7F:2F:5F:FC","espeasy/dht_k3/sys/rssi":"-76","espeasy/dht_k3/sys/ssid":"n***internet","espeasy/dht_k3/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_k3/sys/uptime":"0","espeasy/dht_lunos/sht31/humidity":"45.9","espeasy/dht_lunos/sht31/temperature":"23.0","espeasy/dht_lunos/state":"connected","espeasy/dht_lunos/sys/bssid":"34:31:C4:71:CE:A2","espeasy/dht_lunos/sys/ip":"192.168.178.35","espeasy/dht_lunos/sys/mac":"60:01:94:35:E6:0B","espeasy/dht_lunos/sys/rssi":"-81","espeasy/dht_lunos/sys/ssid":"n***internet","espeasy/dht_lunos/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_lunos/sys/uptime":"2871","espeasy/dht_studio/sht31/humidity":"59.1","espeasy/dht_studio/sht31/temperature":"22.5","espeasy/dht_studio/state":"disconnected","espeasy/dht_studio/sys/bssid":"34:31:C4:71:CE:A2","espeasy/dht_studio/sys/ip":"192.168.178.27","espeasy/dht_studio/sys/mac":"5C:CF:7F:29:C0:6A","espeasy/dht_studio/sys/rssi":"-69","espeasy/dht_studio/sys/ssid":"n***internet","espeasy/dht_studio/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_studio/sys/uptime":"0","espeasy/dht_sz/sht31/humidity":"55.0","espeasy/dht_sz/sht31/temperature":"23.6","espeasy/dht_sz/state":"disconnected","espeasy/dht_sz/sys/bssid":"34:31:C4:71:CE:A2","espeasy/dht_sz/sys/ip":"192.168.178.25","espeasy/dht_sz/sys/mac":"5C:CF:7F:C0:8F:0C","espeasy/dht_sz/sys/rssi":"-24","espeasy/dht_sz/sys/ssid":"n***internet","espeasy/dht_sz/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_sz/sys/uptime":"0","espeasy/dht_wz/sht31/humidity":"62.6","espeasy/dht_wz/sht31/temperature":"22.9","espeasy/dht_wz/state":"disconnected","espeasy/dht_wz/sys/bssid":"44:4E:6D:A5:C6:F3","espeasy/dht_wz/sys/ip":"192.168.178.29","espeasy/dht_wz/sys/mac":"A0:20:A6:21:AE:F4","espeasy/dht_wz/sys/rssi":"-64","espeasy/dht_wz/sys/ssid":"n***internet","espeasy/dht_wz/sys/sysbuild_date":"Feb 2 2019","espeasy/dht_wz/sys/uptime":"0","espeasy/io_dg/in_0/studio":"0","espeasy/io_dg/state":"disconnected","espeasy/io_dg/sys/bssid":"34:31:C4:71:CE:A2","espeasy/io_dg/sys/ip":"192.168.178.30","espeasy/io_dg/sys/mac":"60:01:94:35:C4:88","espeasy/io_dg/sys/rssi":"-75","espeasy/io_dg/sys/ssid":"n***internet","espeasy/io_dg/sys/sysbuild_date":"Feb 2 2019","espeasy/io_dg/sys/uptime":"0","espeasy/io_eg/in_0/kueche":"0","espeasy/io_eg/in_1/flur":"0","espeasy/io_eg/in_2/wc":"0","espeasy/io_eg/state":"disconnected","espeasy/io_eg/sys/bssid":"34:31:C4:71:CE:A2","espeasy/io_eg/sys/ip":"192.168.178.4","espeasy/io_eg/sys/mac":"60:01:94:35:E5:1C","espeasy/io_eg/sys/rssi":"-84","espeasy/io_eg/sys/ssid":"n***internet","espeasy/io_eg/sys/sysbuild_date":"Feb 2 2019","espeasy/io_eg/sys/uptime":"0","espeasy/io_og/in_0/bad":"0","espeasy/io_og/in_1/schlafzimmer":"0","espeasy/io_og/in_2/kind2":"0","espeasy/io_og/in_3/kind1":"0","espeasy/io_og/state":"connected","espeasy/io_og/sys/bssid":"44:4E:6D:A5:C6:F3","espeasy/io_og/sys/ip":"192.168.178.20","espeasy/io_og/sys/mac":"60:01:94:36:22:1B","espeasy/io_og/sys/rssi":"-82","espeasy/io_og/sys/ssid":"n***internet","espeasy/io_og/sys/sysbuild_date":"Feb 2 2019","espeasy/io_og/sys/uptime":"20","stat/fhem/ftk_garden_gate/state":"closed","stat/fhem/ftk_kg0_hobbyraum/state":"closed","stat/fhem/ftk_og0_bad/state":"open","tele/shelly/bad/LWT":"Online","tele/shelly/wc/LWT":"Online","tele/shelly/wz/LWT":"Online"}
2019-09-08 20:44:46 nrclients 0
2019-09-08 12:10:24 state Initialized
clients:
retain:
$SYS/broker/connection/raspberrypi.bridge-2-sandbox/state:
ts 1567948411.89217
val 0
ebusd/global/running:
ts 1567947865.2715
val true
ebusd/global/signal:
ts 1567947865.03049
val true
ebusd/global/version:
ts 1567947865.1583
val "ebusd 3.3.v3.3-32-g3926e9c"
espeasy/dht_aussen/ds18b20/temperature:
ts 1567948331.67895
val 20.1
espeasy/dht_aussen/sht31/humidity:
ts 1567948331.42281
val 64.3
espeasy/dht_aussen/sht31/temperature:
ts 1567948331.1599
val 16.5
espeasy/dht_aussen/state:
ts 1567948350.67105
val disconnected
espeasy/dht_aussen/sys/bssid:
ts 1567948330.39076
val 44:4E:6D:A5:C6:F3
espeasy/dht_aussen/sys/ip:
ts 1567948329.61725
val 192.168.178.28
espeasy/dht_aussen/sys/mac:
ts 1567948329.87698
val A0:20:A6:11:B4:4D
espeasy/dht_aussen/sys/rssi:
ts 1567948330.65107
val -76
espeasy/dht_aussen/sys/ssid:
ts 1567948330.13331
val n***internet
espeasy/dht_aussen/sys/sysbuild_date:
ts 1567948329.48482
val Feb 2 2019
espeasy/dht_aussen/sys/uptime:
ts 1567948330.90622
val 0
espeasy/dht_bad/sht31/humidity:
ts 1567948305.84791
val 61.0
espeasy/dht_bad/sht31/temperature:
ts 1567948305.71917
val 23.7
espeasy/dht_bad/state:
ts 1567948325.66093
val disconnected
espeasy/dht_bad/sys/bssid:
ts 1567948305.33261
val 34:31:C4:71:CE:A2
espeasy/dht_bad/sys/ip:
ts 1567948304.94393
val 192.168.178.21
espeasy/dht_bad/sys/mac:
ts 1567948305.07282
val A0:20:A6:21:C4:3A
espeasy/dht_bad/sys/rssi:
ts 1567948305.46103
val -70
espeasy/dht_bad/sys/ssid:
ts 1567948305.2028
val n***internet
espeasy/dht_bad/sys/sysbuild_date:
ts 1567948304.81556
val Feb 2 2019
espeasy/dht_bad/sys/uptime:
ts 1567948305.59185
val 0
espeasy/dht_k1/sht31/humidity:
ts 1567948317.36163
val 63.5
espeasy/dht_k1/sht31/temperature:
ts 1567948317.23455
val 21.7
espeasy/dht_k1/state:
ts 1567948336.72704
val disconnected
espeasy/dht_k1/sys/bssid:
ts 1567948316.71599
val 44:4E:6D:A5:C6:F3
espeasy/dht_k1/sys/ip:
ts 1567948316.19481
val 192.168.178.3
espeasy/dht_k1/sys/mac:
ts 1567948316.32467
val 5C:CF:7F:2D:01:D2
espeasy/dht_k1/sys/rssi:
ts 1567948316.97702
val -79
espeasy/dht_k1/sys/ssid:
ts 1567948316.45425
val n***internet
espeasy/dht_k1/sys/sysbuild_date:
ts 1567948316.06504
val Feb 2 2019
espeasy/dht_k1/sys/uptime:
ts 1567948317.107
val 0
espeasy/dht_k3/sht31/humidity:
ts 1567948182.37737
val 60.5
espeasy/dht_k3/sht31/temperature:
ts 1567948182.24931
val 22.4
espeasy/dht_k3/state:
ts 1567948201.66621
val disconnected
espeasy/dht_k3/sys/bssid:
ts 1567948181.86721
val 44:4E:6D:A5:C6:F3
espeasy/dht_k3/sys/ip:
ts 1567948181.3437
val 192.168.178.17
espeasy/dht_k3/sys/mac:
ts 1567948181.48236
val 5C:CF:7F:2F:5F:FC
espeasy/dht_k3/sys/rssi:
ts 1567948181.99441
val -76
espeasy/dht_k3/sys/ssid:
ts 1567948181.73834
val n***internet
espeasy/dht_k3/sys/sysbuild_date:
ts 1567948181.21416
val Feb 2 2019
espeasy/dht_k3/sys/uptime:
ts 1567948182.121
val 0
espeasy/dht_lunos/sht31/humidity:
ts 1567948406.59247
val 45.9
espeasy/dht_lunos/sht31/temperature:
ts 1567948406.46255
val 23.0
espeasy/dht_lunos/state:
ts 1567947846.40018
val connected
espeasy/dht_lunos/sys/bssid:
ts 1567947848.42641
val 34:31:C4:71:CE:A2
espeasy/dht_lunos/sys/ip:
ts 1567947847.18859
val 192.168.178.35
espeasy/dht_lunos/sys/mac:
ts 1567947847.53333
val 60:01:94:35:E6:0B
espeasy/dht_lunos/sys/rssi:
ts 1567948394.57916
val -81
espeasy/dht_lunos/sys/ssid:
ts 1567947848.08964
val n***internet
espeasy/dht_lunos/sys/sysbuild_date:
ts 1567947846.84394
val Feb 2 2019
espeasy/dht_lunos/sys/uptime:
ts 1567948394.70829
val 2871
espeasy/dht_studio/sht31/humidity:
ts 1567948384.92073
val 59.1
espeasy/dht_studio/sht31/temperature:
ts 1567948384.79207
val 22.5
espeasy/dht_studio/state:
ts 1567948404.63392
val disconnected
espeasy/dht_studio/sys/bssid:
ts 1567948384.4049
val 34:31:C4:71:CE:A2
espeasy/dht_studio/sys/ip:
ts 1567948384.01295
val 192.168.178.27
espeasy/dht_studio/sys/mac:
ts 1567948384.1445
val 5C:CF:7F:29:C0:6A
espeasy/dht_studio/sys/rssi:
ts 1567948384.53391
val -69
espeasy/dht_studio/sys/ssid:
ts 1567948384.27432
val n***internet
espeasy/dht_studio/sys/sysbuild_date:
ts 1567948383.8846
val Feb 2 2019
espeasy/dht_studio/sys/uptime:
ts 1567948384.6651
val 0
espeasy/dht_sz/sht31/humidity:
ts 1567948119.06845
val 55.0
espeasy/dht_sz/sht31/temperature:
ts 1567948118.81036
val 23.6
espeasy/dht_sz/state:
ts 1567948136.70613
val disconnected
espeasy/dht_sz/sys/bssid:
ts 1567948118.42645
val 34:31:C4:71:CE:A2
espeasy/dht_sz/sys/ip:
ts 1567948118.03463
val 192.168.178.25
espeasy/dht_sz/sys/mac:
ts 1567948118.16399
val 5C:CF:7F:C0:8F:0C
espeasy/dht_sz/sys/rssi:
ts 1567948118.55361
val -24
espeasy/dht_sz/sys/ssid:
ts 1567948118.29361
val n***internet
espeasy/dht_sz/sys/sysbuild_date:
ts 1567948117.90509
val Feb 2 2019
espeasy/dht_sz/sys/uptime:
ts 1567948118.68363
val 0
espeasy/dht_wz/sht31/humidity:
ts 1567948158.87195
val 62.6
espeasy/dht_wz/sht31/temperature:
ts 1567948158.7436
val 22.9
espeasy/dht_wz/state:
ts 1567948178.64141
val disconnected
espeasy/dht_wz/sys/bssid:
ts 1567948158.36005
val 44:4E:6D:A5:C6:F3
espeasy/dht_wz/sys/ip:
ts 1567948157.96878
val 192.168.178.29
espeasy/dht_wz/sys/mac:
ts 1567948158.09993
val A0:20:A6:21:AE:F4
espeasy/dht_wz/sys/rssi:
ts 1567948158.48744
val -64
espeasy/dht_wz/sys/ssid:
ts 1567948158.22922
val n***internet
espeasy/dht_wz/sys/sysbuild_date:
ts 1567948157.83865
val Feb 2 2019
espeasy/dht_wz/sys/uptime:
ts 1567948158.61768
val 0
espeasy/io_dg/in_0/studio:
ts 1567948373.33228
val 0
espeasy/io_dg/state:
ts 1567948392.64617
val disconnected
espeasy/io_dg/sys/bssid:
ts 1567948372.94813
val 34:31:C4:71:CE:A2
espeasy/io_dg/sys/ip:
ts 1567948372.55786
val 192.168.178.30
espeasy/io_dg/sys/mac:
ts 1567948372.68946
val 60:01:94:35:C4:88
espeasy/io_dg/sys/rssi:
ts 1567948373.07744
val -75
espeasy/io_dg/sys/ssid:
ts 1567948372.81789
val n***internet
espeasy/io_dg/sys/sysbuild_date:
ts 1567948372.42819
val Feb 2 2019
espeasy/io_dg/sys/uptime:
ts 1567948373.20424
val 0
espeasy/io_eg/in_0/kueche:
ts 1567948383.05863
val 0
espeasy/io_eg/in_1/flur:
ts 1567948383.18749
val 0
espeasy/io_eg/in_2/wc:
ts 1567948383.31553
val 0
espeasy/io_eg/state:
ts 1567948403.63196
val disconnected
espeasy/io_eg/sys/bssid:
ts 1567948382.67106
val 34:31:C4:71:CE:A2
espeasy/io_eg/sys/ip:
ts 1567948382.27469
val 192.168.178.4
espeasy/io_eg/sys/mac:
ts 1567948382.41028
val 60:01:94:35:E5:1C
espeasy/io_eg/sys/rssi:
ts 1567948382.8004
val -84
espeasy/io_eg/sys/ssid:
ts 1567948382.53918
val n***internet
espeasy/io_eg/sys/sysbuild_date:
ts 1567948382.14528
val Feb 2 2019
espeasy/io_eg/sys/uptime:
ts 1567948382.93237
val 0
espeasy/io_og/in_0/bad:
ts 1567948146.58048
val 0
espeasy/io_og/in_1/schlafzimmer:
ts 1567948146.83765
val 0
espeasy/io_og/in_2/kind2:
ts 1567948146.96384
val 0
espeasy/io_og/in_3/kind1:
ts 1567948147.09035
val 0
espeasy/io_og/state:
ts 1567947846.28521
val connected
espeasy/io_og/sys/bssid:
ts 1567947848.65791
val 44:4E:6D:A5:C6:F3
espeasy/io_og/sys/ip:
ts 1567947847.42062
val 192.168.178.20
espeasy/io_og/sys/mac:
ts 1567947847.87109
val 60:01:94:36:22:1B
espeasy/io_og/sys/rssi:
ts 1567948394.83851
val -82
espeasy/io_og/sys/ssid:
ts 1567947848.31347
val n***internet
espeasy/io_og/sys/sysbuild_date:
ts 1567947847.07375
val Feb 2 2019
espeasy/io_og/sys/uptime:
ts 1567948394.9651
val 20
stat/fhem/ftk_garden_gate/state:
ts 1567948323.95807
val closed
stat/fhem/ftk_kg0_hobbyraum/state:
ts 1567948137.50911
val closed
stat/fhem/ftk_og0_bad/state:
ts 1567947948.29909
val open
tele/shelly/bad/LWT:
ts 1567947847.64617
val Online
tele/shelly/wc/LWT:
ts 1567947848.9981
val Online
tele/shelly/wz/LWT:
ts 1567947846.63298
val Online
Attributes:
autocreate no
verbose 5
Event Monitor incl FhemLog
2019.09.08 20:42:13 4 : Connection accepted from mqtt_server_192.168.178.2_51722
2019.09.08 20:42:13 5 : Starting notify loop for mqtt_server, 1 event(s), first is nrclients: 1
2019-09-08 20:42:13 MQTT2_SERVER mqtt_server nrclients: 1
2019.09.08 20:42:13 5 : End notify loop for mqtt_server
2019.09.08 20:42:13 5 : CONNECT: (16)(26)(0)(4)MQTT(4)(2)(0)<(0)(14)MQTT_FX_Client
2019.09.08 20:42:13 4 : mqtt_server_192.168.178.2_51722 MQTT_FX_Client CONNECT V:4 keepAlive:60
2019.09.08 20:42:18 5 : SUBSCRIBE: (130)(12)(0)(1)(0)(7)foo/bar(0)
2019.09.08 20:42:18 4 : mqtt_server_192.168.178.2_51722 MQTT_FX_Client SUBSCRIBE
2019.09.08 20:42:18 4 : topic:foo/bar qos:0
2019.09.08 20:42:25 5 : PUBLISH: 4(20)(0)(7)foo/bar(0)(2)123456789
2019.09.08 20:42:25 4 : mqtt_server_192.168.178.2_51722 MQTT_FX_Client PUBLISH foo/bar:123456789
2019.09.08 20:42:25 5 : mqtt_server: dispatch autocreate=no\000MQTT_FX_Client\000foo/bar\000123456789
2019.09.08 20:42:33 5 : DISCONNECT: (224)(0)
2019.09.08 20:42:33 4 : mqtt_server_192.168.178.2_51722 MQTT_FX_Client DISCONNECT
2019.09.08 20:42:33 5 : Starting notify loop for mqtt_server, 1 event(s), first is nrclients: 0
2019-09-08 20:42:33 MQTT2_SERVER mqtt_server nrclients: 0
2019.09.08 20:42:33 5 : End notify loop for mqtt_server
ZitatDamit kommt MQTT2_SERVER offenbar nicht zurecht.
Merkwuerdige Formulierung. MQTT2_SERVER prueft explizit, dass die Nachricht nicht an dem Sender zurueckgeschickt wird, damit man nicht so einfach eine Endlosschleife bauen kann.
ZitatWenn sich ein Client auf das gleiche topic subscribed wie das, welches der selbe Client auch published, funktioniert die Subscription nicht.
Und warum genau ist das ein Problem?
Zitat von: rudolfkoenig am 08 September 2019, 23:32:02
Und warum genau ist das ein Problem?
Also konkret ist das ein Problem, da das genannte Shelly1 mit Tasmota FW das Relais nicht mehr schaltet.
Tasmota verhält sich im Grunde wie zwei Geräte (Taster und Relais).
Physikalisch handelt es sich um nur einen MQTT Client.
- Taster published command zum Schalten des Relais.
- Relais ist auf command subcribed und schaltet bei Empfang.
Das ist das Default Verhalten von Tasmota (kann man natürlich umkonfigurieren).
Mosquitto verhält sich an dieser Stelle anders.
Wenn man diese Nachricht an dem Geraet zurueckschicken will, dann kann man es per notify tun.
Eine direkte Kopplung findet der Tasmota Entwickler offensichtlich selbst nicht richtig, sonst wuerde er sie ohne den MQTT Umweg machen.
Ich bin offen fuer Aenderunge/Fixes, aber in diesem Fall sehe ich nur Nachteile/Probleme.
Ich kann mit dem notify leben. Ich verstehe auch die Probleme die daraus resultieren.
Aber ich finde es zumidest diskusitionswürdig warum man eine Subscription nicht bekommen sollte, nur weil man selbst der Absender der entsprechenden Nachricht ist. Aus meiner Sicht sollte es dem Broker doch vollkommen egal sein, wer sich auf Messages subscribed. Subscription ist Subscription...
mosquitto ist sicherlich auch nicht die Referenz Implementierung aber er verhält sich eben anders.
Ich kan gerne per Attribut das Verhalten aendern, wenn es sich rausstellt, dass ein notify unzumutbar ist.
Es ist nicht unzumutbar.
Das Verhalten ist einfach nur überraschend, wenn man von mosquitto umsteigt und plötzlich einiges nicht mehr funktioniert.
Ein Log 3 wäre auch ok, damit andere User nicht auch noch zu Suchen anfangen.
Attribut bietet zumindest die Möglichkeit kompatibel zu anderen Server Implementierungen zu sein.