无法从 Raspberry Pi 发布 AWS IoT 消息

物联网 MQTT 树莓派 aws-iot
2021-05-29 09:58:56

我从 Raspberry Pi 运行一个简单的发布消息。我的设备似乎已连接到 AWS IoT,但未发布消息且未调用on_connecton_publish方法。

任何人都可以帮助找出原因吗?

#!/usr/bin/python2.7
import paho.mqtt.client as mqtt       
import ssl  
import json,time

def on_connect(client, userdata, flags, rc):  
    print ("Subscriber Connection status code: "+str(rc))
def on_publish(client, userdata, mid):  
    print(client, userdata, mid)
#Connect to AWS IoT
print("starting aws client")  
awsclient = mqtt.Client(client_id="raspberry",protocol=mqtt.MQTTv311)  
awsclient.on_connect = on_connect  
awsclient.on_publish = on_publish  
awsclient.tls_set("./root-CA.pem",certfile="./575c6bc5b3-    certificate.pem.crt",keyfile="./575c6bc5b3-            private.pem.key",tls_version=ssl.PROTOCOL_SSLv23,ciphers=None)
awsclient.tls_insecure_set(True)  
awsclient.connect("a1e2evxrc4wz76.iot.us-east-1.amazonaws.com", 8883, 60)  
awsclient.loop_start()  

rc=0  
while rc == 0:  
   data={}  
   data['temp']='64'  
   data['humid']='65'  
   print(data)  
   payload = json.dumps(data)  
   print("Payload: " + payload)  
   awsclient.publish("Rasp/data", payload, qos=1)   
   time.sleep(10)  
print('rc: ' +str(rc))`
1个回答

您的问题缺少一个问题,但假设它是“我接下来要检查什么”,那么您需要查看该.connect功能。这是一个阻塞调用CONNACK在调用on_connect结果代码之前等待来自代理的a

如果on_connect没有被调用,则代理没有响应——也许给它多一点时间。如果之后继续执行,.connecton_connect引用被破坏。尝试剥离语句,直到on_connect成功调用函数。只有这样,您才能开始调试您的特定功能。