如何在Azure IoT Central的MQTT设备连接中设置iothub-creation-time-utc时间戳?
嘿,我来帮你理清Azure IoT Central里设备时间戳的设置方法,以及你提到的iothub-creation-time-utc相关的官方说明:
官方文档中的时间戳配置方案
针对设备连接IoT Central时的时间戳需求,官方主要提供两种场景的解决方案:
1. 遥测数据的自定义时间戳
如果希望用设备本地时间作为遥测数据的时间戳(而非IoT Central云侧的接收时间),有两种官方认可的方式:
- 通过MQTT消息应用属性设置:在发布遥测的MQTT消息中,添加名为
iothub-creation-time-utc的应用属性,值必须遵循ISO 8601标准格式(例如2024-05-20T14:30:00Z)。IoT Central收到消息后,会直接使用这个属性值作为该条遥测的时间戳。 - 通过遥测Payload字段配置:在遥测的JSON payload中加入自定义时间戳字段(比如
deviceTimestamp),然后登录IoT Central后台,在对应的设备模板里编辑该遥测字段的「时间戳来源」,选择你定义的字段名即可。
2. 设备属性中的时间戳
如果你想把时间戳作为设备属性上报,只需在设备孪生的报告属性中添加自定义字段(比如lastOnlineTime),值同样用ISO 8601格式即可。这里要注意:iothub-creation-time-utc其实是IoT Central自动生成的系统属性,记录的是设备首次注册到平台的时间,这个字段是系统维护的,无法手动修改或设置——之前看到的帖子可能混淆了遥测消息属性和设备孪生系统属性的区别。
MQTT遥测消息示例(带时间戳)
当你用MQTT协议发布遥测时,消息的应用属性和Payload可以这样设置:
- 应用属性:
iothub-creation-time-utc: 2024-05-20T14:30:00Z
- Payload内容:
{"temperature": 25.5, "humidity": 60}
官方文档核心要点总结
官方文档明确指出:
若要使用设备本地时间标记遥测数据,优先通过MQTT消息的应用属性设置
iothub-creation-time-utc,或在Payload中包含时间戳字段并在设备模板中配置来源。设备孪生中的iothub-creation-time-utc是只读的系统属性,由平台自动生成。
内容的提问来源于stack exchange,提问作者mkiesner
相关产品推荐
相关产品推荐

