IoT客户端on_message_received未触发接收C2D消息
Azure IoT Hub C2D消息设备端监听器未触发问题
已按微软文档实现云到设备(C2D)消息功能:
- 后端通过
IoTHubRegistryManager发送C2D消息正常,运行后在IoT Hub门户可确认目标设备的C2D消息队列数为1。 - 设备端使用
IoTHubModuleClient初始化连接,device_twin_patch_handler(孪生更新)、connection_change_handler(连接状态变更)均可正常触发,但绑定到on_message_received的receive_message_handler从未被调用,已确认消息发送到了当前连接的设备。
设备端简化代码如下:
class RunnerClass: def __init__(self): self.iot_client: IoTHubModuleClient async def device_twin_patch_handler(self, patch: dict) -> None: # 孪生更新时触发(正常工作) logging.info("Handle incoming patch.") async def connection_change_handler(self) -> None: # 连接状态变更时触发(正常工作) logging.info("Connection change detected...") async def receive_message_handler(self, message: Message) -> None: # C2D消息进入设备队列时未触发此方法 logging.info("Received optimization response:") for property in vars(message).items(): logging.info(f"\t{property}") async def create_iot_client(self) -> None: self.iot_client: IoTHubModuleClient = IoTHubModuleClient.create_from_edge_environment() await self.iot_client.connect() self.iot_client.on_message_received = self.receive_message_handler self.iot_client.on_twin_desired_properties_patch_received = self.device_twin_patch_handler self.iot_client.on_connection_state_change = self.connection_change_handler
是否遗漏了某些配置?使用的是标准层IoT Hub。
内容的提问来源于stack exchange,提问作者poklaassen
相关产品推荐
相关产品推荐

