FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: dirk.k am 07 Januar 2018, 12:43:06

Titel: MQTT ClientID
Beitrag von: dirk.k am 07 Januar 2018, 12:43:06
Hallo zusammen,
ich habe ein Problem bei der Anbindung von Geräten über einen öffentlichen Broker (broker.hivemq.com)
Ich bekomme im Event-monitor Unmengen von  CONNECTED/DISCONNECTED Meldungen.
2018-01-07 12:36:50 MQTT_DEVICE Sonoff_basic_11 transmission-state: subscription acknowledged
2018-01-07 12:36:50 MQTT mqtt_hivemq DISCONNECTED
2018-01-07 12:36:50 MQTT mqtt_hivemq connection: connecting
2018-01-07 12:36:50 MQTT mqtt_hivemq CONNECTED
2018-01-07 12:36:50 MQTT mqtt_hivemq connection: connected
2018-01-07 12:36:50 MQTT_DEVICE Sonoff_basic_11 transmission-state: subscribe sent
2018-01-07 12:36:50 MQTT mqtt_hivemq connection: active
2018-01-07 12:36:50 MQTT_DEVICE Sonoff_basic_11 transmission-state: subscription acknowledged

In meiner eigenen MQTT Installation hatte ich einen Ähnlichen Effekt bei verwendung der gleichen ClientID durch mehrere Geräte.
Nun die Frage: kann ich die ClientID für die MQTT Verbindung konfigurieren/Anpassen?
Mein Hostname ist einfallslos gewählt und mit Sicherheit nicht einmalig...

 
   
Titel: Antw:MQTT ClientID
Beitrag von: hexenmeister am 07 Januar 2018, 17:20:33
Moin!

Wenn man in die MQTT-Lib (Datei Connect.pm) reinschaut, sieht man, dass als client_id (wenn nicht direkt angegeben) folgendes verwendet wird:
sub client_id { shift->{client_id} || 'Net::MQTT::Message['.$$.']' }
Basiert also auf Perl-Prozess-ID. Kann an einem Public-Server natürlich zu Kollisionen kommen.
Wäre leicht implementiebar. In 00_MQTT.pm müsste Methode send_connect angepasst werden.

Ich schue mir mal an.

Grüße
Alexander
Titel: Antw:MQTT ClientID
Beitrag von: hexenmeister am 07 Januar 2018, 17:27:44
So, jetzt gibt ein neues optionale Attribut "client-id". Probiere mal aus, ich habe gerade leider keine Zeit zum ausfühlichen Testen.
Titel: Antw:MQTT ClientID
Beitrag von: dirk.k am 07 Januar 2018, 19:51:03
Hi,
besten Dank. Das ging ja schnell.
das neue Attribut funktioniert. In Wireshark kann ich die gesetzte ClientID an genau der richtigen Stelle sehen.
Leider wird die Verbindung trotzdem vom Server getrennt.
Ich werde zwar meine Daten los und bekomme auch welche, habe aber jede Sekunde das subscribe/connect/disconnect.
Gibt es eine Möglichkeit hier zu debuggen?
Ich werde mal weiter suchen.


   
Titel: Antw:MQTT ClientID
Beitrag von: hexenmeister am 07 Januar 2018, 21:56:22
naja, eine große Änderung war das ja nicht.
Schade, dass das nicht geholfen hat. Leider habe ich keine weitere Idee.

Da die Änderung dennoch für einen oder anderen sinnvoll sein könnte, hänge ich hier noch ein entsprechenden Patch ein.

@eisler magst Du den Patch prüfen und übernehmen? Danke :)
Titel: Antw:MQTT ClientID
Beitrag von: eisler am 19 Februar 2018, 19:28:15
@hexenmeister done. https://svn.fhem.de/trac/changeset/16223/trunk/fhem

Grüße
Stephan
Titel: Antw:MQTT ClientID
Beitrag von: hexenmeister am 19 Februar 2018, 21:32:56
Danke :)