LoRaWAN协议

本文资料采集于http://www.cnblogs.com/answerinthewind/category/925777.html

LoRaWAN协议()--架构解析

LoRaWAN 分层

总体架构一共分为4部分:

LoRaWAN从底层到最后用户拿到数据的通讯过程通讯大致可分为三段:

1. MOTE <---> GW (MAC)

2. GW <---> server

3. server <---> 用户

LoRa联盟 规定了 MAC层的通讯协议,只有在设备(GWMOTE)共同遵守的MAC层协议的前提下,不同硬件厂商的设备才能互相接入。

GW <---> Server以及Server <---> 用户这两层的协议虽然LoRa联盟有所规范,但不同厂商之间可能会存在不同。

Mote/Node

Mote/Node 就是节点,在LoRaWAN中,节点一般与传感器连接,负责的就是收集传感数据,然后通过LoRaMAC 协议传输给Gateway

Gateway

Gateway也就是网关,主要负责将节点的数据传输给服务器,也就是完成数据从LoRa方式到网络方式的转换,其中Gateway并不对数据做处理,只是负责将数据打包封装,然后传输给server(服务器)

Server

按照LoRaWAN的规定,Server又分为四部分--NS(Network server)AS(Application server)CS(Customer server)NC(Network controller)

其中每个部分的分工和职能各不相同。相应的我会在后续的文章中讲到。

用户

用户一般只的是直观使用这个数据的人,一般是APP或者其他客户端方式,从服务器获取数据。

应用分析

在这里我以LoRaWAN 方式实现农场的土壤湿度检测来具体说明这各个部分的区别:
实现农场的土壤湿度的检测主要分为几个步骤:

· 实现传感器采集土壤湿度(sensor层)

· 将采集到的土壤湿度通过MOTE发送给GW(LoRaMac )

· GW将收到的数据发送给NSGW<--->Server

· NS再将数据发送给用户(Server<--->Customer)

· 用户通过APP或者其他方式可以看到土壤的湿度状态。(Display)

通过以上的几个步骤,就可以实现远程监控农场土壤湿度。


LoRaWAN协议()--LoRaWAN MAC数据包格式

名词解析

上行:终端的数据发送经过一个或多个网关中转到达网络服务器。
下行:由网络服务器发送给终端设备,每条消息对应的终端设备是唯一确定的,而且只通过一个网关中转。

LoRaWAN Classes

LoRaWAN Classes 一共分为3类:Class A,Class B,Class C

Class A:终端先发送,在发送后开启一段时间的接收窗口,终端只有在发送后才可以接收。也就是说上行没有限制,下行的数据只有在上行包发送上来的时候终端才可以接收到。(功耗最低)

Class B:终端和服务器协商好接收的窗口开启的时间以及何时开启,然后再约定的时间进行接收,可以一次接收多个包。(功耗次低)

Class C:终端在发送以外的其他时间都开启接收窗口。更耗能,但通讯延时最低。(功耗最高)

PHY/MAC 层数据链路

总的数据包结构:

注意preamblePHDRPHDR_CRCCRC都是硬件生成,无需软件参与,需要软件参与的就是PHYPayload部分

PHY层数据

上行链路消息:

下行链路消息:

其中上行最后还有CRC校验,而下行没有CRC校验。其中PHDR PHDR_CRC CRC都是射频芯片用于校准数据的完整新和一致性用的,并非用户生成的数据。

MAC 层数据

由上图可以看到,MAC数据是是作为PHYPayload存在的
其中MAC 层的包有三个部分组成:

· MHDR(MAC层帧头)

· MACPayload(MAC层负载)

· MIC(4字节的校验)

MACPayload又由三个部分组成:

· FHDR (MAC层负载头)

· FPORTMAC 层数据的通道号)

· FRMPayloadMAC层负载,加密)

FHDR又由由四个部分组成:

· DevAddr(终端的ID 4字节)

· FCtrl(帧的控制字 1个字节)

· FCnt (帧的序号 2个字节)

· FOpts(帧配置,字节数不定,大部分情况0个字节)

所以,由协议可知,一个上行包或者下行包中的数据内容有哪些,抛开控制命令不说,主要有终端的ID、包的序号、用户的加密负载。

例如我抓到的一个数据包:

