【发布时间】:2020-11-03 04:34:00
【问题描述】:
我正在尝试使用直接方法来调用设备 OTA 我使用的设备是 Quectel EC21 并订阅主题“$iothub/methods/POST/#” 当我在 Azure IoT 资源管理器中调用该方法时,我总是收到“消息”:“等待设备连接超时”的超时失败消息。 enter image description here
此错误消息让我感到困惑,因为我希望我的设备通过 MQTT 从主题“$iothub/methods/POST/#”接收方法负载,但我什么也没收到。 但同时,我可以通过主题“devices/deviceID/messages/devicebound/#”接收正常的云到设备MQTT消息 那么,Direct方式连接和Iot hub连接是不同的连接方式吗?
【问题讨论】:
-
$iothub/methods/POST/#是正确的主题,您应该在那里收到一条消息。如果您不响应消息,则会发生超时。但如果我没看错你的问题,你现在甚至没有在设备上收到消息吗?你能包含一些代码吗? -
嗨 Matthijs,我使用的是真正的 IOT 设备,所以代码是嵌入式 C 以通过 UART 发送 AT 命令,所以,我不确定我发布的代码是否会起作用。我只是想确保这个主题 $iothub/methods/POST/# 应该像 devices/{deviceID}/messages/devicebound/# 一样工作,对吗?因为我可以收到来自 devices/{deviceID}/messages/devicebound/# 的消息,但不能收到来自 $iothub/methods/POST/# 的消息
-
是的,
$iothub/methods/POST/#是正确的。您的方法最终将以$iothub/methods/POST/methodname/?$rid=1出现。需要注意的重要一点是,如果您的设备确实收到了消息但没有响应,IoT Hub 将认为它超时。 -
实际上,我的问题是无法在我的设备上接收来自 $iothub/methods/POST/# 的任何内容。我也尝试使用第三方 MQTT 客户端 MQTT.fx 来分这个主题,但也一无所获。但是,我的设备和 MQTT.fx 都可以从 devices/{deviceID}/messages/devicebound/# 接收消息
-
我了解,您能否将您的问题扩展为您如何通过集线器进行身份验证?你如何构建你的用户名、连接字符串和密码会有帮助。
标签: azure azure-iot-hub