- 默认Lora和Device串口的波特率为115200,8,0,1,None;(Lora串口——单片机连接Lora模块的串口,Device串口——单片机连接设备或者GPRS模块的串口)
- 网关的Lora为定点模式,地址为0xFFFF
- 网关的GPRS服务器地址为我们的主备服务器地址
- 节点的Lora为透传模式,默认地址0xFFFF
- 默认配置为常量,在设备首次初始化时,将配置写入EEPROM
- EEPROM中有个数据完整性标志,每次写数据时先清除标志,然后在写数据,最后在设置完整性标志,如果完整性标志为False,则Lora设备会恢复默认配置
功能说明:
- 未配置的设备启动后,向Device串口发送+++,判断是不是带GPRS模块的网关
- 发送5次+++如果未响应.则停止发送+++,而开始发送网关注册消息(3次),如果收到服务器回应,则说明Device口连接了网络,可以看做是网关
- 如果1、2步骤都没有响应则认为该设备是一个Lora节点
功能说明:
- 设备判断为GPRS后,向GPRS模块配置服务器地址端口等配置信息,将Lora模块配置为定点传输,地址为FFFF(节点透传可以收到)
- 设备判断为Lora节点后,配置Lora模块为透传模式,地址为FFFF(尚未注册需要从服务器获取自己的Lora的相关配置)
- 如果是节点连接了串口转网络设备,并且串口转网络可以连接到服务器,则认为也是网关,只是不进GPRS AT命令配置
功能说明:
- 设备被判断为Lora节点后,向服务器发送注册信息
- 服务器收到Lora节点的注册信息后,分配lora地址,lora信道,lora模式,lora空传速率、心跳时隙等参数给Lora节点
- Lora收到服务器返回的配置参数后,保存并配置到Lora模块
功能说明:
- Lora节点注册后,需要知道自己连接的是什么设备,向服务器请求设备相关的参数,
- 服务器收到Lora节点的设备配置信息后,返回 Device串口参数,设备类型、数据发送时段
- Lora节点收到设备配置相关的信息,设置参数并保存
功能说明:
- 保存设备的一些配置参数,在重启后直接获取
- 保存设备的一些状态标志,如:是什么设备,Lora、 GPRS、 设备参数、等是否配置完成
功能说明:
- 在使用STVP下载程序时,勾选编程前擦除,将Serial Number功能打开,并设置起始地址0X17FF0,长度为4字节,基础值10000000(不同人烧写是用最高位区分),步长设置为1,大端模式,则每次烧写会写入不同的SN到Flash
- 程序启动后读取SN,在后续的通讯中使用
功能说明:
- 网关启动后向服务器建立TCP连接,服务器接收到TCP连接,立即相关网关发起查询命令。连续发送3次,如果网关没有回应则端口连接
- 网关收到服务器查询命令后,向服务器回复SN等信息(同网关注册命令)
- 服务器收到网关回复后,回复确认信息,并关联SN和TCP连接等信息
功能说明:
- 网关和节点向服务器发送时间同步命令
- 服务器接收到时间同步命令后,回复当前服务器的时间戳,滴答数TICk和定时的Counter置零
- 网关收到服务器时间同步的回复消息后,判断是返回给节点的还是给网关自己的,如果是自己的则更新网关的时间。如果是返回给节点的并且网关已经同步过时间,则将网关自己的时间秒,Tick,Counter发送给节点(从而保证网关和节点时间更一致)
- 网关和节点更新自己时间同步标志
功能说明:
- 用Lora节点板子的device串口连接串口转网络设备,并保证串口转网络设备可以连接到服务器。
- Lora在未确认自己类型时,会发送注册信息,收到服务器回复后则将自己设置为网关。
- 如果Lora已经将自己设置为节点,则需要按K1 5秒以上恢复为默认配置,Lora设备会自动重新配置
功能说明:
- 按下K1 1-5秒Lora设备重启
- 按下K1 5秒以上sLora恢复默认配置
功能说明:
- 如果设备需要定时去发送命令读数据,则可以配置一个命令到Lora节点,让节点定时发送命令给设备,并返回设备的数据给服务器
- 服务器下发周期命令,数据字节0第几条命令,1命令的长度,2-3命令的发送周期(2byte 秒),4-n具体的命令
- Lora节点收到命令配置,保存数据,并给服务器返回确认
- 服务器如果没有收到Lora节点确认,则会一直下发
功能说明:
- 如果设备是自动连续发送数据,而且需要过滤掉无效数据,则可以配置一个过滤条件Lora节点,让节点过滤出有效的数据再发送给服务器
- 服务器下发过滤条件,数据字节0第几条过滤,1过滤的长度,2过滤数据的类型(1连续相同),3-4过滤命令参数(2byte 连续相同次数),5-n具体的数据匹配模板(0xFF为任意匹配)
- Lora节点收到命令配置,保存数据,并给服务器返回确认
- 服务器如果没有收到Lora节点确认,则会一直下发
功能说明:
- 心跳时隙为一个字节,所以最大为255,则最多255个不同设备在255的某一秒发送心跳
- Lora设备心跳周期(默认5分钟没有配置)自己的时隙向服务器发送心跳
功能说明:
- Lora和服务器之间按照规定的协议收发数据
帧头 | 帧长 | 帧号 | 设备SN | 版本 | 数据类型 | 设备类型 | Lora信道 | Lora地址 | data | 校验和 | 帧尾 |
---|---|---|---|---|---|---|---|---|---|---|---|
2byte | 1byte | 1byte | 4byte | 1byte | 1byte | 1byte | 1byte | 2byte | 0-n | 1byte | 2byte |
0x5a55 | 0-0xFF | 0-0xFF | 0-0xFFFFFFFF | 0-0xFF | 0-FF | 0-FF | 0-FF | 0-FFFF | 0-0xFF | 0-0xFF | 0x6A69 |
Notes:
- 帧长:不包含帧头和帧尾
- 数据类型:表示这个数据是干嘛的,比如注册、时间同步、设备数据等
- 校验和:不包含帧头帧尾的和
- 不是每个字段都在所有传输中有用
- 服务器可正常将数据发送到指定Lora节点,服务器根据SN找到对应网关的TCP连接,设置要发送的目标的SN,数据类型,Lora信道,Lora地址后发送到网关
- 网关收到数据后按照帧解析,解析出Lora地址,将数据转发到具体的Lora节点
- Lora节点收到数据后按帧解析出数据,将数据发送给设备
- 设备发送数据给Lora节点,lora将数据组装成帧发送给网关,网关则直接将数据转发到服务器
功能说明:
- Lora节点周期性设备数据只在每秒的前1/3发送数据
- Lora节点告警类设备数据只在每秒的2/3时隙发送数据
- Lora网关只在每秒的后1/3发送数据给节点
- Lora节点数据发送时隙要避开心跳时隙
功能说明:
- 在Lora设备异常跑飞后重启Lora设备