今日头条
摘要: AliOS Things+阿里云 10分钟搭建智慧农业解决方案 1.1 样品介绍 在工业、农业物联网布线场景中以MODBUS类型为主,样品提供MODBUS类型传感器硬件和软件快速接入方案,并将传感器数据上传到阿里云物联网平台,在云端table store数据库存储,在datav数据大屏上可视化展示。
在工业、农业物联网布线场景中以MODBUS类型为主,样品提供MODBUS类型传感器硬件和软件快速接入方案,并将传感器数据上传到阿里云物联网平台,在云端table store数据库存储,在datav数据大屏上可视化展示。
样品主要特性
本地支持MODBUS工业控制协议的传感器,有叶面湿度、叶面湿度、土壤含水率、土壤温度、土壤酸碱度、光照、二氧化碳含量、大气压力、PM2.5、PM10、风向、风速、降水量等。
AliOS Things物联网操作系统
阿里云物联网平台
云端table Store数据库数据存储
datav数据大屏实时数据和历史数据可视化展示
应用场景
气象监测
农业大棚监测
MODBUS传感器数据经过下面数据流
MODBUS传感器->AliOS Things(uData)->阿里云物联网平平台->OTS规则引擎->TABLESTORE->DATAV数据大屏
数据大屏地址
https://datav.aliyun.com/share/b2eed2f4627cf281022bbb4f23c2b568
Developerkit开发板一套
ttl转485
MODBUS传感器
485集线器(非必需)
developerkit开发板上TTL串口RX,TX,GND(白线,灰线,黑线)分别连接转换板的RX,TX,GND。
转换板上485 A,B两个端口连接到485集线器A,B端子上(红线,橙线)
传感器的485 A,B端口(黄线和绿线)连接到485集线器上,电源和地(红线和黑线)接到电源接口上。
将developerkit、ttl转485转换板USB供电,传感器和485集线器12V电源供电,至此硬件连线完毕。
AliOS Things提供一套传感器uData框架,将MODBUS传感器抽象驱动节点,通过vfs接口open,read操作。
AliOS Things还提供MODBUS协议库,MODBUS传感器驱动调用MODBUS库接口读取传感器数据。
代码托管在github上地址: https://github.com/alibabayf/AliOS_modbus
分支weather
git clone https://github.com/alibabayf/AliOS_modbus git checkout weather
代码编译
aos make uDataapp@developerkit
MODBUS传感器驱动添加通过下面配置表修改
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 中分别指厂商名,型号,名称,设备节点路径,传感器类型,驱动是否支持,从设备地址,寄存器地址,寄存器数量,是否数据反转,读数据超时时间。
大部分参数已经配置好了,需要开发者修改的是用户自己设置的传感器从设备地址和驱动是否支持。本例中以JHFS-W1、JHFX-W1、JHYL-W1这三款传感器为例,可以获取到风速、风向、总降水、当日降水量等数据。
在文件framework/uData/service/service_process.c中注册四类传感器服务
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;
修改framework/protocol/linkkit/iotkit/sdk-encap/imports/iot_import_product.h中四元组信息,为云端创建设备后获得
#define PRODUCT_KEY "a1N9KL6USIp"#define PRODUCT_SECRET "Voaf7vWI0Ioki4k3GSNP5QeEr8zeJinG"#define DEVICE_NAME "shanghaiT3"#define DEVICE_SECRET "Voaf7vWI0Ioki4k3GSNP5QeEr8zeJinG"
文件example/uDataapp/uData-example.c
订阅四类传感器数据
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中拿到传感器数据会按照下面json格式发送给云端。
{"WINDSPD":xxx,"WINDDIR":xxx,"RAIN":xxx,"TODAYRAIN":xxx}
阿里云物联网平台创建产品
https://cn.aliyun.com/product/iot?spm=5176.cniot.loT.1.40721ba6VeAQwS
在创建的产品中定义新Topic类
生成的三元组信息需要和设备端一致。
用于解析topic收到的json payload。
https://cn.aliyun.com/product/ots?spm=5176.cniot.cloudEssentials.78.19b81ba6dHx6op
设置time为主键,为字符串
> 实例、数据表、主键和 3.5和3.6中创建的实例、数据表、主键对应。
阿里云数据大屏地址
https://data.aliyun.com/visual/datav?spm=5176.7968328.dataTechnology.6.69631232y6lNwp
左侧提供一些模板供参考
创建一个仪表盘组件
以风向数据为例,用getRange操作方式指定“direction”从后往前查找,“limit”:1 查找最新的一个数据。将WINDDIR字段值给value
至此就可以实现风向数据实时更新。
本文为云栖社区原创内容,未经允许不得转载。
全部0条评论
快来发表一下你的评论吧 !