Отправка сообщения устройства в Azure - PullRequest
0 голосов
/ 25 мая 2018

Я настраиваю Azure, создал iot hub, устройство, тему и подписку.Теперь я хочу отправить сообщение из скрипта Python через mqtt и увидеть, как оно каким-то образом появляется на лазурной странице

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.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

IoT Hub не является универсальным посредником по обмену сообщениями в пабе, он поддерживает только документированные названия тем и фильтры тем.Пожалуйста, обратитесь к этому документу ( Связь с вашим IoT-хабом по протоколу MQTT ).

Поэтому вы не можете публиковать пользовательские темы, когда хотите напрямую подключиться к IoT-хабу с MQTT.

0 голосов
/ 25 мая 2018

Код 1 означает, что вы используете другую версию протокола.Самая новая версия иногда имеет другой заголовок (например, добавлено дополнительное поле).

Точное значение кода 1: «Отказ в соединении, недопустимая версия протокола»

...