试想一下,在寒冷的冬天当你驱车到达公司楼下时,安全系统能够为你放行,并自动分配停车位;当你走进办公室,LED射灯和台灯已经开启,并且完全符合你喜欢的亮度水平,而且办公室的温度也符合你的个人偏好;当你走近电脑时,它已经自动登录,一天的工作顺利开始。楼宇会根据你的需求作出回应、同时考虑到你的偏好,可见系统的利用相当有效。那么,如何使得这一设想成为现实?
答案是利用蓝牙mesh网络。有了蓝牙mesh,用户可以从mesh照明系统开始添加占位传感器、环境传感器、无线温控系统和基于mesh的停车场管理系统。蓝牙mesh网络能够更简单、以更低的成本来进行楼宇服务的控制、与其进行无线交互、并实现自动化的操作。
关于蓝牙mesh
你一定想知道:智能楼宇系统如何通过蓝牙mesh进行组网?我们需要先了解一下什么是蓝牙mesh?
蓝牙mesh是2017年推出的一个新的标准, 多对多的多跳拓扑结构。不需要新的蓝牙硬件,以洪水/波纹 (flooding/ripple) 方式进行广播和中继,主要用于传输信号而不是大型数据, 大大扩展了传输范围。
蓝牙mesh的7个要素:
设备和节点:当用户想跟踪一个设备,可以将其设为节点;
元素:一些节点具有多个组成部分,每个都能独立进行控制,这些部分被称为“元素”;
订阅和发布:使用这一机制,用户就可以在整个网络当中任意添加或者删除设备,而不需要对网络当中的每一个设备进行程序更新;
图1:发布和订阅
可控性的广播机制:通过满足一系列的条件来使得这个广播信息在网络中以节能、可控的方式进行数据的传递;
低功耗:在蓝牙Mesh网络中还有一类节点是专门为低功耗节点服务的,其具有Friend特性,也可以称为Friend节点。Friend节点与低功耗节点可以建立Friendship关系;
代理:蓝牙mesh使用了广播机制,但是出于某种考虑,不是所有广播数据包都开放给开发者,开发者无法进行修改,因此手机接入mesh网络时需要使用代理机制;
多级安全性:蓝牙mesh网络使用了非对称加密和对称加密两种机制,还使用了带外验证的方法,目的就是保证今后的应用能够为用户提供一个具有高安全性的方案。
蓝牙mesh架构
图2:蓝牙mesh架构
如上图2所示,mesh消息需要基础的通信系统来进行传输和接收。承载层定义了网络PDU如何由给定的通信系统进行处理,这时定义了两个承载层,即广播承载层和GATT承载层。网络层定义各种消息地址类型,以及允许承载层传送传输层PDU的mesh消息格式。底层传输层从上层传输层接收PDU,并将其发送到对等设备的底层传输层。上层传输层负责对传入和传出接入层的应用数据进行加密、解密和认证。访问层负责定义应用如何利用上层传输层,包括:定义应用数据的格式,定义并控制在上层传输层执行的加密和解密过程。在将数据上传到堆栈之前,对来自上层传输层的数据进行验证,判断其是否适用于该网络和应用。 基础模型层负责mesh网络的配置和管理相关模型的实施。模型层涉及模型的实施,因此涉及一个或多个模型规格中定义的行为、消息、状态、状态绑定等的实现。
在安全方面,蓝牙mesh采用了一种安全性架构,包括:在配置期间进行身份验证;多层保护,在网络层和应用层均实施了加密和认证;重放保护,包括IV 索引(32 位)、序列号(24 位)、IV 索引更新过程;密钥刷新,设立节点黑名单,这能够解决部署大型无线设备网络的公司所面临的安全性问题。
Zephyr* OS 支持蓝牙mesh
智能楼宇包含数量庞大的组网设备,它们并非都是功能单一的元素,其中功能复杂的物联网设备需要搭载合适的操作系统,才能为用户提供优异的性能。Zephyr作为一款专门为资源受限设备推出的物联网操作系统,其具有开源性、模块化、可配置的优点,自推出以来受到越来越多开发者的关注,并逐步被各种物联网设备所采用。为了满足物联网的碎片化需求,Zephyr操作系统尽可能支持多种架构,目前包括ARM、x86、ARC、NIOS-II、RISC-V、Xtensa六种架构。
那么,这些搭载Zephyr操作系统的物联网设备能否被添加到蓝牙mesh网络中呢?答案是肯定的。Zephyr 操作系统从1.9 版本开始支持蓝牙mesh,实现了所有强制特性,并针对其它多种实施方案进行了测试,现已移植到 MyNewt,并且已将多个重要的修复程序移植回 Zephyr 中,可使用许多流行的开发板进行支持 Zephyr 的演示。
在资源占用方面,Zephyr操作系统占用的 RAM 极小(包含网格的整个操作系统)只有约 12kB,甚至适用于受限最严格的 16k 开发板,比如 BBC micro:bit,可见非常适合资源受限的物联网设备进行安装。
Linux* 支持蓝牙mesh
除了Zephyr操作系统,Linux操作系统也开始支持蓝牙mesh。其在BlueZ 5.47 中发布了 meshctl 工具,包括GATT 客户端和PB-GATT 配备设备。在用户空间 (BlueZ) 和内核中持续运行,在内核中管理广播和扫描,通过管理 API 扩展来实现控制,用户空间中的其他所有资源几乎都已网格化。
未来,网格供应商 HCI 扩展将得到 Linux 和 Zephyr 支持,同时增加更多针对 Zephyr 好友支持的特性,提供更多标准模型,使用各种开发板进行更多演示。
关于Zephyr
Zephyr 项目是一款小型且可扩展的操作系统,尤其适用于资源受限的硬件系统,可支持多种架构;该系统高度开源,对于开发人员社区完全开放,开发人员可根据需要对该系统进行二次开发,以支持最新硬件、工具和设备驱动程序;该系统高度模块化平台,可轻松集成任何架构的第三方库和嵌入式设备。