目录
一,前言
前几天做LoRaWAN时网关已经成功接入腾讯云,其实就腾讯这个服务器而言,它里面也是采用的ChirpStack,但是是已经封装好的服务器,所以我现在准备自己搭建一个ChiripStack服务器,在昨天已经在虚拟机成功连上了我部署的私有服务器,现在我要让局域网内任何一个物理机都能连上我的服务器,而且这个服务器是已经进行了LoRaWAN相关部署的(有需要的读者可以看看我前几篇博客)。
ChripStack架构:
二,虚拟机设置
由于我的ChirpStack是在我电脑的虚拟机Linux下用Docker部署的,所以想让我局域网的所有主机(主要是网关程序运行的载体板子)都能和他连接,必须将虚拟机网络连接方式设置成桥接模式。这部分在我上一篇博客有讲。
设置成功后的效果是局域网内任何一个物理机都能连上我的服务器(即局域网内任何一个物理机都能ping通我的虚拟机)
三,配置ChirpStack
在前面几项工作都做好了以后就可以开始配置私有的ChirpStack服务器啦!
在我浏览器登录上部署好的ChirpStack开始配置!
3.1,添加Network-servers(网络服务器)
Network-server name:
网络服务器名称;
Network-server server:
网络服务器ip和端口;
3.2,添加service-profiles(服务配置文件)
Service-profile name
:服务配置文件名称;
Network-server
: 选择上一步添加的网络服务器;
Add gateway meta-data
:允许NS将网关数据发送给AS,
3.3,添加添加Device-profiles(设备配置文件)
Device-profile name
:设备配置文件名称;
Network-server
:选择之前创建的网络服务器;
LoRaWAN MAC version
:选择lorawan协议版本,推荐选择较低版本,高版本可能设备不兼容(我选的1.0.1)
LoRaWAN Regional Parameters revision
:选择A;
3.4,配置LoRaWAN网关
Gateway name
:网关名称;
Gateway description
:网关描述;
Gateway ID
:网关ID,在这里我选择自动生成,因为只是做测试,待会在网关程序里改.conf文件就行。(有真实设备的可以填自己网关设备的EUI);
在网关程序里改.conf文件使网关id对应就:
3.5,添加Applications(应用服务器)
Application name
:应用名称;
Application description
:应用描述;
Service-profile
:选择之前添加的服务配置文件;
3.6 添加节点设备
Device name
:设备名称;
Device description
:设备描述;
Device EUI
:设备EUI;
Device-profile
:选择之前添加的设备配置文件;
关于节点设备要填写的参数很多包括:
Device EUI:
节点拓展的唯一标识符
Device address
:节点设备地址(一个平台只能有一个)
Network session key
:网络会话密钥
Application session key
:应用会话密钥
当然这些也可以自动生成,然后再去节点设备改(我猜想这应该是节点制造厂商干的事,先在服务器上获取然后再写进去,下面的我都是用的真实节点,就是节点设备现有的然后我来填参数)
3.7,JS修改解析脚本
由于 LoRa 类资源有限设备不适合直 接传输 JSON 格式数据,使用“设备数据解析”可以将设备原始数据转化为产品 JSON 数据,在chiripstack上可以编写JavaScript解析上行数据和下行数据从而更直观的查看数据.
因为解析数据是AS干的事,所以相关配置在“device_profiles”中:
上行数据解析的脚本主函数为 Recode,其带有 fPort、bytes ,variables三个入参:
fPort:设备上报的 LoRaWAN 协议数据的 FPort 字段。
bytes:设备上报的 LoRaWAN 协议数据的 FRMPayload 字段。
解析成json格式的内容:
**第一个字段:**操作的方法,即上报温湿度;
**第二个字段:**用内置函数获取时间;
第三个字段:解析出来的数据,包括温度湿度以及上报周期;
注意解析的数据要事先和节点沟通好,在我这里,节点发过来的上行数据有6个字节,所以我在上行数据解析中也是对这6个字节的数据进行操作,下发数据也是如此(也可以使用 Base64 在线编码解码,把原始数据复制过来解析即可):
下数据解析的脚本主函数为 Eecode,其带有 fPort、obj ,variables三个入参:**
**obj:**下发指令的内容对象;
发送的数组内容为:
**第一个字节fport:**下发给设备的 LoRaWAN 协议数据的 FPort 字段;
**第二个字节:**下发给设备的 LoRaWAN 协议数据的 MType(0代表Unconfirmed Data Down,1代表Confirmed Data Down);
**第三个字节:**下发对节点的操作,我这里是使灯亮(LED=1):
四,运行网关程序
先修改网关配置文件:
在开发板运行网关程序:
网关上线:
节点上行数据也到达服务器:
查看到达数据内容:
对于网关来说数据是非透明的;