The Things Network 是 LoRaWAN 行业里非常著名的 Network Server 提供方,尤其是开发者社区运营得非常好,吸引了很多开发者来使用他们的平台。接触的许多国外的厂家,都是默认连接 TTN 的平台。
小能手了解到,这次 TTN 开源了新版本的 V3 Stack,号称在 V2 基础上会更加满足标准规范,更加容易让 LoRaWAN 开发者部署私有 NS。因此非常值得来学习研究一下。
这一系列笔记将会分析 TTN LoRaWAN Stack V3,希望能跟着优秀伙伴的脚步,更加深入地理解 LoRaWAN NS。
本文作者twowinter,此前分享了 LoRa节点侧的相关笔记,有兴趣的伙伴可以点此了解下。
1 开发环境搭建
整个 STACK 是使用“互联网时代的C语言” GO 语言来编写的,开发环境重度依赖 make,另外还需要安装 node、yarn 等工具。
源码编译是重头戏,这节笔记记录如何使用 make 命令编译相关部件。由于部分包在墙外,带来了一点麻烦,还分享一个 GO 翻墙利器。
琢磨下交叉编译,感受下 GO 跨平台的亮点特色。
2 Stack 使用
这篇笔记记录了 stack 运行前所需的几个准备工作,包含了证书、数据库、账户创建、OAuth配置、环境变量等。参考了官方的 docker 配置文件,琢磨出了各个依赖组件和启动命令,是一套针对非docker环境的操作记录。
2.1.1 使用 CockroachDB Shell 操作 Identity Server
由于 OAUTH 命令进行了更新,导致我把一条旧的命令配置进了 Identity Server。所以本节琢磨下如何使用 cockroachdb 修改 Identity Server。
TTN 的开发环境使用了自签名证书,浏览器端在进行OAUTH登录时会弹出警告,当然我们可以无视警告强制跳转。但本地客户端 CLI 也需要进行 SSL 交互,因此本地也需要添加 CA 证书。本节梳理如何在 centos 上添加 CA 证书。
Stack 运行起来后,可以用 CLI 来做一些上手测试,第一步是要先登录账户。
2.3 使用 CLI 在 Stack 上创建 DEMO 应用
登录上去之后,那接下来就可以创建应用,后面让网关和节点连接上来。
2.4 使用 Packet Forward 让 LoRaWAN 网关接入
应用创建好之后,先让 LoRaWAN 网关接入进来。本篇笔记使用树莓派 LoRaWAN 网关搭配 Packet Forward,做修改后接入到 Stack。
网关接入之后,再让节点接入。本篇笔记重点记录一些小坑,注意跳过。
目前 Stack 在 CN470 采用的是 FSB_11 子频段,手头的网关大多使用 FSB_1,本篇笔记演示如何为 Stack 新增一个子频段。
此前一直使用命令行来测试,最近 Stack 终于逐步上线了前端功能,来做个研究。
上一篇研究了如果编译运行 Web 前端,这一篇研究如何在开发模式下调试 Web 前端。
3 代码分析
代码分析部分,计划按照官方罗列的几个功能块来进行深入学习,包含 NS、GS、AS、JS、IS、CLI、Console 这几个部分。
在每篇代码分析笔记的最后都尽量会附录上一张本模块的流程图,非线性的代码逻辑总归是用网状图更加清晰,更适合做总结梳理用。
3.1 LoRaWAN Network Server
3.1.1 数据通道
3.1.2 MAC命令
MAC 命令下行,目前和数据下行一样,主要也是在 generateDownlink() 进行处理。
3.1.2.3_1 从 ChMask 问题引申出一个 golang 循环语句易错问题
在测试 LinkADR 功能时,发现了 STACK 中一个 ChMask 的问题,经过好几天的摸索,终于搞定了问题。根源是 range 语句中的内存分配问题,本能手觉得是个非常易错的点,值得好好记录一下。
3.2 Gateway Server
3.3 Application Server
3.4 Identity Server
3.5 Console
3.6 Command-Line Interface
3.8 其他
作者其他精彩文章:
深度报道 第1个从太空发回的LoRa信号(含视频)
中兴对华为NB-IoT的大反击 - CLAA
农业物联网的道路上,还有个联想的身影
最高旨意下达,Sigfox在中国鸣枪开干