AliOS Things+阿里云 10分钟搭建智慧农业解决方案

AliOS Things+阿里云 10分钟搭建智慧农业解决方案

1.1 样品介绍

在工业、农业物联网布线场景中以MODBUS类型为主,样品提供MODBUS类型传感器硬件和软件快速接入方案,并将传感器数据上传到阿里云物联网平台,在云端table store数据库存储,在datav数据大屏上可视化展现。git

样品主要特性github

  • 本地支持MODBUS工业控制协议的传感器,有叶面湿度、叶面湿度、土壤含水率、土壤温度、土壤酸碱度、光照、二氧化碳含量、大气压力、PM2.五、PM十、风向、风速、降水量等。
  • AliOS Things物联网操做系统
  • 阿里云物联网平台
  • 云端table Store数据库数据存储
  • datav数据大屏实时数据和历史数据可视化展现

应用场景数据库

  • 气象监测
  • 农业大棚监测

MODBUS传感器数据通过下面数据流json

MODBUS传感器->AliOS Things(uData)->阿里云物联网平平台->OTS规则引擎->TABLESTORE->DATAV数据大屏markdown

1.2 样品展现

数据大屏地址
https://datav.aliyun.com/share/b2eed2f4627cf281022bbb4f23c2b568app


2 设备端侧搭建

2.1 环境准备

  • Developerkit开发板一套
  • ttl转485
  • MODBUS传感器
  • 485集线器(非必需)

2.2 设备链接

developerkit开发板上TTL串口RX,TX,GND(白线,灰线,黑线)分别链接转换板的RX,TX,GND。
转换板上485 A,B两个端口链接到485集线器A,B端子上(红线,橙线)框架

传感器的485 A,B端口(黄线和绿线)链接到485集线器上,电源和地(红线和黑线)接到电源接口上。
阿里云

将developerkit、ttl转485转换板USB供电,传感器和485集线器12V电源供电,至此硬件连线完毕。操作系统

2.3 uData传感器框架

AliOS Things提供一套传感器uData框架,将MODBUS传感器抽象驱动节点,经过vfs接口open,read操做。
AliOS Things还提供MODBUS协议库,MODBUS传感器驱动调用MODBUS库接口读取传感器数据。3d

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 传感器驱动

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-W一、JHFX-W一、JHYL-W1这三款传感器为例,能够获取到风速、风向、总降水、当日降水量等数据。

2.4.2 uData service注册

在文件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;

2.4.3 四元组修改

修改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"

2.4.4 uDataapp-example

文件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}

3 云端配置

3.1 建立产品

阿里云物联网平台建立产品
https://cn.aliyun.com/product/iot?spm=5176.cniot.loT.1.40721ba6VeAQwS

在建立的产品中定义新Topic类

3.2 建立设备

生成的三元组信息须要和设备端一致。

3.3 建立规则引擎

3.4 编写规则引擎SQL语句

用于解析topic收到的json payload。

3.5 建立Table Store数据库实例

https://cn.aliyun.com/product/ots?spm=5176.cniot.cloudEssentials.78.19b81ba6dHx6op

3.6 建立Table Store数据表

设置time为主键,为字符串

3.7 编写规则转发数据目的地

> 实例、数据表、主键和 3.5和3.6中建立的实例、数据表、主键对应。

3.8 datav数据大屏添加数据

阿里云数据大屏地址
https://data.aliyun.com/visual/datav?spm=5176.7968328.dataTechnology.6.69631232y6lNwp

3.9 建立可视化大屏

左侧提供一些模板供参考

3.10 datav获取数据实例

建立一个仪表盘组件

以风向数据为例,用getRange操做方式指定“direction”从后往前查找,“limit”:1 查找最新的一个数据。将WINDDIR字段值给value

至此就能够实现风向数据实时更新。