#python #mqtt
Вопрос:
Я написал код о шлюзе, работающем на VS с python. Проблема теперь в том, что я настроил имя пользователя и пароль mqtt , а также IP и порт сервера, но возвращаемое значение rc=4 (неверное имя пользователя или пароль), я использую wireshark для захвата пакетов, пакет ПОДКЛЮЧЕНИЯ, который я отправил, правильный, но возвращаемое значение показывает неверное имя пользователя или пароль
def __doPost(self):
self.__connectMqtt(host = host, port = port, mqttUsername = id, mqttPassword = token)
def __connectMqtt(self,host,port,mqttUsername,mqttPassword):
# Username = mqttUsername.encode("utf-8")
self.mqttc.username_pw_set(username=mqttUsername, password=mqttPassword)
# self.mqttc.subscribe(self.setTopic,1)
self.mqttc.on_connect=self.__on_connect
self.mqttc.on_message=self.__on_message
self.mqttc.on_publish=self.__on_publish
self.mqttc.on_disconnect=self.__on_disconnect
# self.mqttc.tls_set(ca_certs = r"C:UserschrisDesktopMobiusPi-Project-Templates-1.0.5helloworld-templatesrcroot.crt")
self.mqttc.connect(host, port, keepalive=200)
# self.publish(message = "SUPCON Test")
self.mqttc.publish_to_mqtt = self.publish_to_mqtt()
# self.mqttc.subscribe_gateway = self.subscribe_gateway()
self.mqttc.loop_forever()
def __on_connect(self,client, userdata, flags, rc):
"""
The value of rc indicates success or not:
0: Connection successful
1: Connection refused - incorrect protocol version
2: Connection refused - invalid client identifier
3: Connection refused - server unavailable
4: Connection refused - bad username or password
5: Connection refused - not authorised
6-255: Currently unused.
"""
if rc==0:
print("Connect successful")
elif rc==1:
print("incorrect protocol version")
elif rc==2:
print("invalid client identifier")
elif rc==3:
print("server unavailable")
elif rc==4:
print("bad username or password")
# print (client,flags)
elif rc==5:
print("not authorised")
elif 6<rc<255:
print("Currently unused")
else:
print("Connect failed")
def __on_message(self,client, userdata, message):
message=message.payload.decode('utf8')
print('receive message:%s'%(message))
def __on_publish(self,client, userdata, mid):
print('publish message success mid:%s'%(mid))
def __on_disconnect(self,client,userdata,rc):
if rc==0:
print('disconnect success')
else:
print('disconnect fail')
Комментарии:
1. Во-первых, не размещайте здесь ссылки на изображения….слишком много шансов, что это вирус, поэтому люди не будут переходить по ссылке. Во-вторых, каким брокером MQTT вы управляете? Опубликуйте выходные данные файла журнала, в котором происходит подключение и что он считает неправильным.
Ответ №1:
о,я решил эту проблему.поскольку у каждого шлюза есть идентификатор клиента, сервер, к которому мне нужно подключиться, должен указать идентификатор клиента, и подключиться ни к чему невозможно. Мне нужно определить идентификатор клиента для подключения.
если ваш шлюз не подключается к серверу,и ошибка возврата-неправильное имя пользователя или пароль, возможно, идентификатор клиента-это ошибка.
Комментарии:
1. вы можете использовать wireshark для перехвата пакета данных