前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >The Things Network LoRaWAN Stack V3 学习笔记

The Things Network LoRaWAN Stack V3 学习笔记

作者头像
twowinter
发布2020-04-17 10:57:21
1.2K0
发布2020-04-17 10:57:21
举报
文章被收录于专栏:twowintertwowinter

The Things Network 是 LoRaWAN 行业里非常著名的 Network Server 提供方,尤其是开发者社区运营得非常好,吸引了很多开发者来使用他们的平台。接触的许多国外的厂家,都是默认连接 TTN 的平台。

小能手了解到,这次 TTN 开源了新版本的 V3 Stack,号称在 V2 基础上会更加满足标准规范,更加容易让 LoRaWAN 开发者部署私有 NS。因此非常值得来学习研究一下。

这一系列笔记将会分析 TTN LoRaWAN Stack V3,希望能跟着优秀伙伴的脚步,更加深入地理解 LoRaWAN NS。

本文作者twowinter,此前分享了 LoRa节点侧的相关笔记,有兴趣的伙伴可以点此了解下。

1 开发环境搭建

1.1 安装依赖工具

整个 STACK 是使用“互联网时代的C语言” GO 语言来编写的,开发环境重度依赖 make,另外还需要安装 node、yarn 等工具。

1.2 源码编译

源码编译是重头戏,这节笔记记录如何使用 make 命令编译相关部件。

1.3 交叉编译生成Linux程序

琢磨下交叉编译,感受下 GO 跨平台的亮点特色。

2 Stack 使用

2.1 运行准备

这篇笔记记录了 stack 运行前所需的几个准备工作,包含了证书、数据库、账户创建、OAuth配置、环境变量等。参考了官方的 docker 配置文件,琢磨出了各个依赖组件和启动命令,是一套针对非docker环境的操作记录。

2.1.1 使用 CockroachDB Shell 操作 Identity Server

由于 OAUTH 命令进行了更新,导致我把一条旧的命令配置进了 Identity Server。所以本节琢磨下如何使用 cockroachdb 修改 Identity Server。

2.1.2 客户端导入自签名 CA 证书

TTN 的开发环境使用了自签名证书,浏览器端在进行OAUTH登录时会弹出警告,当然我们可以无视警告强制跳转。但本地客户端 CLI 也需要进行 SSL 交互,因此本地也需要添加 CA 证书。本节梳理如何在 centos 上添加 CA 证书。

2.2 使用 CLI 进行 OAuth 登录

Stack 运行起来后,可以用 CLI 来做一些上手测试,第一步是要先登录账户。

2.3 使用 CLI 在 Stack 上创建 DEMO 应用

登录上去之后,那接下来就可以创建应用,后面让网关和节点连接上来。

2.4 使用 Packet Forward 让 LoRaWAN 网关接入

应用创建好之后,先让 LoRaWAN 网关接入进来。本篇笔记使用树莓派 LoRaWAN 网关搭配 Packet Forward,做修改后接入到 Stack。

2.5 LoRa节点配置接入

网关接入之后,再让节点接入。本篇笔记重点记录一些小坑,注意跳过。

2.6 新增一个 CN470 子频段

目前 Stack 在 CN470 采用的是 FSB_11 子频段,手头的网关大多使用 FSB_1,本篇笔记演示如何为 Stack 新增一个子频段。

2.7 编译运行 Web 前端

此前一直使用命令行来测试,最近 Stack 终于逐步上线了前端功能,来做个研究。

2.7.1 Web 前端开发调试

上一篇研究了如果编译运行 Web 前端,这一篇研究如何在开发模式下调试 Web 前端。

3 代码分析

代码分析部分,计划按照官方罗列的几个功能块来进行深入学习,包含 NS、GS、AS、JS、IS、CLI、Console 这几个部分。

在每篇代码分析笔记的最后都尽量会附录上一张本模块的流程图,非线性的代码逻辑总归是用网状图更加清晰,更适合做总结梳理用。

3.1 LoRaWAN Network Server

3.1.1 数据通道

3.1.2 MAC命令

3.1.2.1 上行 MAC 命令处理流程

3.1.2.2 下行 MAC 命令处理流程

MAC 命令下行,目前和数据下行一样,主要也是在 generateDownlink() 进行处理。

3.1.2.3 LinkADR

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 其他

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 开发环境搭建
  • 2 Stack 使用
  • 3 代码分析
    • 3.1 LoRaWAN Network Server
      • 3.2 Gateway Server
        • 3.3 Application Server
          • 3.4 Identity Server
            • 3.5 Console
              • 3.6 Command-Line Interface
                • 3.8 其他
                相关产品与服务
                腾讯云代码分析
                腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档