You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Azure IoT Hub的遥测数据发布至MQTT主题?

核心问题定位

你之前尝试直接对接Azure IoT Hub MQTT失败是配置逻辑搞错了,两个核心原因:

  • 你填的http://{IoTHubName}.azure-devices.net/不是可用的MQTT代理地址,IoT Hub的MQTT接入走8883端口的TLS加密连接,且这个端点仅支持设备端持专属身份凭证上报消息,完全不开放第三方客户端直接订阅设备消息的权限
  • 你使用的/{deviceID}/messages/events/是设备侧发送遥测的发消息主题,不是给消费侧用的订阅主题,方向完全搞反。你能通过az iot hub monitor-events --hub-name {IoTHubName}查到消息,是因为该命令走的是IoT Hub内置事件中心的消费通道,和公开MQTT订阅是两套独立逻辑。
可落地实现方案

根据你的场景(刚接触相关技术、优先输出JSON格式、对接Vantiq MQTT订阅),推荐两个零复杂代码的方案:

方案1:托管桥接(适合生产/长期运行场景)

全程在Azure控制台可视化配置,不需要自己搭服务:

  • 进入IoT Hub实例的事件配置页,新建事件订阅,事件类型勾选「设备遥测消息」
  • 事件订阅终点选择支持公开MQTT接入的托管服务(Azure自带的事件网格MQTT功能即可满足,测试用免费层额度足够)
  • 在事件订阅的高级配置中,将消息输出格式设置为原始JSON透传,过滤掉Azure平台自动追加的系统包裹字段,直接输出设备上报的原始传感器数据
  • 配置完成后你会拿到标准MQTT连接地址、认证凭证、对应遥测主题,把这些信息填入Vantiq的MQTT源配置即可正常订阅数据。

方案2:本地轻量桥接(适合测试场景,零额外成本)

用你当前跑模拟器的树莓派就能部署,10分钟即可完成配置:

  1. 先在树莓派上安装轻量MQTT代理Mosquitto,启动后默认监听1883端口,无额外配置即可使用
  2. 安装必要依赖:
pip install azure-eventhub paho-mqtt
  1. 编写极简桥接脚本,从IoT Hub内置事件中心拉取遥测消息,直接转发到本地MQTT代理的自定义主题:
from azure.eventhub import EventHubConsumerClient
import paho.mqtt.publish as publish
import json

# 连接串从IoT Hub「内置事件中心」配置页复制,使用服务级权限连接串
IOTHUB_CONN_STR = "替换为你的IoT Hub内置事件中心连接串"
CONSUMER_GROUP = "$Default"
# 自定义本地MQTT主题,Vantiq侧订阅这个主题即可
TARGET_MQTT_TOPIC = "sensor/raspberrypi/telemetry"
LOCAL_MQTT_HOST = "localhost"

def handle_receive_message(partition_context, event):
    # 透传原始JSON格式消息到本地MQTT
    raw_msg = event.body_as_json()
    publish.single(
        TARGET_MQTT_TOPIC,
        payload=json.dumps(raw_msg),
        hostname=LOCAL_MQTT_HOST
    )
    partition_context.update_checkpoint(event)

if __name__ == "__main__":
    consumer = EventHubConsumerClient.from_connection_string(
        IOTHUB_CONN_STR,
        CONSUMER_GROUP
    )
    with consumer:
        consumer.receive(
            on_event=handle_receive_message,
            starting_position="-1"
        )
  1. 后台运行该脚本,确保Vantiq所在网络能访问树莓派的1883端口,填入对应MQTT连接信息即可拿到实时JSON数据。
避坑提示
  • 不用再尝试直接对接IoT Hub原生MQTT端点做消息订阅,该能力从产品设计上就没有开放,所有第三方平台消费IoT Hub消息都需要走桥接/转发路径
  • 如果Vantiq侧要求MQTT over TLS加密,给Mosquitto或者托管MQTT服务配置对应证书即可,所有配置都是可视化操作,不需要修改核心转发逻辑
  • 如果设备上报的数据不是标准JSON,直接在桥接层加几行代码做格式转换即可,比修改设备端上报逻辑灵活很多。

内容的提问来源于stack exchange,提问作者Adam Logan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 11:21:43