找回密码
 立即注册
importclientdataprint | 软件设计/软件工程 2022-05-05 259 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
我想用 MQTT 连接 ESP32 到 demo thingsboard,我用 umqtt.simple 连接,但是有问题。每当我尝试连接时,它都会给我这个(文件“umqtt/simple.py”,第 99 行,连接中)或(文件“umqtt/simple.py”,第 57 行,连接中

索引器错误:列表索引超出范围),我相信它们是相同的。尽管当我尝试将 ESP32 连接到 thingspeak(进行一些编辑)时,它可以完美地连接、发送和接收数据。那么问题是什么?

我的代码:
  1. import machine
  2. import time
  3. from machine import Pin, PWM
  4. from umqtt.simple import MQTTClient
  5. from time import sleep
  6. import random
  7. import json
  8. import network
  9. #################MQTT###################

  10. def connect():
  11.   username="USER_NAME"
  12.   broker=  "demo.thngsboard.io"
  13.   topic = "v1/devices/me/telemetry"
  14.   client = MQTTClient(username,broker)

  15.   try:
  16.     print("uuuuuuuuuu")
  17.     client.connect()
  18.   except OSError:
  19.     print('Connection failed')
  20.     sys.exit()

  21.   data = dict()
  22.   data["see"] = 15
  23.   data2=json.dumps(data)#convert it to json

  24.   print('connection finished')
  25.   client.publish(topic,data2)
  26.   print("kkkkkkkkkkkkkkkkkk")
  27.   time.sleep(5)
  28. #print("Sending OFF")
  29. connect()
复制代码

我也看到了一个问题,他也有类似的问题,但是他没有提供解决方案就解决了:

设备未使用 MQTT 连接到 Thingsboard

当然,我会将它连接到互联网。

回答
问题似乎是micropython中的umqtt只支持不认证或者用户密码认证。

所以我将代码编辑如下:
  1. import machine
  2. import time
  3. from machine import Pin, PWM
  4. from umqtt.simple import MQTTClient
  5. from time import sleep
  6. import random
  7. import json
  8. import network
  9. #################MQTT###################


  10. def connect():
  11.   username="Your_Token"
  12.   broker=  "demo.thingsboard.io"
  13.   topic = "v1/devices/me/telemetry"
  14.   Mqtt_CLIENT_ID = "Client_ID"        # Max. Number is 23 due to MQTT specs
  15.   PASSWORD=""
  16.   client = MQTTClient(client_id=Mqtt_CLIENT_ID, server=broker, port=1883, user=username, password=PASSWORD, keepalive=10000)
  17.   try:
  18.     client.connect()
  19.   except OSError:
  20.     print('Connection failed')
  21.     sys.exit()
  22.   data = dict()
  23.   data["see"] = 15
  24.   data2=json.dumps(data)#convert it to json

  25.   print('connection finished')
  26.   client.publish(topic,data2)
  27.   print("Data_Published")
  28.   time.sleep(5)
  29. #print("Sending OFF")
  30. connect()
复制代码






上一篇:将JFileChooser标签Look in:更改为Save in:
下一篇:for hellip;of 循环中变量的默认类型?