【问题标题】:Azure IoT Hub - Send message (C2D) to one device on 2 topics instead of devicebound/#Azure IoT 中心 - 将消息 (C2D) 发送到 2 个主题的一台设备,而不是 devicebound/#
【发布时间】:2018-02-13 20:48:40
【问题描述】:

作为 MQTT 客户端(设备),我使用 devices/{deviceid}/messages/devicebound/# 主题来接收云到设备的消息。这个设备对我来说是一个网关,它连接了 3 个设备。 我想在 3 个不同的主题上向 1 个网关发送 3 个不同的命令,例如

devices/{deviceid}/messages/devicebound/device1
devices/{deviceid}/messages/devicebound/device2
devices/{deviceid}/messages/devicebound/device3

我的网关已在 iot-hub 中注册,我在 {deviceid} 使用它。

有可能吗?

【问题讨论】:

    标签: mqtt azure-iot-hub


    【解决方案1】:

    根据官方文档“Communicate with your IoT hub using the MQTT protocol”,它说:

    由于 IoT 中心不是一个通用的发布-订阅消息代理,它 仅支持记录的主题名称和主题过滤器。

    IoT 中心使用主题名称传递消息 设备/{device_id}/messages/devicebound/,或 devices/{device_id}/messages/devicebound/{property_bag} 如果有 任何消息属性。

    这是一个使用系统属性“messageId”作为过滤器的解决方案。所以你的三个主题:

    devices/{deviceid}/messages/devicebound/device1 
    devices/{deviceid}/messages/devicebound/device2 
    devices/{deviceid}/messages/devicebound/device3
    

    看起来像这样:

    devices/{deviceid}/messages/devicebound/%24.mid=device1&%24.to=%2Fdevices%2Ftest1%2Fmessages%2FdeviceBound&iothub-ack=full
    devices/{deviceid}/messages/devicebound/%24.mid=device2&%24.to=%2Fdevices%2Ftest1%2Fmessages%2FdeviceBound&iothub-ack=full
    devices/{deviceid}/messages/devicebound/%24.mid=device3&%24.to=%2Fdevices%2Ftest1%2Fmessages%2FdeviceBound&iothub-ack=full
    

    这是测试:

    从 azure 设备资源管理器发送 C2D 消息:

    从 MQTTBox 接收 C2D 消息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-05
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多