不看这几篇好文,就别说自己了解物联网

物联网( IoT ,Internet of things )即“物物相连的互联网”,是互联网基础上的延伸和扩展的网络,将各种信息传感设备与网络结合起来而形成的一个巨大网络,实现在任何时间、任何地点,人、机、物的互联互通。

物联网的基础是将万物连接起来,他是如何连接起来的,就是通过物联网的通信和组网协议。本文将从物联网通信协议现状分析入手,讲述如何从零设计一种物联网组网协议。

1、物联网通信技术分类

物联网的通信技术有很多种,首先从大类上分为有线通信和无线通信。

1.1、有线通信

以太网(Ethernet)是一种局域网通信技术, IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。

以太网使用双绞线作为传输媒介,在没有中继的情况下,最远可以覆盖200米的范围。最普及的以太网类型数据传输速率为100Mb/s,更新的标准则支持1KMb/s和10KMb/s的速率。

串口通信(Serial port)是一种非常通用的用于设备之间通信的接口,也广泛用于设备以及仪器仪表之间的通信。常见的串口有RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工RS-422。

CAN通信,CAN是控制器局域网络(Controller Area Network, CAN)的简称,只要用在汽车控制领域,是一种现场总线,是国际上应用最广泛的现场总线之一。

1.2、无线通信

Wi-Fi,是一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常被写成“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi往往是许多开发者的一个显而易见的选择,特别是考虑到无线网络的LAN内的家庭环境中普遍存在。

2G/3G/4G是指第二、三、四代移动通信系统协议,是蜂窝移动通信技术,由通讯运营商搭建网络,覆盖范围广,当前主流是4G, 且2G将退出历史舞台。

5G是指第五代移动通信系统协议。5G的性能目标是高数据速率、减少延迟、节省能源、降低成本、提高系统容量和大规模设备连接。正在高速发展之中,但当前通信费用较贵。

Bluetooth是一项短距离无线通信的技术,其核心是基于跳频扩频(Frequency- Hopping Spread Spectrum,FHSS)技术发展而来的。经常看到的BLE是指蓝牙低功耗(Bluetooth Low Energy),他是在蓝牙 4.0新增的功能。相比经典蓝牙,低功耗蓝牙拥有更快的响应速度,最短可在3毫秒内完成连接设置并开始传输数据,这样设备在需要的时候可以及时连接并传输数据。2017年,蓝牙SIG发布蓝牙mesh 1.0版本的协议规格,这是一种基于低功耗蓝牙广播包来实现的mesh网络技术。蓝牙通过蓝牙mesh这项新的协议规格正式进入物联网的领域。

Zigbee是一种低速短距离传输的无线通信协议,是一种高可靠的无线数传网络,主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。

LoRa与同类技术相比,提供更远的通信距离。LoRa 网关、烟感、水监测、红外探测、定位、排插等广泛应用物联网产品。

从CSDN发布《2020-2021中国开发者调查报告》中,可以看出WiFi和Bluetooth依旧占领了物联网通信方式的首要地位,分别占比为68.4%,63.1%。

2、如何从零设计一种物联网组网协议

物联网通信协议大致分为两类:一类是组网协议(或者叫接入协议),主要负责网络内设备间如何进行组网,是物联网网络通信的基础。另一类是通信协议,主要是负责网络中数据的交互和通信。

本文主要将介绍如何从零设计一种物联网组网协议。

2.1、协议选型

在设计组网协议之前,首先需要明确使用前面提到的哪种通信技术,是WIFI, Blutooth, LoRa还是ZigBee。

主要是通过网络覆盖范围,通信速率,功耗,成本等几个因素进行选择。

2.2、定义组网协议规范

选择了通信技术之后,就需要定义组网协议的规划。

笔者以在天猫精灵智能音箱上实现的基于蓝牙的极速配网协议来做说明。

由于是基于蓝牙的组网协议,并且完全使用蓝牙的双向广播包来组网信息的交互,所以主要是定义蓝牙广播包的格式和数据传输规范。

广播包格式

极速配网中所有的数据通信以蓝牙广播包的方式,蓝牙广播包格式遵循蓝牙4.0规范,使用ADV_NONCONN_IND类型广播包,由若干AD Structure组成(参见Bluetooth 4.2 Core Specification, Volume 3, Part C, Chapter 11),每一个ADStructure结构由Length、AD Type、AD Data组成。如下图所示:

advertising or Scan Response data 格式

