如何使用Hono批量发送遥测数据?JSON格式问题求助
正确的Ditto批量遥测数据发送格式方案
你当前的批量JSON格式存在两个核心问题:
data字段下直接并列多个JSON对象,违反JSON语法规范(对象的属性值只能是单个值、数组或嵌套对象)- 未遵循Eclipse Ditto的批量命令或批量修改规范
方案1:使用Ditto批量命令格式
Ditto支持通过单个HTTP请求发送多条独立命令,只需将所有单条命令包裹在一个JSON数组中即可:
[ {"topic": "org.tip/dev1/things/twin/commands/modify","headers": {},"path": "/features/sensor1/properties/value","value": 1}, {"topic": "org.tip/dev1/things/twin/commands/modify","headers": {},"path": "/features/sensor2/properties/value","value": 23}, {"topic": "org.tip/dev1/things/twin/commands/modify","headers": {},"path": "/features/sensor3/properties/value","value": 32}, {"topic": "org.tip/dev1/things/twin/commands/modify","headers": {},"path": "/features/sensor4/properties/value","value": 4}, {"topic": "org.tip/dev1/things/twin/commands/modify","headers": {},"path": "/features/sensor5/properties/value","value": 13}, {"topic": "org.tip/dev1/things/twin/commands/modify","headers": {},"path": "/features/sensor6/properties/value","value": 17} ]
发送时需确保HTTP请求的Content-Type设置为application/json,请求路径与单条命令一致。
方案2:单条命令批量更新多个传感器值
更高效的方式是利用Ditto的JSON合并特性,在一条modify命令中一次性更新所有传感器值:
{ "topic": "org.tip/dev1/things/twin/commands/modify", "headers": {}, "path": "/features", "value": { "sensor1": {"properties": {"value": 1}}, "sensor2": {"properties": {"value": 23}}, "sensor3": {"properties": {"value": 32}}, "sensor4": {"properties": {"value": 4}}, "sensor5": {"properties": {"value": 13}}, "sensor6": {"properties": {"value": 17}} } }
这里将path设为/features,value字段包含所有传感器的属性结构,Ditto会自动将这些修改合并到现有孪生数据中。若只需更新value字段,也可将path设为/features,仅在value中指定每个传感器的properties.value子结构。
注意:HTTP 202状态码仅表示Hono适配器已接收请求,不代表Ditto成功处理。可通过Ditto的孪生数据查询API验证修改结果,或查看Ditto日志排查格式问题。
内容的提问来源于stack exchange,提问作者Johnz
相关产品推荐
相关产品推荐

