华为IoTDA解码插件报告错误:The decoding result is empty.data

前面的博文讲过,在使用Neuron上传数据到华为IoTDA的时候没有使用华为的物模型进行解析,因为两者的数据格式不同。具体的说Neuron上传的格式是

复制代码
{
    "node": "RS485", 
    "group": "Data", 
    "timestamp": 1721737594934, 
    "values": 
        {
            "湿度": 56.8, 
            "温度": 28.3
        }, 
    "errors": {}, 
    "metas": {}
}

而华为要求的格式是这样的:

复制代码
{
	"services": [
		{
			"serviceId": "温湿度",
			"properties": {
				"温度": 20,
				"湿度": 4
			},
			"event_time": "20230321T081126Z" 
		}
	]
}

而在Neuron中并没有配置编码插件的地方。

今天在华为云的IoT平台上发现一个可以配置编解码插件的地方。

于是就想能不能用这个插件机制将收到的MQTT载荷转换为物模型的格式。用JavaScript写了解码函数,实际测试了一下,发现报告错误。从消息跟踪中可以看到错误信息。

错误的详情是这样的。

从中可以看出,我的想法不可行。因为MQTT的载荷类型为二进制数据时,华为的平台才调用decode函数,否则就不调用。所以上传的数据为JSON格式时就无法进行转换。

现在看来只有一个解决办法,就是写一个Neuron插件,在其中修改neu_json_encode_read_resp1函数(定义在main/src/parser/neu_json_rw.c中),实现对华为物模型的支持。

相关推荐
玲小珑4 分钟前
Auto.js 入门指南(六)多线程与异步操作
android·前端
白瓷梅子汤7 分钟前
跟着官方示例学习 @tanStack-table --- Header Groups
前端·react.js
喝牛奶的小蜜蜂11 分钟前
个人小程序:不懂后台,如何做数据交互
前端·微信小程序·小程序·云开发
FG.15 分钟前
Day13
java·面试
front_explorers16 分钟前
Umi项目必看,从Webpack到Rspack,KMI引领性能革命🚀
前端
旺仔牛仔QQ糖17 分钟前
都写那么多项目了, 傻傻分不清楚NODE_ENV 和 模式(Mode) 两者区别是什么
前端·面试
xcLeigh22 分钟前
HTML5实现简洁的体育赛事网站源码
前端·html
棉花糖超人25 分钟前
【从0-1的CSS】第1篇:CSS简介,选择器已经常用样式
前端·css
GISer_Jing30 分钟前
XHR / Fetch / Axios 请求的取消请求与请求重试
前端·javascript·网络
天涯学馆34 分钟前
微前端架构设计:从理论到实践的全面指南
前端·javascript·面试