неверное имя пользователя или пароль mqtt

#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 для перехвата пакета данных