因為篇幅原因,我們將Node-RED聯(lián)動云平臺物模型實現(xiàn)電表數(shù)據(jù)上報教程分為了三段,前文撰寫的《Node-RED聯(lián)動ONENET云平臺物模型的應用教程》、《阿里云物模型的應用教程》兩篇文章中介紹了什么是物模型、ONENET物模型的使用以及阿里云物模型的使用教程。本文將重點介紹Node-RED聯(lián)動云平臺物模型實現(xiàn)電表數(shù)據(jù)上報過程的案例教程,
《Node-RED實現(xiàn)電表數(shù)據(jù)上云》一文中使用Node-RED通過“MQTT節(jié)點”并利用“自定義topic”將透明報文數(shù)據(jù)傳輸至服務器實現(xiàn)了電表數(shù)據(jù)上云,通過自定義topic的方式連接服務器,無法使用平臺的其他開發(fā)工具,通過前面對阿里云與中移物聯(lián)網(wǎng)的物聯(lián)網(wǎng)平臺的物模型進行報文分析,接下來就手把手教大家使用物模型連接DDSU電表;
下圖為《Node-RED實現(xiàn)電表數(shù)據(jù)上云》的系統(tǒng)框架,接下來就在此基礎上添加JSON報文解析和報文組合就可以實現(xiàn)物模型控制;
按照“阿里云物模型使用”提供方法在定義“正向有功總功率”“當前電壓”“當前電流”“當前功率”“查詢代碼”五條屬性(查詢代碼采用枚舉,其余需要使用浮點值),之后就是在“阿里云查詢”節(jié)點后添加兩個函數(shù)節(jié)點,分別用于提取平臺查詢代碼和查詢代碼保存(后續(xù)上報時需要用到);
函數(shù)(提取查詢代碼)1:
msg.payload = msg.payload.params.Query_code;
return msg;
函數(shù)(保存查詢代碼)2:
var QueryCode=0;
flow.set("QueryCode", msg.payload);
return QueryCode;
以上步驟就可以完成阿里云平臺下發(fā)的配置指令解析,隨后和之前一樣,通過查詢碼,查詢電表數(shù)據(jù);
帶“電表解析”完成后,增加函數(shù)節(jié)點,組合JSON報文;
函數(shù)(ALIYUN報文配置)3:
var cache={"id":"123","version":"1.0","params":{},"method":"thing.event.property.post"};
cache.id = String(Date.parse(new Date())/1000); //將id數(shù)據(jù)用時間戳替換
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
和阿里云一樣的方法定義五個屬性,分別為“正向有功總電能”“當前電壓”“當前電流”“當前功率”“查詢代碼”
添加“mqtt in”節(jié)點、“函數(shù)”(返回報文)、“mqtt out”節(jié)點;
函數(shù)(返回報文),需要id一致:
var msg_cache = {"id":"1","code":200,"msg":"success"};
msg_cache.id=msg.payload.id;
msg.payload=msg_cache;
return msg;
解析過程與阿里云同步,調整函數(shù)(ONENET報文配置):
var cache={"id":"123","version":"1.0","params":{}};
cache.id = String(Date.parse(new Date())/1000);//將id數(shù)據(jù)用時間戳替換
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
返回接收成功(屬性設置響應):$sys/QpUi02FdgF/220220069406/thing/property/set_reply
ONENET上報(屬性上報):$sys/QpUi02FdgF/220220069406/thing/property/post
至此就成功將DDSU666電表連接到阿里云與中移物聯(lián)網(wǎng)。
ONENET調試窗口查詢電表數(shù)據(jù);
ALIYUN調試窗口查詢電表數(shù)據(jù);
好了,今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進行了解,也可以直接撥打400電話咨詢技術專員!
7 X 24 銷售服務熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
無錫辦事處劉經(jīng)理:13558641933
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18828049434
蔡友銀(無線模塊):13882211021 葛宇龍(通信設備):19138800613
胡兵(外貿銷售經(jīng)理):18584911141、 sales06@ebyte.com
業(yè)務郵箱:support@cdebyte.com 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機:028-61543675)
?? 成都億佰特電子科技有限公司【版權所有】 蜀ICP備13019384號