太阳集团tcy8722

当前位置: 首页 >应用方案 >技术应用 >

Node-RED联动云平台物模型实现电表数据上报教程

因为篇幅原因,我们将Node-RED联动云平台物模型实现电表数据上报教程分为了三段,前文撰写的《Node-RED联动ONENET云平台物模型的应用教程》、《阿里云物模型的应用教程》两篇文章中介绍了什么是物模型、ONENET物模型的使用以及阿里云物模型的使用教程。本文将重点介绍Node-RED联动云平台物模型实现电表数据上报过程的案例教程,

DDSU666电表数据上报步骤


Node-RED实现电表数据上云》一文中使用Node-RED通过“MQTT节点”并利用“自定义topic”将透明报文数据传输至服务器实现了电表数据上云,通过自定义topic的方式连接服务器,无法使用平台的其他开发工具,通过前面对阿里云与中移物联网的物联网平台的物模型进行报文分析,接下来就手把手教大家使用物模型连接DDSU电表;

1、物模型如何链接DDSU666电表

下图为《Node-RED实现电表数据上云》的系统框架,接下来就在此基础上添加JSON报文解析和报文组合就可以实现物模型控制;

Node-RED实现电表数据上云

按照阿里云物模型使用”提供方法在定义“正向有功总功率”“当前电压”“当前电流”“当前功率”“查询代码”五条属性(查询代码采用枚举,其余需要使用浮点值),之后就是在“阿里云查询”节点后添加两个函数节点,分别用于提取平台查询代码和查询代码保存(后续上报时需要用到);

Node-RED实现电表数据上云1

函数(提取查询代码)1:

msg.payload = msg.payload.params.Query_code;

return msg;

函数(保存查询代码)2:

var QueryCode=0;

flow.set("QueryCode", msg.payload);

return QueryCode;

以上步骤就可以完成阿里云平台下发的配置指令解析,随后和之前一样,通过查询码,查询电表数据;

查询电表数据

“电表解析”完成后,增加函数节点,组合JSON报文;

电表解析

函数(ALIYUN报文配置)3:

var cache={"id":"123","version":"1.0","params":{},"method":"thing.event.property.post"};

cache.id = String(Date.parse(new Date())/1000); //id数据用时间戳替换

var QueryCode=flow.get('QueryCode') || 0;

switch (QueryCode){

   case 1:

       cache.params.P = parseFloat(msg.payload);

       break;

   case 2:

       cache.params.V = parseFloat(msg.payload);

       break;

   case 3:

       cache.params.I = parseFloat(msg.payload);

       break;

   case 4:

       cache.params.p = parseFloat(msg.payload);

       break;

}

msg.payload=cache;

return msg;

调整“阿里云查询”“阿里云上报”的地址:

阿里云查询(属性设置):/sys/a1iJTfIclao/DEV01/thing/service/property/set

阿里云查询

阿里云上报(属性上报):/sys/a1iJTfIclao/DEV01/thing/event/property/post

阿里云上报

和阿里云一样的方法定义五个属性,分别为“正向有功总电能”“当前电压”“当前电流”“当前功率”“查询代码”

阿里云定义3

添加mqtt in”节点、“函数”(返回报文)、“mqtt out”节点;

阿里云定义4


函数(返回报文),需要id一致:

var msg_cache = {"id":"1","code":200,"msg":"success"};

msg_cache.id=msg.payload.id;

msg.payload=msg_cache;

return msg;

阿里云定义5

解析过程与阿里云同步,调整函数(ONENET报文配置):

var cache={"id":"123","version":"1.0","params":{}};

cache.id = String(Date.parse(new Date())/1000);//id数据用时间戳替换

var QueryCode=flow.get('QueryCode') || 0;

switch (QueryCode){

   case 1:

       cache.params.P={};

       cache.params.P.value = parseFloat(msg.payload);

       cache.params.P.time = Date.parse(new Date());//上传时间错

       break;

   case 2:

       cache.params.V={};

       cache.params.V.value = parseFloat(msg.payload);

       cache.params.V.time = Date.parse(new Date());

       break;

   case 3:

       cache.params.I={};

       cache.params.V.value = parseFloat(msg.payload);

       cache.params.I.time = Date.parse(new Date());

       break;

   case 4:

       cache.params.p={};

       cache.params.V.value = parseFloat(msg.payload);

       cache.params.p.time = Date.parse(new Date());

       break;

}

msg.payload=cache;

return msg;

ONENET查询(属性设置):$sys/QpUi02FdgF/220220069406/thing/property/set

实现电表数据上报教程1

返回接收成功(属性设置响应):$sys/QpUi02FdgF/220220069406/thing/property/set_reply

实现电表数据上报教程2

ONENET上报(属性上报):$sys/QpUi02FdgF/220220069406/thing/property/post

实现电表数据上报教程3

至此就成功将DDSU666电表连接到阿里云与中移物联网。

实现电表数据上报教程4

2、电表数据查询

ONENET调试窗口查询电表数据;

实现电表数据上报教程5

ALIYUN调试窗口查询电表数据;

实现电表数据上报教程6

好了,今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的太阳集团tcy8722官网进行了解,也可以直接拨打400电话咨询技术专员!


太阳集团tcy8722