Thingsboard单请求批量提交多条遥测记录的正确构造方法咨询
你之前的数组格式不符合Thingsboard的批量遥测数据规范,平台默认只会解析数组最后一个对象的遥测字段,因此仅显示最后一条记录。同时你原有单条数据中将时间戳ts放在telemetry对象内部的写法也不符合规范,ts需要作为与遥测数据平级的独立字段,且必须使用毫秒级时间戳,秒级时间戳需乘以1000转换后再使用。
以下是两种常用的正确构造方式:
方式1:单设备批量上传(最简格式)
同设备多组数据批量上传可直接使用该格式,无需重复携带设备标识类字段:
[ { "ts": 1631044931000, "values": { "Temperature": 26.29, "Humidity": 59.96, "AirPressure": 1019.5, "GasResistance": 45, "CO2": 902 } }, { "ts": 1631044933000, "values": { "Temperature": 28.29, "Humidity": 59.96, "AirPressure": 1019.5, "GasResistance": 45, "CO2": 902 } } ]
如果需要携带deviceApp、deviceType这类固定属性,直接放入对应条目的values对象内即可。
方式2:兼容多设备批量上传格式
如果需要同时上报多台设备的批量遥测,或你的转换器逻辑必须保留设备名称作为标识,可使用以下格式,外层对象的key为设备名称,value为对应设备的遥测数组:
{ "0000000000005003": [ { "ts": 1631044931000, "values": { "Temperature": 26.29, "Humidity": 59.96, "AirPressure": 1019.5, "GasResistance": 45, "CO2": 902, "deviceApp": "EnviroSense", "deviceType": "EnviroSense" } }, { "ts": 1631044933000, "values": { "Temperature": 28.29, "Humidity": 59.96, "AirPressure": 1019.5, "GasResistance": 45, "CO2": 902, "deviceApp": "EnviroSense", "deviceType": "EnviroSense" } } ] }
以上两种格式上报后,平台会自动拆分所有条目为独立的时间序列记录,Dashboard可正常显示所有历史数据。
内容的提问来源于stack exchange,提问作者user2776917
相关产品推荐
相关产品推荐

