AliOS Things SIG BLE Mesh网络的介绍和搭建

摘要: 在最新的版本(1.2.1)中,AliOS Things 开始支持SIG BLE mesh。本文对SIG BLE mesh及如何使用AliOS Things搭建BLE mesh网络进行了详细的说明。

点此查看原文:http://click.aliyun.com/m/42946/

在最新的版本(1.2.1)中,AliOS Things 开始支持SIG BLE mesh。目前,SIG BLE mesh还处于起步阶段,能够查找到的材料里面对于如何一步一步搭建SIG BLE mesh,并部署应用的案例并不多,且不够详尽。本文首先介绍SIG BLE mesh;然后详细介绍如何使用AliOS Things SIG BLE mesh搭建传感监测网络;最后,分析SIG BLE mesh使用过程中遇到的问题,并提出解决办法。

SIG BLE mesh介绍

SIG BLE mesh是随着BLE 5.0一起发布的标准,但它与BLE 5.0并没有强绑定的关系,在BLE 4.2的芯片上也能够工作。BLE mesh的推出扩展了BLE技术的拓扑选项,由原来支持的点到点和广播,扩展到可以支持更加灵活与自组织的mesh网络,目前主要的应用场景是智能照明。

网络的拓扑和节点

图片源自[1]

SIG BLE mesh的拓扑是全连通的mesh网络。链路主要包括两种类型,一种是广播链路,另外一种是GATT (Generic Attribute Profile)链路。GATT链路主要是为了兼容不支持广播链路的节点加入mesh网络设计。

节点包括四种类型:普通节点,中继节点,朋友节点,和低功耗节点。中继节点是具有数据转发能力的节点。朋友节点是低功耗节点的朋友。低功耗节点的所有数据都需要朋友节点帮助发送和接收,来实现低功耗节点在一段时间能够进入休眠状态的目的。目前,低功耗节点只能够是叶子节点。

协议栈结构

图片源自[1]

在标准中,BLE mesh协议栈被分为了很多层,简化版本应该可以分为两层,一层是和应用业务相关,另一层是和网络链路相关。标准中,将每层进行了非常细致的功能细化。网络链路相关细分为了以下层次:
Access Layer: 主要定义了上层应用业务层次如何使用网络传输的能力
Upper Transport Layer: 主要定义了数据的加解密,及基本数据传输功能
Lower Transport Layer: 主要定义了数据的分包与组包逻辑
Network Layer: 定义了数据的寻址与转发
Bearer Layer: 定义了如何利用核心层在点到点设备之间传输数据

Provisioning

SIG BLE mesh需要一个特殊的节点完成网络的配置,这个节点是provisioner。provisioner通常是手机或者一个联网设备。目前开源可以直接使用的provisioner有Bluez meshctl工具。
Provisioning主要功能是节点认证,配网和传输网络配置信息到节点。主要交互包括: beaconing,发出邀请,交换公钥,认证,和分发provisioning data。provisioning成功后,SIG BLE mesh网络链路即建立完成,网络节点之间可以收发数据。
在provisioning完成后,还需要再次建立连接,用于传输应用相关的配置信息,包括: 应用层使用的密钥,绑定使用的model,及配置这些model (如数据发送次数与周期等)。配置完成后,应用业务逻辑即开始工作。

关于SIG BLE mesh标准相关内容,可以移步SIG下载,https://www.bluetooth.com/specifications/mesh-specifications 。

AliOS Things SIG BLE mesh网络搭建

硬件环境

Raspberry PI3一块
乐鑫ESP32 Devkitc两块
微雪NRF51822开发板两块
ESP32和NRF51822开发板跳线图

软件环境
  • Raspberry PI kernel
为了能够运行Bluez meshctl工具,需要更改Raspberrian默认的安全加密加密相关配置,需要重新编译kernel。
  • json-c
json-c主要作用是解析meshctl所需的网络相关配置文件。
  • Bluez
