首页 > 解决方案 > 将 iot 设备消息发送到 azure

问题描述

我设置了 azure,创建了 iot hub、设备、主题和订阅。现在我想通过 mqtt 从 python 脚本发送一条消息,并看到它以某种方式出现在 azure 页面上

def on_connect(client, userdata, flags, rc):
  print ("Device connected with result code: " + str(rc))
def on_disconnect(client, userdata, rc):
  print ("Device disconnected with result code: " + str(rc))
def on_publish(client, userdata, mid):
  print ("Device sent message")

client = mqtt.Client(client_id=device_id, protocol=mqtt.MQTTv311)

client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.on_publish = on_publish

client.username_pw_set(username=iot_hub_name+".azure-devices.net/" + device_id, password=sas_token)

client.tls_set(certfile=None, keyfile=None, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1, ciphers=None)
client.tls_insecure_set(False)

client.connect(iot_hub_name+".azure-devices.net", port=8883)

client.publish("devices/" + device_id + "/messages/events/", "{id=123}", qos=1)
client.loop_forever()

问题是我不知道如何指定主题。当我尝试这个

client.publish("devices/" + device_id + "/mytopicname/messages", "{id=123}", qos=1)

它与代码 1 断开连接。

标签: pythonazuremqttiotazure-iot-hub

解决方案


IoT Hub 不是通用的发布-订阅消息代理,它仅支持记录的主题名称和主题过滤器。请参阅本文档(使用 MQTT 协议与您的 IoT 中心通信)。

因此,当您想使用 MQTT 直接连接到 IoT Hub 时,您无法发布自定义主题。


推荐阅读