我设置了azure,创建了iot集线器,设备,主题和订阅。 现在我想通过mqtt从python脚本发送消息,看看它在某个天蓝色的页面上显示
/* Edited Child component */
selectedIds: GenericID[];
@Input('selectedIds')
set selectedIdss(value: GenericID[]) {
if (value) {
this.selectedIds = value;
}else {
this.selectedIds = [];
}
}
get selectedIdss() {
return this.selectedIds;
}
问题在于我不知道如何指定主题。 我试过这个时
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()
它与代码1断开连接。
答案 0 :(得分:2)
IoT Hub不是通用的pub-sub消息传递代理,它只支持记录的主题名称和主题过滤器。请参阅此文档(Communicate with your IoT hub using the MQTT protocol)。
因此,当您想直接使用MQTT连接到IoT Hub时,无法发布自定义主题。
答案 1 :(得分:0)
代码1表示您使用的是不同的协议版本。最新版本有时会有不同的标题(例如添加了一个额外的字段)。
代码1的确切含义:"连接拒绝,不可接受的协议版本"