Я продолжаю получать ошибку сломанной трубы, и я не уверен, является ли это ошибкой края IOT. Он отправит 8-9 публикаций, прежде чем ничего не получит. Я размещаю пограничный контейнер IOT на том же устройстве, с которым он соединяется. Это может вызвать проблемы?
Сообщение об ошибке
log: Sending PUBLISH (d0, q0, r0, m1), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m2), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m3), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m4), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m5), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m6), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m7), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: Sending PUBLISH (d0, q0, r0, m8), 'b'devices/vehicleRPM/messages/events/'', ... (1 bytes)
log: failed to receive on socket: [Errno 32] Broken pipe
Вот как я подключаюсь
self.device_id = device_id
self.client = mqtt.Client(client_id=device_id, protocol=mqtt.MQTTv311, clean_session=False)
self.client.on_log = on_log
self.client.tls_set(ca_certs="/home/pi/RTT/Pi/kerts/certs/azure-iot-test-only.root.ca.cert.pem", cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1, ciphers=None)
self.client.tls_insecure_set(False) # self.client.tls_set(cert_reqs=ssl.CERT_NONE)
self.username = "{}.azure-devices.net/{}/api-version=2018-06-30".format(self.iot_hub_name, self.device_id)
self.client.username_pw_set(username=self.username, password=self.sas_token)
# Connect to the Azure IoT Hub
self.client.on_connect = on_connect
self.client.connect("raspberrypi", port=8883)
# Subscribing on the topic ,
self.client.on_message = on_message
self.client.on_subscribe = on_subscribe
self.client.subscribe("devices/{device_id}/messages/devicebound/#".format(device_id=device_id))
self.client.subscribe("$iothub/twin/PATCH/properties/desired/#")
self.client.subscribe("$iothub/methods/POST/#")
def _SendMessage(self, payload):
self.client.publish("devices/{device_id}/messages/events/".format(device_id=self.device_id), payload=payload, qos=0, retain=False)
Это то, что, как я вижу, происходит при соединении со стороны края iot.
Mar 01 21:26:42 raspberrypi iotedged[1034]: 2020-03-01T21:26:42Z [INFO] - [mgmt] - - - [2020-03-01 21:26:42.908760673 UTC] "GET /modules?api-version=2019-01-30 HTTP/1.1" 200 OK 1043 "-" "-" auth_id(-)
Mar 01 21:26:47 raspberrypi iotedged[1034]: 2020-03-01T21:26:47Z [INFO] - [mgmt] - - - [2020-03-01 21:26:47.934428600 UTC] "GET /modules?api-version=2019-01-30 HTTP/1.1" 200 OK 1043 "-" "-" auth_id(-)
Mar 01 21:26:48 raspberrypi iotedged[1034]: 2020-03-01T21:26:48Z [INFO] - [work] - - - [2020-03-01 21:26:48.543634841 UTC] "POST /modules/%24edgeHub/genid/{number}/sign?api-version=2019-01-30 HTTP/1.1" 200 OK 57 "-" "-" auth_id(-)
Mar 01 21:26:49 raspberrypi iotedged[1034]: 2020-03-01T21:26:49Z [INFO] - [work] - - - [2020-03-01 21:26:49.011628265 UTC] "POST /modules/%24edgeHub/genid/{same number}/encrypt?api-version=2019-01-30 HTTP/1.1" 200 OK 569 "-" "-" auth_id(-)
Mar 01 21:26:52 raspberrypi iotedged[1034]: 2020-03-01T21:26:52Z [INFO] - [mgmt] - - - [2020-03-01 21:26:52.953183647 UTC] "GET /modules?api-version=2019-01-30 HTTP/1.1" 200 OK 1043 "-" "-" auth_id(-)
Mar 01 21:26:57 raspberrypi iotedged[1034]: 2020-03-01T21:26:57Z [INFO] - [mgmt] - - - [2020-03-01 21:26:57.983174061 UTC] "GET /modules?api-version=2019-01-30 HTTP/1.1" 200 OK 1043 "-" "-" auth_id(-)
Mar 01 21:27:03 raspberrypi iotedged[1034]: 2020-03-01T21:27:03Z [INFO] - [mgmt] - - - [2020-03-01 21:27:03.013862166 UTC] "GET /modules?api-version=2019-01-30 HTTP/1.1" 200 OK 1043 "-" "-" auth_id(-)
Mar 01 21:27:08 raspberrypi iotedged[1034]: 2020-03-01T21:27:08Z [INFO] - [mgmt] - - - [2020-03-01 21:27:08.041568988 UTC] "GET /modules?api-version=2019-01-30 HTTP/1.1" 200 OK 1043 "-" "-" auth_id(-)