Bluez是Linux的蓝牙协议栈,这里我们使用的是5.48版本。主要使用meshctl工具作为provisioner。
  • Bluetooth controller
烧录在nrf51822上作为controller使用。
  • Server端和Client端应用程序
烧录在ESP32上,和nrf51822组合在一起作为BLE mesh节点使用。

传感数据监测网络

传感监测网络包括三种角色,provisioner,server和client。provisioner是网络的配置者,server是传感信息的发布者,client是传感信息的订阅者。

使用AliOS Things一步一步搭建SIG BLE mesh网络指南,请移步https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-SIG-BLE-mesh-Setup-Guides

一些想法和解决方案

在开发和使用AliOS Things搭建SIG BLE mesh网络过程中,主要遇到的痛点是配网不方便,和低功耗支持。
目前,SIG BLE mesh需要使用provisioner逐个配置网络节点,有时候还可能由于网络不稳定导致失败。这样当街点规模较大时,即使是配置一遍,也是一件足够头痛的事情。我们正在做的一件事情是将AliOS Things uMesh网络自动认证的能力赋能给BLE mesh,使得SIG BLE mesh网络的配置更加方便和高效。

另一方面,目前SIG BLE mesh除了叶子节点,其余节点都需要保证100%的监听时间,其实已经不再是低功耗了,我们另外正在做的意见事情是将正在开发中的AliOS Things uMesh低功耗网络的能力赋能给BLE mesh,降低BLE mesh的功耗。

最后,我们会增加更多的硬件平台支持,方便开发者快速建立自己的业务应用。敬请期待,更多内容请移步https://github.com/alibaba/AliOS-Things 。

References:
[1] Bluetooth Specification Mesh Profile v1.0

识别以下二维码,干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

联想ThinkPad笔记本Fn键关闭与启用方法

最快捷的方法,按FnEsc键启用Fn功能键

android图标错误的是什么意思啊,Android错误:找不到与给定名称匹配的资源(在icon处,值为@drawable/icon) - Android - srcmini...

本文概述将旧版本的项目导入Android Studio时, 似乎会导致此错误, 然后Android Studio会将gradle版本更新为最新版本, 从而导致该错误。对于具有旧版本gradle的Cordova项目, 这似乎也发生了, 当你使用cordova平台删除旧的android平台时, 请删除android, 然后使用cordova平台重新…

02年六代雅阁的整备质量_2020年宝安第八批更新计划:联投地产5.4万㎡“工改”项目...

今日(10月22日),宝安区更新整备局发布关于《2020年深圳市宝安区城市更新单元第八批计划》(草案),共2个工改项目,即大田洋工业区东方三队、四队片区更新项目、沙民马安山工业区更新项目,合计拆除用地面积112446㎡。龙华区更新整备局…

被吹得天花乱坠的无服务器架构,究竟是什么?

戳蓝字“CSDN云计算”关注我们哦!无服务器计算(Severless computing,简称 Serverless)现在是软件架构圈中的热门话题,国外三大云计算供应商(Amazon、Google 和 Microsoft)都在大力投入这个领域&…

idea配置的导入导出

摘要:每当更新了工具,或者其他电脑想使用idea工具,配置不可能重新配置,这时只要把已配置好的导出来,打开新的idea时,直接导入即可。 文章目录一、导出配置二、导入配置一、导出配置 打开工具,找…

基于阿里云移动推送的移动应用推送模式最佳实践

摘要:### 一、概念 以下概念对应系统设计时的语义,对于如何合理使用移动推送有借鉴意义 #### 1.1 设备 安装并使用开发者移动应用的装置 #### 1.2 设备ID 阿里云移动推送为设备分配的唯一ID,可以通过阿里云移动推送SDK端提供的接口获取 点此阅…

android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...

android仿微信滑动切换最终实现效果:大体思路:1. 主要使用两个自定义view配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标;2. 底部导航栏的设置方法类似于tablayout的关联,view需要创建关联方法,用来关联viewpag…