接入阿里巴巴物联平台的蓝牙设备的广播包必须包含阿里巴巴制定的厂商自定义格式(Manufacturer Specific Data,AD Type:0xFF)。如下图所示:

 

Field

Size(Octets)

value

Notes

Flags

length

1

0x2

Flags length

AD Type

1

0x1

Flags Type

Flags

1

根据实际情况填写

bit1 必须为 1 (LE General Discoverable Mode)

Manufacturer Specific Data

Length

1

根据实际长度填写

Manufacturer Specific Data Length

AD Type

1

固定 0xFF

Manufacturer Specific Data Type

Company ID

2

固定 0x01A8

Company Identifiers,0x01A8为阿里巴巴公司编码

VID

1

0x0D

低四位为阿里巴巴蓝牙规范版本号, 当前版本号为D;高四位为feature flag,当前取值为0。整体取值为0x0D

Payload

可变

实际报文内容

 

Ali beacon通用广播包数据格式

数据传输规范

配网广播使用标准BLE广播的方式,数据传输采用单包形式,不支持分包。数据采用大端优先方式传输。

最大数据长度

不拆包的情况下,单包最大传输能力为31个字节,应用数据长度为23个字节(31-8)。

配网流程

配网采用采用对称加密的方式,通过一机一密来保证网络的安全性,三元组秘钥由天猫精灵开放平台生成,通过安全的途径由工厂烧录到每台设备上。 兼容云端标准mesh配网流程。

配网流程如下:

Unprovisioned Device Beacon的格式遵循《天猫精灵蓝牙mesh软件基础规范》中3.2.1节的规定

其中uuid[14]的bit0置为1表示该设备使用极速配网。

配网中广播包数据格式

所有数据包的payload部分都由两部分组成,1个字节的Provisioning Type,N(最大22)个字节的报文内容。

如下图所示:

Field

Size(Octets)

Provisioning Type

1

payload data

0~N

配网报文的第一个字节为如下:

Name 

Type 

Description 

Provisioning Random

0x00

发送配网随机数

Provisioning Confirmation

0x01

发送鉴权数据

Provisioning Data

0x02

下发配网参数(NetKey,Addr)

Provisioning Complete

0x03

配网成功ACK

RFU

0x05–0xFF

待用

Provisioning Random

此阶段中配网器会生成随机数给云端并广播给待配网设备,数据格式如下:

Field

Size(Octets)

Notes

Mac

2

待配网设备的mac地址的后2位

Random A

8

随机数A,用于计算Confirmation和DeviceKey

Random B

8

随机数B,用于计算Confirmation和DeviceKey

表3.3 Provisioning Random数据格式

Random A和Random B不能一样。

Provisioning Confirmation

设备端拿到随机数之后,通过以下算法计算出AuthValueDevice,AuthValueProv和ConfirmationCloud,ConfirmationDevice,将计算出来的ConfirmationDevice值回复给天猫精灵。

数据格式如下:

Field

Size(Octets)

Notes

Mac

2

待设备的mac地址的后2位

ConfirmationDevice

16

ConfirmationDevice

表3.4 Provisioning

ConfirmationDevice = AES-CMACConfirmationKey(Random A||Random B||AuthvalueDevice)

ConfirmationCloud = AES-CMACConfirmationKey(Random B||Random A||AuthvalueProv)

AuthValueProv = SHA256(三元组ProductID,MAC,Secret,RandomB||RandomA)前16字节

AuthValueDevice = SHA256(三元组ProductID,MAC,Secret,RandomA||RandomB)前16字节

ConfirmationKey = SHA256(Random A || Random B || ”ConfirmationKey“)前16字节

Provisioning Data  

配网成功,天猫精灵下发配网信息,包含Network Key,以及设备的单播地址,经过加密后下发给设备。数据格式如下

Field

Size(Octets)

Notes

Mac addr

2

为待配网设备mac地址最后2字节

Flag

1

bit0:mesh "key refresh flag"

bit1:mesh "IV update flag"

Network Key

16

mesh的networkkey

IV index

1

IV index的最低字节,最高位补0

Unicast Address

2

设备被分配的单播地址

表3.6 Provisioning Data数据格式

加密算法如下:

Encrypted provisioning data  = prov_data XOR  SHA256(ConfirmationCloud||"SessionKey")前22字节

Provisioning Complete

设备在收到天猫精灵下发的Provisioning Data之后,向天猫精灵回复一个Provisioning Complete消息表示配网成功。数据格式如下:

