MQTT2_SERVER und Cli tools

Begonnen von luke666s, 19 Mai 2020, 14:58:18

Vorheriges Thema - Nächstes Thema

luke666s

Hallo ich habe einen MQTT2_SERVER  und versuche verzwifelt ihm MQTT command's per CLI (also mosquitto_pub oder mqtt cli tools von hive) zu schicken. Klappt aber nicht! Per Mqtt.fx von meinem Mac geht es aber... Ich hab echt null plan...

Das ist der MQTT2_Server im fhem:
defmod m2server MQTT2_SERVER 1883 global
attr m2server room MQTT2_DEVICE,System

setstate m2server 2020-05-19 14:27:52 RETAIN {"zigbee2mqtt<snip>....</snip>bridge/state":"online"}}
setstate m2server 2020-05-19 14:00:10 nrclients 2
setstate m2server 2020-05-16 09:10:39 state Initialized


mqtt (cli tools von hive) liefert mir folgendes
root@raspberrypi:~# mqtt pub -t Cameras/Draussen/motion -m "ON" -u cli -pw <SUPERsecretPASSWD> -h 192.168.5.1
PUBLISH: Exception while decoding CONNACK: remaining length too short
root@raspberrypi:~#
root@raspberrypi:~# mqtt pub -t Cameras/Draussen/motion -m "ON" -u cli -pw <SUPERsecretPASSWD> -h localhost
PUBLISH: Exception while decoding CONNACK: remaining length too short


und mosquitto_pub das:
root@raspberrypi:~#  mosquitto_pub -h 192.168.5.1 -u cli -P <SUPERsecretPASSWD> -t Cameras/Draussen/motion -m ON
Connection Refused: bad user name or password.
Error: The connection was refused.
root@raspberrypi:~# 
root@raspberrypi:~#  mosquitto_pub -h localhost -u cli -P <SUPERsecretPASSWD> -t cameras/Draussen/motion -m ON
Connection Refused: bad user name or password.
Error: The connection was refused.


Hat jemand ne idee??? Wie gesagt: Mqtt.fx auf dem Mac geht einwandfrei (gleicher user und passwd per copy&paste)! Nur per CLI (auf der gleichen Maschiene) geht nix!

Hintergrund: Ich möchte die Logik im fhem lassen und MotionEye nur ein MQTT Wert setzten lassen.. Ja! Ein FHEM Dummy würde auch gehen (mache ich ja z.z auch) aber ich fand halt MQTT etwas sexier ;) Warum auch immer...

Beta-User

Das "Problem" könnte sein, dass MQTT2_SERVER eine CID haben will, und dabei insbesondere die zufälligen nicht mag, die mosquitto_pub automatisch generiert.

Ergänze das mal mit "-i meine_tolle_CID"... (für die hive-Variante gibt's sicher was vergleichbares).

(Bitte dann beim MQTT2_DEVICE in der readingList die CID-Angaben rauswerfen, v.a., wenn du mit verschiedenen Tools/CIDs arbeiten willst).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

Bei mosquitto_pub tippe ich auf Tippfehler bei der Eingabe des Benutzers/Passwortes, z.Bsp. nicht richtig geschuetzte Sonderzeichen.
Bei hive mqtt wuerde mich das FHEM-Log bei "attr m2server verbose 5" interessieren, da hive offensichtlich meint, MQTT2_SERVER haelt sich nicht an die Regeln.

Die ClientId Angabe bei mosquitto_pub ist erst dann relevant, wenn autocreate was tun soll, bei der gezeigten Fehlermeldung sind wir noch nicht soweit.

luke666s

Ok... Ich bin einen Schritt weiter :) Es liegt wohl echt an dem Benutzername/Passwd bei mosquitto_pub... Aber selbst mit einem simplen Passwort wie "MqttTest123" geht es nicht. Disable ich das allowed device geht alles. Komisch....

Hive geht aber selbst ohne passwd nicht!

root@raspberrypi:~# mqtt pub -t Cameras/Draussen/motion -m ON -h localhost
PUBLISH: Exception while decoding CONNACK: remaining length too short



2020.05.20 08:55:49 5: out: PINGRESP: (208)(0)
2020.05.20 08:55:50 4: Connection accepted from m2server_127.0.0.1_48478
2020.05.20 08:55:50 5: in:  CONNECT: (16)E(0)(4)MQTT(5)(2)(0)<(0)(0)8mqttClient-MQTT_5_0-67156f8f-37e0-4fd0-8393-521dad22bd11
2020.05.20 08:55:50 4:   m2server_127.0.0.1_48478  CONNECT V:5 keepAlive:60
2020.05.20 08:55:50 5: out: CONNACK:  (2)(0)(0)
2020.05.20 08:55:50 5: in:  DISCONNECT: (224)A(129)?(31)(0)<Exception while decoding CONNACK: remaining length too short
2020.05.20 08:55:50 4:   m2server_127.0.0.1_48478  DISCONNECT

rudolfkoenig

Das "hive Problem" liegt daran, dass hive mit MQTT-Protokoll-Version 5 kommt (siehe V:5), das wird aber von MQTT2_SERVER (noch?) nicht unterstuetzt.
Ich habe jetzt eine Pruefung eingebaut, bei V:5 wird die Verbindung mit Fehler abgewiesen.