cgi进程设置多少 宝塔_宝塔面板安装完的一些列操作

推荐教程虚拟机建站总目录 - 辉哥博客​www.haah.net前言新安装的宝塔会有很多地方需要配置,如果懂的大佬可以跳过,如果是小白可以按照辉哥的教程一步步操作,辉哥是以虚拟机进行操作的,但是服务器也是一样的道理!安全入…

白话中台战略:中台是个什么鬼?

戳蓝字“CSDN云计算”关注我们哦!来源:健荐作者:王健从去年开始,好像就有一只无形的手一直将我与“微服务”、“平台化”、“中台化”撮合在一起,给我带来了很多的困扰和思考与收获。故事的开始源于去年的技术雷达峰会…

用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解

摘要: WEEX依旧采取传统的web开发技术栈进行开发,同时app在终端的运行体验不输native app。其同时解决了开发效率、发版速度以及用户体验三个核心问题。那么WEEX是如何实现的?目前WEEX已经完全开源,并捐给Apache基金会&#xff0c…

android qq apk反编译,为什么不能反编译qq

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这里抛出异常了Exception in thread "main" brut.androlib.AndrolibException: Multiple res specs: attr/nameat brut.androlib.res.data.ResType.addResSpec(ResType.java:58)at brut.androlib.res.decoder.ARSCDecode…

cad查看_CAD与天正软件对齐命令实例讲解

好课推荐:1、CAD2014:点击查看 2、室内&全屋:点击查看 3、CAD2019:点击查看4、CAD2018:点击查看5、Bim教程:点击查看 6、室内手绘:点击查看7、CAD三维:点击查看8、全屋定制&…

Storm精华问答 | storm与Hadoop区别?

戳蓝字“CSDN云计算”关注我们哦!Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。今天,我们就挑一些Storm的安装配置问题来看看吧。1Q:…

开发经验分享_01_遇到问题三步走(思路+实战)

企业内部开发经验系列,由gblfy根据自己在公司的亲身经历总结而成,会讲述开发的思路和开发技巧,帮助更多开发人员思路明确、高效率的开发!!! 目前总结章节如下: 章节链接(企业内部)开发经验分享…

weex 在 iOS 上如何实现常见的网络缓存

摘要:weex 旨在兼顾web动态性与native的用户体验,如果想将两者的优势最大化,那么缓存就显得格外重要,本文介绍如何利用缓存,实现weex页面迅速打开,甚至“秒开”的效果。点此查看原文:http://cli…

python实现多智能体一致性_促进产学研,多智能体协同控制——科研与实践教学齐飞...

对多智能体感兴趣欢迎Wangzaixiaolatiao(VX)沟通。一、引言1.1、概述多智能体协同控制系统即多个智能体组成的集合,它的目标是将大而复杂的系统集成设成小的、彼此互相通信和协调的、易于管理的系统。多智能体协同控制系统在表达实际系统时&a…

android 汇编 参数,安卓ARM汇编基础知识

ARM 是 Advanced RISC Machine 的缩写,可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集。RISC(Reduced Instruction Set Computing) 精简指令集计算机:一种执行较少类型计算机指令的微处理器。处理器指令集: 计算机处理命令…

移动推送消息送达常见问题与解决办法

摘要: 一、 收到重复的推送内容 * 收到重复的推送内容,排除了业务自身的推送逻辑之外,重点介绍一下部分机型多渠道推送可能带来的重复推送问题。 * 对于Android系统,对于设备已经在某些三方系统中注册过,并且通过该三方…

开发经验分享_02_解决问题3步走(实战)

接上一篇:开发经验分享_01_遇到问题3步走(思路实战) https://gblfy.blog.csdn.net/article/details/103413993 文章目录一、透过现象看本质1. 想几种可能导致此问题的业务场景2. 选择概率最多的业务场景二、Debug模式走起1. 重启,以debug模式启动2. 预判…