Field

Size(Octets)

Notes

MAC

6

待配网设备的mac地址

精灵在收到该消息后,会根据《天猫精灵蓝牙mesh软件基础规范》中3.3.4节的描述进行后续mesh网络配置过程,使用的Device Key以如下算法生成

DeviceKey = SHA256(ConfirmationCloud||"DeviceKey")前16字节

Provisioning Failed

任一方发包最多持续2秒,如果在开始发包后发的3s内没有收到对方的下一条消息,则认为配网失败。设备恢复为未配网状态,精灵会播报配网失败。

2.3、实现协议

配网过程主要分为两个阶段,第一个阶段就是配网,主要是身份校验及认证,并交换必要的配网数据;第二个阶段就是配置,主要对刚加入网络的设备进行初始化的配置。

极速配网只涉及到第一阶段的配网,第二阶段配置完全共用的天猫精灵上SIG Mesh的方式。相比较于SIG Mesh配网过程中多次的Mesh封包的交互,极速配网最主要的区别是只使用两次BLE广播包的交互,完成了对待配网设备的身份校验和认证,并完成了配网数据的下发。

所以极速配网和蓝牙Mesh配网统一在找队友流程里面,所以借用了很多蓝牙Mesh原有的流程。配网过程主要分为三个步骤:

  1. 发现设备;
  2. 身份校验和认证;
  3. 配置;

极速配网和蓝牙Mesh配网两者只在第2步身份校验和认证上有差异,第1步,第3步是完全一样的。在第1步中根据发现设备UUID来判断是一个支持蓝牙Mesh的设备,还是极速配网的设备,然后走不同的“身份校验和认证”流程。

3、总结

本文介绍了物联网通信协议的基本知识,并通过一个实际商用的例子,介绍如何从零设计一种物联网组网协议。

希望读者通过这篇文章能在实际工作了解如何选择合适的物联网通信技术,并设计自己的组网和通信协议。

更多精品好文

如何用几行Python代码在物联网设备上实现语音AI自动识别?

物联网需要什么样的UI交互方式?

如何分析物联网设备问题,看懂这篇文章就够了

透过ALSA这层迷雾剖析AliOS Things音频框架设计

漫谈农业物联网与互联网技术的结合

传感器,物联网时代的智能硬件数字化入口

如何快速搭建一个像“天猫精灵”的智能语音助手?

物联网之IP Camera解决方案简介

从语音交互历史浅看它是否会是物联网行业的一个爆点?

带你走进多媒体世界:视频文件是怎么播放出来的

物联网云端一体AI方案的探索

物联网设备连接的下一个引爆点:4G Cat.1

物联网教育现状和前景

一文看懂蓝牙在物联网中的应用场景

下一个智能硬件爆品是什么?

华为、阿里、小米都在用的全屋智能技术

为什么物联网领域使用Rust的项目越来越多?

物联网中也能使用区块链技术?面向IoT的区块链基础架构IoTeX

开源硬件的前世今生

物联网碎片化的一些思考

边缘计算在物联网行业的应用

物联网太难 ? 不妨试试用Python来开发

5G会给物联网行业带来哪些变化?

必须要了解的物联网安全知识

ARMv9能给ARM带来新一轮腾飞吗?(安全篇)

ARMv9能给ARM带来新一轮腾飞吗?(人工智能篇)

国产物联网操作系统的出路在哪里?

RISC-V架构能否引领物联网时代?

物联网到底为什么这么火?

谁才是物联网连接技术中的王者?

物联网平台大量出现能否将行业带入爆发式发展

脚本语言适合物联网开发吗

从“嵌入式”到“物联网”的四大转变

物联网发展新趋势

