摘要:?AliOS Things+阿里云 10分鐘搭建智慧農(nóng)業(yè)解決方案 1.1 樣品介紹 在工業(yè)、農(nóng)業(yè)物聯(lián)網(wǎng)布線場(chǎng)景中以MODBUS類型為主,樣品提供MODBUS類型傳感器硬件和軟件快速接入方案,并將傳感器數(shù)據(jù)上傳到阿里云物聯(lián)網(wǎng)平臺(tái),在云端table store數(shù)據(jù)庫(kù)存儲(chǔ),在datav數(shù)據(jù)大屏上可視化展示。
AliOS Things+阿里云 10分鐘搭建智慧農(nóng)業(yè)解決方案
1.1 樣品介紹
在工業(yè)、農(nóng)業(yè)物聯(lián)網(wǎng)布線場(chǎng)景中以MODBUS類型為主,樣品提供MODBUS類型傳感器硬件和軟件快速接入方案,并將傳感器數(shù)據(jù)上傳到阿里云物聯(lián)網(wǎng)平臺(tái),在云端table store數(shù)據(jù)庫(kù)存儲(chǔ),在datav數(shù)據(jù)大屏上可視化展示。
樣品主要特性
本地支持MODBUS工業(yè)控制協(xié)議的傳感器,有葉面濕度、葉面濕度、土壤含水率、土壤溫度、土壤酸堿度、光照、二氧化碳含量、大氣壓力、PM2.5、PM10、風(fēng)向、風(fēng)速、降水量等。
AliOS Things物聯(lián)網(wǎng)操作系統(tǒng)
阿里云物聯(lián)網(wǎng)平臺(tái)
云端table Store數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)
datav數(shù)據(jù)大屏實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)可視化展示
應(yīng)用場(chǎng)景
氣象監(jiān)測(cè)
農(nóng)業(yè)大棚監(jiān)測(cè)
MODBUS傳感器數(shù)據(jù)經(jīng)過(guò)下面數(shù)據(jù)流
MODBUS傳感器->AliOS Things(uData)->阿里云物聯(lián)網(wǎng)平平臺(tái)->OTS規(guī)則引擎->TABLESTORE->DATAV數(shù)據(jù)大屏
1.2 樣品展示
數(shù)據(jù)大屏地址?
https://datav.aliyun.com/share/b2eed2f4627cf281022bbb4f23c2b568
2 設(shè)備端側(cè)搭建
2.1 環(huán)境準(zhǔn)備
Developerkit開(kāi)發(fā)板一套
ttl轉(zhuǎn)485
MODBUS傳感器
485集線器(非必需)
2.2 設(shè)備連接
developerkit開(kāi)發(fā)板上TTL串口RX,TX,GND(白線,灰線,黑線)分別連接轉(zhuǎn)換板的RX,TX,GND。
轉(zhuǎn)換板上485 A,B兩個(gè)端口連接到485集線器A,B端子上(紅線,橙線)
傳感器的485 A,B端口(黃線和綠線)連接到485集線器上,電源和地(紅線和黑線)接到電源接口上。
將developerkit、ttl轉(zhuǎn)485轉(zhuǎn)換板USB供電,傳感器和485集線器12V電源供電,至此硬件連線完畢。
2.3 uData傳感器框架
AliOS Things提供一套傳感器uData框架,將MODBUS傳感器抽象驅(qū)動(dòng)節(jié)點(diǎn),通過(guò)vfs接口open,read操作。
AliOS Things還提供MODBUS協(xié)議庫(kù),MODBUS傳感器驅(qū)動(dòng)調(diào)用MODBUS庫(kù)接口讀取傳感器數(shù)據(jù)。
2.4 代碼下載和修改
代碼托管在github上地址:?https://github.com/alibabayf/AliOS_modbus
分支weather
git?clone?https://github.com/alibabayf/AliOS_modbus git?checkout?weather
代碼編譯
aos?make?uDataapp@developerkit
2.4.1 傳感器驅(qū)動(dòng)
MODBUS傳感器驅(qū)動(dòng)添加通過(guò)下面配置表修改
device/sensor/drv/sensor_drv_conf.h
const?modbus_sensor_t?modbus_sensors[]?=?{ {?"KunLunHaiAn",?"JHFS-W1",?"wind?speed",?dev_windspeed_path,?TAG_DEV_WINDSPD, ??SENSOR_OPEN,?0X30,?0x002A,?1,?0,?50?}, {?"KunLunHaiAn",?"JHFX-W1",?"wind?direction",?dev_winddirection_path,?TAG_DEV_WINDDIR, ??SENSOR_OPEN,?0X31,?0x002A,?1,?0,?50?}, {?"KunLunHaiAn",?"JHYL-W1",?"current?precipitation",?dev_rainfall_path,?TAG_DEV_RAIN, ??SENSOR_OPEN,?0X32,?0x0002,?1,?0,?50?}, {?"KunLunHaiAn",?"JHYL-W1",?"today?precipitation",?dev_todayrainfall_path,?TAG_DEV_TODAYRAIN, ??SENSOR_OPEN,?0X32,?0x0001,?1,?0,?50?}, };
modbus_sensor_t 中分別指廠商名,型號(hào),名稱,設(shè)備節(jié)點(diǎn)路徑,傳感器類型,驅(qū)動(dòng)是否支持,從設(shè)備地址,寄存器地址,寄存器數(shù)量,是否數(shù)據(jù)反轉(zhuǎn),讀數(shù)據(jù)超時(shí)時(shí)間。
大部分參數(shù)已經(jīng)配置好了,需要開(kāi)發(fā)者修改的是用戶自己設(shè)置的傳感器從設(shè)備地址和驅(qū)動(dòng)是否支持。本例中以JHFS-W1、JHFX-W1、JHYL-W1這三款傳感器為例,可以獲取到風(fēng)速、風(fēng)向、總降水、當(dāng)日降水量等數(shù)據(jù)。
2.4.2 uData service注冊(cè)
在文件framework/uData/service/service_process.c中注冊(cè)四類傳感器服務(wù)
case?UDATA_SERVICE_WINDSPD: ret?=?udata_std_service_register(type);break;case?UDATA_SERVICE_WINDDIR: ret?=?udata_std_service_register(type);break;case?UDATA_SERVICE_RAIN: ret?=?udata_std_service_register(type);break;case?UDATA_SERVICE_TODAYRAIN: ret?=?udata_std_service_register(type);break;
2.4.3 四元組修改
修改framework/protocol/linkkit/iotkit/sdk-encap/imports/iot_import_product.h中四元組信息,為云端創(chuàng)建設(shè)備后獲得
#define?PRODUCT_KEY?"a1N9KL6USIp"#define?PRODUCT_SECRET??"Voaf7vWI0Ioki4k3GSNP5QeEr8zeJinG"#define?DEVICE_NAME?"shanghaiT3"#define?DEVICE_SECRET???"Voaf7vWI0Ioki4k3GSNP5QeEr8zeJinG"
2.4.4 uDataapp-example
文件example/uDataapp/uData-example.c
訂閱四類傳感器數(shù)據(jù)
?ret?=?uData_subscribe(UDATA_SERVICE_WINDSPD);?ret?=?uData_subscribe(UDATA_SERVICE_WINDDIR);?ret?=?uData_subscribe(UDATA_SERVICE_RAIN);?ret?=?uData_subscribe(UDATA_SERVICE_TODAYRAIN);
example中拿到傳感器數(shù)據(jù)會(huì)按照下面json格式發(fā)送給云端。
{"WINDSPD":xxx,"WINDDIR":xxx,"RAIN":xxx,"TODAYRAIN":xxx}
3 云端配置
3.1 創(chuàng)建產(chǎn)品
阿里云物聯(lián)網(wǎng)平臺(tái)創(chuàng)建產(chǎn)品
https://cn.aliyun.com/product/iot?spm=5176.cniot.loT.1.40721ba6VeAQwS
在創(chuàng)建的產(chǎn)品中定義新Topic類
3.2 創(chuàng)建設(shè)備
生成的三元組信息需要和設(shè)備端一致。
3.3 創(chuàng)建規(guī)則引擎
3.4 編寫規(guī)則引擎SQL語(yǔ)句
用于解析topic收到的json payload。
3.5 創(chuàng)建Table Store數(shù)據(jù)庫(kù)實(shí)例
https://cn.aliyun.com/product/ots?spm=5176.cniot.cloudEssentials.78.19b81ba6dHx6op
3.6 創(chuàng)建Table Store數(shù)據(jù)表
設(shè)置time為主鍵,為字符串
3.7 編寫規(guī)則轉(zhuǎn)發(fā)數(shù)據(jù)目的地
> 實(shí)例、數(shù)據(jù)表、主鍵和 3.5和3.6中創(chuàng)建的實(shí)例、數(shù)據(jù)表、主鍵對(duì)應(yīng)。
3.8 datav數(shù)據(jù)大屏添加數(shù)據(jù)
阿里云數(shù)據(jù)大屏地址
https://data.aliyun.com/visual/datav?spm=5176.7968328.dataTechnology.6.69631232y6lNwp
3.9 創(chuàng)建可視化大屏
左側(cè)提供一些模板供參考
3.10 datav獲取數(shù)據(jù)實(shí)例
創(chuàng)建一個(gè)儀表盤組件
以風(fēng)向數(shù)據(jù)為例,用getRange操作方式指定“direction”從后往前查找,“l(fā)imit”:1 查找最新的一個(gè)數(shù)據(jù)。將WINDDIR字段值給value
至此就可以實(shí)現(xiàn)風(fēng)向數(shù)據(jù)實(shí)時(shí)更新。
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
評(píng)論
查看更多