本帖最后由 mayuanliang 于 2022-3-14 10:09 编辑
#申请原创# @小跑堂 背景:近年来,物联网技术在工业、农业、环境、交通、物流以及安保等领域具有广泛的应用,其核心框架为:1. 传感器实时采集现实世界的的物理信息; 2. 通过计算机技术实现系统的全局优化,进行资源的合理分配,进而提高加工生产效率。因此,近来购买了dtu模块(FS724模块),实现mcu与阿里云平台的连接;整个过程中完成了物理模型创建,数据解析程序的编写调试,规则的创建以及数据保存等环节的调试工作,在此基础上,相关的内容进行了简要的整理,具体如下所示:
目标:1. 将传感器采集数据的上传到阿里云平台;2. 将数据保存到云平台;
需要准备的材料:1. dtu模块(FS724模块);2. 阿里云平台账号申请;3. ttl串口工具;4. 电源;5. 导线若干;
主要步骤:
1. 注册阿里云平台,创建产品及设备,获取设备证书(三元组)(网上有大量的教程,该过程不赘述),具体结果如下图所示:
2. 通过usb-TTL串口工具,将FS724模块与电脑连接;主要引脚有:VIN、GND、TX、RX;其中,电路板需要单独的电源供电(非常关键)(血泪教训);具体过程如下图所示:
模块与电脑连接成功后,点击“读取所有参数”按钮,返回读取成功的信息提示;
3. 打开YunDTU ConfigTool工具,点击socket参数,配置阿里云接口信息,将产品三元组信息填写到相应位置;
4. 登录阿里云平台,配置解析程序;(后续步骤较为关键,核心内容)
采用Javascipt脚本语言,将解析程序嵌入到阿里云平台
<font size="3" color="#000000">/**
* 将设备自定义topic数据转换为json格式数据, 设备上报数据到物联网平台时调用
* 入参:topic string 设备上报消息的 topic
* 入参:rawData byte[] 数组 不能为空
* 出参:jsonObj JSON 对象 不能为空
*/
var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //物联网平台Topic,设备上传属性数据到云端。
function transformPayload(topic, rawData) {
var jsonObj = {};
var dataSrc = String.fromCharCode.apply(String, rawData);
var data = dataSrc.split(',');
jsonObj.method = ALINK_PROP_REPORT_METHOD; //ALink JSON格式,属性上报topic。
jsonObj.version = '1.0'; //ALink JSON格式,协议版本号固定字段。
// jsonObj.id = '' + dataView.getInt32(1); //ALink JSON格式,标示该次请求id值。
var params = {};
params.v = parseInt(data[1]); //对应产品属性中prop_int16。
jsonObj.params = params; //ALink JSON格式,params标准字段。
// jsonObj.v = parseInt(data[1]);
return jsonObj;
}</font>
5. 云平台能够将传感器采集的数据保存在服务器端,后续通过算法解算设备的运行状态,其中,具体过程为:创建数据源,开通存储到表格(tablestore)功能等;
6. 配置数据流转规则,创建解析器,将数据源与表格存储链接到一起;(关键步骤)
程序调试:
编辑解析器脚本,具体程序代码为:
<font size="3" color="#000000">//通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。
var data = payload("json");
//直接流转物模型上报数据。
//var dianyatest = data.items.dianya.value;
var dianya_value = getOrNull(data, "items", "dianya", "value");
writeTableStore(1001, {"timestamp":timestamp(), "dianya":dianya_value});</font>
7. 结果展示:通过阿里云平台,将传感器数据保存到表格中,后续可以进行特征识别
展示了阿里云平台将传感器传输的数据进行了保存的结果;
8. 钉钉助手配置:添加条件控制命令,当采集信号触发后,能够给后台提供预警信息,具体如下图所示;
图b-c展示了系统对传感器采集的数据进行分析,当满足触发条件后(例如:传感器电压过低),能够通过钉钉将设备状态告知用户端,实现设备的远程管理。
整个过程中问题及解决方案:
1. 数据传输过程中出现断开连接问题;
解决方案:最开始测试中,发现信号传输的延时达到2s左右(震惊),后来发现电脑端口输出功率为2-4w,不能满足Fs724模块的功率(7W),引发连接不稳定的现象。
3.数据解析功能;当整个系统对网络流量较为敏感、底端硬件配置较低或者资源受限等应用场景中,设备与阿里云进行通信时,一般采用透传/自定义数据格式的方式。例如:LoRaWAN温湿度传感器与阿里云进行通信时,传输的数据源文件为:000102(三个字节),后续通过阿里云平台的数据解析程序,转换为JSON格式数据;{"method":"thing.event.property.post","id":"12345", "params":{"Temperature":1,"Humidity":2}, "version":"1.1"}
阿里云物理模型采用json格式数据,需要配置解析程序代码;
|