如何从零设计一种物联网组网协议相关推荐

  1. 边缘计算框架_【北大成果】一种集成多组网协议多边缘计算框架的边缘计算处理平台...

    项目简介 随着物联网设备的指数型增长,传统云计算的集中式处理方法已不能满足数据处理和数据安全等需求,边缘计算应运而生.边缘计算可以提升物联网的智能化,促使物联网在各个垂直行业落地生根.但是,一般的应用 ...

  2. 华为云计算IE面试笔记-eBackup有哪几种备份组网方式,各备份组网方式主要的应用场景及备份流程?

    应用场景: LAN-Base一般用于备份数据量小,且对备份窗口没有特殊要求的场景,此类场景下备份服务器和备份代理一般是虚拟机部署. LAN-Free一般用于备份数据量较大,且对备份窗口要求比较严格的场 ...

  3. 几种物联网实现方式之间的比较+转载

    这么长时间,自己项目没有一点的进步,而又来研究物联网,好累的说 http://www.open-open.com/lib/view/open1423887376154.html http://www. ...

  4. 输变电设备物联网节点设备无线组网协议_AIS-Link-艾森智能的工业物联网连接协议...

    深圳市艾森智能技术有限公司致力于低功耗广域物联网技术创新和行业应用,推出了多个原创的联网解决方案,如TDM over LoRaWAN,.LoRaLAN 和LoRa Mesh等,为工业应用客户创造价值的 ...

  5. 哪种物联网卡套餐最划算?

    为应对社会全面数据化与物联网化,联通运营商针对物联网与智能产品市场推出了全新联通物联网卡优惠套餐,以便社会各个企业在发展过程中可以充分利用联通物联网卡来实现自身产品的智能化转型.目前物联网市场上最受企 ...

  6. 四种物联网卡计算模式

    从物联网卡从业人员的视角看来,三天两头看见对换算更为可用和分布式架构的需求.当逐渐将物联网卡与OT和IT系统软件融合时,亟待解决的第一个难题是机器设备发送至网络服务器的巨大信息量. 在一个加工厂智能化 ...

  7. 11种物联网协议简介,如WiFi、蓝牙、ZigBee、蜂窝等

    一.背景 1.电子工程师和物联网(IoT)的产品和系统的应用程序开发人员都有一个几乎令人迷惑的连接选项.那就是自己的项目选用什么协议. 2.许多通信技术是众所周知的,如WiFi,蓝牙,ZigBee和2 ...

  8. php数字加零,php实现数字补零的两种方法

    本篇文章给大家带来的内容是关于php实现数字补零的两种方法 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在php中有两个函数--至少有两个是否有其他的我还不知道,能够实现数字补零 ...

  9. 设计一种网络分播软件

    我们现在的带宽和服务器响应速度.用户数量是有瓶颈的,尤其是以后文件都很大的情况,甚至是海量文件共享的时候,怎么办呢,是否可以设计一种网络分播软件,原理是:把海量的大文件分解成一个个小块,存在于世界各地 ...

最新文章

  1. 全球第一所人工智能大学成立:培养硕博研究生,全员全额奖学金
  2. Spring干货汇总(含Spring Boot与Spring Cloud)
  3. java web编码详解_java web 开发 编码问题详解
  4. 时间日期类JAVA包含地区属性_Java常用类 | 时间和日期类
  5. python正则表达式指南_Python正则表达式指南(转)
  6. QT的QHoverEvent类的使用
  7. RTL8111H-CG规格书 DATASHEET
  8. 使用MemoryStream和FileStream
  9. 列表合并变种题,map()函数扩展
  10. 力扣438.找到字符串中所有字母异位词(JavaScript)
  11. 微信小程序相关三、css写小黄人
  12. 多样化实现Windows Phone 7本地数据库访问1
  13. M1芯片CAD如何安装?M1 mac怎么安装AutoCAD?
  14. win10卸载软件_WIN10系统如何关闭/卸载自带杀毒软件
  15. 小莫取色精灵 使用教程_MQ
  16. TOEFL wordlist 23
  17. 卖计算机英语对话,英语购买电脑情景对话.doc
  18. android 高仿 猿题库,猿题库(com.fenbi.android.gaozhong) - 9.17.2 - 应用 - 酷安
  19. BO4 SDK 检索所有使用了某个universe object的报表
  20. 核磁共振 Nuclear Magnetic Resonance (NMR), H1-NMR, C13-NMR, DEPT, COSY 等分析技术

热门文章

  1. C# 邮件发送帮助类
  2. JavaScript实现简单日历
  3. Linux社区遭遇黑天鹅事件
  4. 基于流计算 Oceanus(Flink) CDC 做好数据集成场景
  5. Java获取当年以及任意一年的第一天和最后一天 获取当天的开始时间和结束时间 自动获取去年的年份 常用于每年的数据统计
  6. 玩转json——json-->txt
  7. ubuntu安装有道
  8. win7 系统增加自定义分辨率_【文献转载】GT5000便携式多参数土壤呼吸测量系统用于棉花田间土壤二氧化碳释放量的测量...
  9. 机器人需要怎样的计算平台
  10. 脑残世界历险记(短篇科幻恶搞)——第一问 脑残是从来就有的吗?