0

我设法使用 Micropython 1.9.2 将 ESP01 连接到在我的计算机上运行的 mosquitto 代理。我还设法模拟了一个设备并将 mosquitto 客户端从我的计算机连接到 Watson Broker。但是当我尝试将 ESP 直接连接到 Watson 时,我收到“连接被拒绝”消息

MQTTException: 5
# Full stream answered by Watson is:  b' \x02\x00\x05'

我的配置参数是:

  • WATSON_CLIENT_ID = "d:[ORG]:ESP8266:fv_esp01s_02"
  • WATSON_BROKER_IP = "[ORG].messaging.internetofthings.ibmcloud.com"
  • WATSON_USER = "使用令牌认证"
  • WATSON_PWD = b“[令牌]”

正如我所说,在 Watson 中,我创建了定义的“TLS Optional”并配置了设备。我用 mosquitto 客户端测试了连接,它工作正常。

任何帮助都非常受欢迎!,最好的!

4

1 回答 1

3

我在 umqtt.simple(esp8266 的 mqtt 库)中的代码修订中找到了答案

答案是,在 umqtt 示例中,有一个使用 hexlify(client_id) 并且我遵循了标准:

client = MQTTClient(client_id=hexlify(MQTT_CLIENT_ID), server=MQTT_BROKER_IP, user=MQTT_USER, password=MQTT_PWD)

显然蚊子经纪人了解这一点,但 Watson IBM 经纪人不了解。更改为:

client = MQTTClient(client_id=MQTT_CLIENT_ID, server=MQTT_BROKER_IP, user=MQTT_USER, password=MQTT_PWD)

解决了这个问题。对于 Watson,变量格式如下:

  • CLIENT_ID = 字节
  • MQTT_BROKER_IP(或 url)= 字符串
  • MQTT_USER = 字符串
  • MQTT_PWD = 字节

还要注意主题/消息格式。

最好的!

于 2017-09-02T18:48:23.500 回答