\x40 \x7f \xf8 \x8a \x29 \x80 \x2a \x00 \x02 \x07 \x42 \x87 \x3f \xc7 \xb4 \x22 \x04 \x00 \x84 \x8d \x1b \x06 \x2f \x5b \xbc \x57 \xdb \xf2 \x31 \xde \x49 \x61 \x00 \x86 \x99 \xec \x08 \x61 \xf0 \xb7 \xda \x54 \x0a \xfa \xd1 \x31 \xac \xd0 \x44 \x1b \x4d \xfa \x48 \x77 \x19 \xee \x61 \x14 \xbf \x23 \x52 \xd1 \xe9 \x93 \x79 \x6e \x16 \xd7 \x13 \x2e \x58 \x06 \x54 \xc3 \xd2 \x04 \xba \x52 \xa7 \xc8 \x7a \x0b \x8e

这是一个MAC 层的帧,即完整的PHYPayload部分,注意,默认LoRaWAN都是按小端方式传输的。

其中

· MHDR:
\x40

· MACPayload-FHDR-DevAddr:
\x7f \xf8 \x8a \x29

· MACPayload-FHDR-FCtrl:
\x80

· MACPayload-FHDR-FCnt:
\x2a \x00

· MACPayload-FPORT:
\x02

· MACPayload-FRMPayload(加密):
\x07 \x42 \x87 \x3f \xc7 \xb4 \x22 \x04 \x00 \x84 \x8d \x1b \x06 \x2f \x5b \xbc \x57 \xdb \xf2 \x31 \xde \x49 \x61 \x00 \x86 \x99 \xec \x08 \x61 \xf0 \xb7 \xda \x54 \x0a \xfa \xd1 \x31 \xac \xd0 \x44 \x1b \x4d \xfa \x48 \x77 \x19 \xee \x61 \x14 \xbf \x23 \x52 \xd1 \xe9 \x93 \x79 \x6e \x16 \xd7 \x13 \x2e \x58 \x06 \x54 \xc3 \xd2 \x04 \xba \x52 \xa7

· MIC:
\xc8 \x7a \x0b \x8e


LoRaWAN协议()--Server端数据协议

LoRaWAN Server 端架构

LoRaWAN server包括 NS(Network server)AS(application server)CS(Custom server)....

其中NSAS是比不可少的,是完成LoRaWAN协议的重要组成部分

NS 职责

NS是直接与GW通信的服务器,也是ASGW之间的桥梁

我所知道的工作有如下几点:

1. 验证数据的合法性(校验MIC)

2. GW的信息中提取数据,整理成NS JSON数据包

3. 将校验合法的数据打包成新的JSON包上传至AS

4. OTAA入网时向AS发送请求入网消息,然后再将入网信息告诉AS,当获取AS传来的入网的信息,告诉GW

5. GW AS之间的数据通道

有几点需要注意的是NS端的数据不进行AES解密工作。

AS 职责

ASserver端的数据处理中心

它的工作有如下几点:

1. 上行数据的解密

2. 下行数据的加密

3. OTAA入网请求的处理(同意入网/生成APPSKEY/NWKSKEY)

CS 职责

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LoRaWAN协议栈是一种无线通信协议,被设计用于低功耗广域网(LPWAN)环境下的物联网应用。该协议栈提供了一种可靠、安全且具有长距离通信能力的解决方案。 LoRaWAN协议栈源码是指实现和支持LoRaWAN协议的源代码。这些源码由协议栈的开发者和社区开发者编写,供开发者使用和定制。 协议栈的源码主要包含以下内容: 1. 物理层实现:这部分代码负责实现LoRa无线通信技术,包括信号调制、解调、频谱分析等。它将数据转换为能够在无线信道上传输的低功耗、长距离信号。 2. 数据链路层实现:这部分代码负责建立和维护一个可靠的数据链路,确保数据的可靠传输。它实现了LoRaWAN协议中定义的信息交换、帧同步、差错检测和纠正等功能。 3. 网络层实现:这部分代码负责管理设备与网络服务器之间的通信。它实现了设备注册、会话建立、加密和解密等功能。同时,也负责处理网络服务器下发的命令和配置信息。 4. 应用层实现:这部分代码负责处理应用层数据,对传输的数据进行解析和处理。它实现了设备和应用服务器之间的数据交互。 使用LoRaWAN协议栈源码,开发者可以根据自己的需求和场景,自定义和优化LoRaWAN协议栈的功能和性能。通过理解和修改LoRaWAN协议栈源码,可以实现更高效、更安全、更适应特定应用场景的物联网解决方案。开发者还可以基于协议栈源码进行二次开发,添加自己的应用逻辑、协议扩展和性能优化等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值