LoRa+以太网多点动环(Z003C)
[TOC]
一、实现功能简介
基于 FlexLua 《DTU01万能采集器》和《DTU02万能网关》实现 LoRa 多点转 以太网 动环监测。服务器借助 DTU02 LoRa 网关通过以太网 TCP + Json 下发查询命令,相应的DTU01 采集器收到命令后借助 DTU02 Lora 网关向服务器回复温湿度、水浸、烟感等传感数据,详细流程如下图:
通信数据传输格式举例如下:
--服务器希望读取Lora地址为 1 的DTU01采集器下的传感器数据
{"LrAddr":1,"Dev":"TH"}
--随后,Lora地址为 1 的DTU01采集器回复温湿度数据
{"LrAddr":1,"Dev":"TH","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
--服务器希望读取Lora地址为 2 的DTU01采集器下的传感器数据
{"LrAddr":2,"Dev":"TH"}
--随后,Lora地址为 2 的DTU01采集器回复烟感数据,Smog=1表示烟雾传感器报警,Smog=0表示正常
{"LrAddr":2,"Dev":"TH","Data":{"Smog":1},"Err":null}
--服务器希望读取Lora地址为 3 的DTU01采集器下的传感器数据
{"LrAddr":3,"Dev":"TH"}
----随后,Lora地址为 3 的DTU01采集器回复水浸数据,Water=1200 表示:水浸采集电路的电压=1200mv,一般小于1000mv时可判断是浸水事件,水的电导率越强值越低
{"LrAddr":3,"Dev":"TH","Data":{"Water":1200},"Err":null}
"LrAddr"
:可用来标识是哪一台 DTU01 LoRa 采集器
"Dev"
:可用来标识这台 DTU01 采集器采集的是什么传感器,但这里都是"TH"是因为每个DTU01仅接了一个传感器,所以该值固定为"TH"了
"Data"
:中包含的是传感器结果数值
"Err"
:中包含的是故障信息,如果 "Data" = null,则 "Err" 中将包含错误信息,否则平时都是 null
二、实现方法
实现点 | 实现参考文档 |
---|---|
DTU01 万能采集器 + IIc 温湿度传感器 | S001B 文档:SHT30 IIc 接口温湿度传感器采集(Lora被动传输章节) |
DTU01 万能采集器 + 开关量烟感传感器 | S014B 文档:开关量类型烟雾传感器采集(Lora被动传输章节) |
DTU01 万能采集器 + AD电压值水浸传感器 | S013B 文档:电压采集型水浸传感器采集(Lora被动传输章节) |
DTU02 万能网关 | C000C 文档:Lora 转 以太网 Json 透传网关 |
三、源代码
虽然参考上面给出的文档开发者即可以实现整个项目,但为了节省开发者时间,在{FlexLua开源网盘}
-> {Application}
-> {Z003C}
文件夹中也准备好了 DTU01 和 DTU02 的源代码以供开发者参考。
源代码的使用还需注意以下几点:
-
每个 DTU01 采集器源代码中的 LoraAddr 参数应设置为不同的值,但 DTU02 网关源代码中的 LoraAddr 参数应固定为 0
-
DTU02 网关源代码中的 以太网 配置信息请按实际情况正确填写
-
如果有多个像本文章描述的 Lora 网络共存(既多个 DTU02 网关共存),为了实现多网络的共存,需要将 DTU01 的源代码及 DTU02 的源代码中的 LoraSubNetID 设置为其他值,但同一 Lora 网络中的 DTU01 和 DTU02的 LoraSubNetID 值必须相同。