The Things Network LoRaWAN Stack V3 学习笔记

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 命令编译相关部件。由于部分包在墙外,带来了一点麻烦,还分享一个 GO 翻墙利器。

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


作者其他精彩文章:

深度报道 第1个从太空发回的LoRa信号(含视频)
中兴对华为NB-IoT的大反击 - CLAA
农业物联网的道路上,还有个联想的身影
最高旨意下达,Sigfox在中国鸣枪开干


  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LoRaWAN是一种低功耗广域网(LPWAN)协议,用于远程物联网设备之间的通信和连接。“end-device lorawan stack implementation”可以理解为实现LoRaWAN协议栈的最终设备。 实现一个end-device的LoRaWAN协议栈是确保设备能够与LoRaWAN网络进行通信的基本要求。这种实现允许设备与LoRaWAN网关建立连接,发送数据和接收命令。 一个end-device的LoRaWAN协议栈实现通常包括以下关键部分: 1. PHY layer(物理层):处理设备与网关之间的无线通信,包括射频传输和接收。 2. MAC layer(介质访问控制层):负责设备与网关之间的帧传输和管理,确保数据的可靠传输。 3. LoRaWAN协议栈:协议栈负责处理设备与LoRaWAN网络服务器之间的通信,包括激活过程、数据传输和安全认证等。 要实现一个end-device的LoRaWAN协议栈,需要考虑以下方面: 1. 硬件:选择合适的硬件平台,如支持LoRaWAN的芯片或模块,能够处理无线通信和协议栈操作。 2. 软件:编写LoRaWAN协议栈的软件代码,包括PHY层、MAC层和协议层的实现,确保设备能够与网关和LoRaWAN服务器进行通信。 3. 测试与验证:进行测试和验证,确保实现的LoRaWAN协议栈在不同条件下能够正常工作,并满足LoRaWAN协议规范。 实现一个end-device的LoRaWAN协议栈可以使设备能够接入LoRaWAN网络,并与其他设备和应用进行通信。这种实现被广泛应用于各种物联网应用场景,如智能城市、环境监测、农业和工业自动化等,为物联网设备提供了广阔的通信覆盖范围和低功耗的特性。 ### 回答2: 一个基于LoRaWAN的终端设备堆栈实现是指为终端设备提供LoRaWAN协议栈的软件实现。LoRaWAN是一种低功耗广域网协议,被用于连接物联网中的终端设备和云服务。 这个终端设备堆栈实现的目标是提供一个完整的软件解决方案,使终端设备能够与LoRaWAN网络通信。它通常由多个模块组成,包括LoRaWAN协议的封装和解封装、加密和验证、数据传输和控制等功能。 实现一个终端设备堆栈需要遵循LoRaWAN协议的规范,包括各个层级的协议规定、消息格式和操作流程。同时,还需要将硬件和软件进行良好的集成,以确保从终端设备到网络服务器的无缝连接。 这个堆栈实现的关键特点是低功耗和高效的数据传输。由于终端设备往往由电池供电,在传输数据时需要尽量减少能耗。因此,这个堆栈实现通常采用一些优化技术,如低功耗睡眠模式、数据压缩和最小化数据包大小等,以延长终端设备的电池寿命。 终端设备堆栈实现的使用范围广泛,可应用于许多物联网场景,如智能城市、智能农业、环境监测、智能家居等。它提供了一个可靠且安全的通信机制,使终端设备能够将感测数据传输到云服务器,并从云服务器接收控制指令。 总之,一个终端设备堆栈实现为LoRaWAN协议提供了一个软件框架,以实现终端设备与LoRaWAN网络的连接和通信。它具备低功耗、高效的数据传输和广泛的应用场景等特点。 ### 回答3: End-device LoRaWAN堆栈实现是指在端设备上运行的LoRaWAN堆栈。LoRaWAN是一种低功耗广域网协议,用于终端设备与基站之间的通信。它具有长距离传输、低功耗和高抗干扰能力等特点,适用于物联网应用。 End-device LoRaWAN堆栈实现的主要作用是使终端设备能够与LoRaWAN网络进行通信。它包括了LoRaWAN协议的各个层级,例如物理层、媒体访问控制层和网络层等。 实现一个End-device LoRaWAN堆栈需要考虑以下几个方面。首先,需要实现LoRa物理层的通信功能,包括无线频率选择、调制解调和信号增益控制等。其次,需要实现LoRaWAN协议的媒体访问控制层,包括帧格式、数据传输和设备

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值