ble mesh 学习笔记(6) 如何对接天猫精灵蓝牙mesh

2023-05-16

MESH设备接入天猫精灵的步骤

1、设备在天猫精灵mesh 网络中所具有的怎么样功能 ?

1.1 目前根据mesh协议能实现如下功能节点。

(1) Node: 网络边缘的节点,没有relay功能,一个没有其他特性的mesh节点。

  (2) Low power node: 低功耗节点,由于有friendnode的存在,low power node不需要一直在广播信道发送或者监听数据包,可以更节省功耗。Low power node只需要定期的从它的friend node查询是否有数据到达就可以。

  (3) Relay node: 是网络层扩展网络覆盖范围的核心节点,在接收到其它节点发送的数据包之后,根据网络的设定条件判断是否需要转发。

  (4) Friend node: 作为low powernode的代理节点功能,当有low power node节点的数据下达时,可以在friend node缓存,等待low power node查询并且获取。

(5) proxy node : 支持该特性的节点,使非mesh 网络设备通过BLE的GATT来与mesh网络进行交互。

 

按照产品mesh实际使用的通信方式分:

  • 只上传数据,不需要控制的节点,单向通信节点。

  • 需要进行交互的节点,双向通信节点。

 

单向通信节点: 可以为 Low power node 和 Node

适用于只需要发送信息及时。如果要低功耗可以使用 Low power node

双向通信的节点:Relay node 和 Friend node,proxy node

适用于:支持及时的双向通信,功耗较高直接供电设备

特别是需要与手机交互的 可以采用 proxy node。

 

1.2 低功耗节点(Low power node)的运行周期

降低设备功耗,尽可能选择低功耗节点运行

 

消息传递过程:

 

周期性的进行消息轮训,接受好友节点的消息,如何好友节点发生“好友更新”消息,意味着没有新的消息,此时低功耗节点停止当前消息轮询。具体运行时序如图:

 

在整个运行过程中可以随时进行唤醒,发送用户消息到mesh其他网节点中。周期时间设置范围在(1s -- 96h )

参考低功耗相关特性说明:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.meshsdk.v3.2.0%2Fmd_examples_experimental_lpn_README.html&cp=5_2_3_6_1

 

2、设备如何能被天猫精灵发现 ?

2.1 申请三元组(mac 产品id 密钥)

 

备注:设备生产过程中,烧录三元组也需要考虑。

 

2.2 广播特定的mesh-beacon

蓝牙mesh设备上电后如处于未配网状态,需要广播Unprovisioned Device Beacon,每次广播时长40ms,广播间隔100ms,广播持续时间默认10分钟,

广播包中的Device UUID是识别设备的关键信息,阿里巴巴对Device UUID的定义如下表所示,UUID中各字段采用小端模式进行存储。

 

 

3 设备如何加入天猫精灵的网络?配网流程

蓝牙mesh设备配网流程遵循蓝牙mesh标准的Provisioning流程,其中几个使用自定义数据的步骤描述如下:

 

 

3.1 Provisioning Capabilities阶段

mesh设备在Provisioning Capabilities阶段提供OOB方式,要求唯一支持Static OOB方式,其中的AuthValue计算过程如下:

AuthValue = SHA256(Product ID,MAC,Secret)。

即:将ProductID,MAC,Secret三元组通过字符串用英文逗号连接,然后进行SHA256摘要计算,取前16字节。注:这里用于计算SHA256的英文字母全部为小写

三元组在开发者平台注册产品时会生成调试用的三元组,量产三元组请走开发者平台量产流程。

表6 SHA256计算示例

数据字段数据格式与示例计算使用的输入字符串
Product ID十进制数值:168930,对应十六进制数值:0x293e2"000293e2"
Mac Address"AB:CD:F0:F1:F2:F3"(扫描到的蓝牙设备MAC地址)"abcdf0f1f2f3"
Secret"53daed805bc534a4a93c825ed20a7063""53daed805bc534a4a93c825ed20a7063"
连接后字符串"000293e2,abcdf0f1f2f3,53daed805bc534a4a93c825ed20a7063" 
SHA256结果输出(HEX)c1 c7 67 41 55 32 36 fb 7d a0 a5 86 e6 22 98 c2 31 da c2 88 5e 73 5f eb a6 b8 b441 7c 7d 9e 72 
AuthValue(HEX)c1 c7 67 41 55 32 36 fb 7d a0 a5 86 e6 22 98 c2 

备注:设备端需要实现该加密算法

3.2 Provisioning Confirmation阶段

这个阶段,天猫精灵和mesh设备会使用Static OOB方式来做认证,如果天猫精灵和mesh设备两边计算得到的Confirmation值不相同,确认值为上章节计算的AuthValue唯一的 生成,则认证失败,结束流程。

 

mesh协议在此阶段中有一个步骤是设备端生成一个随机数并发送给天猫精灵,天猫精灵会把这个随机数发送给云端鉴权,云端会保存设备端每次发送的随机数,如果设备端发送的随机数是之前使用过的,则云端将会拒绝该设备配网,所以务必保证每次生成的随机数都不重复。

 

3.3 Provisioning Data阶段

对于多Element设备,天猫精灵在该阶段只会下发Pirmery Element的Unicast Address。其余Element的Unicast Address则根据上一Element的地址自行增加1。

分配节点网络入网所需要的数据:

  • Network Key

网络密钥,具有相同网络密钥的设备才位于同一个网络

  • Key Index

网络密钥序号

  • Flags

标志位,指示是否网络密钥刷新的阶段、是否IV index正在刷新

  • IV Index

IV index是32位数据,位于相同网络的设备共享相同的IV index,并在网络运作过程中通过secure network beacon更新共享

  • Unicast Address

设备主元素地址,网络内通过该地址寻址设备

基于这些信息,配网完成的节点设备才能同在一个BLE SIG Mesh网络。

 

3.4 Provision完成配置阶段进行绑定APPkey

天猫精灵在Provisioning Complete之后,会下发AppKey。其余配置根据UUID版本有以下区别:

UUID版本配置方式
0天猫精灵会下发一次主element的Config_Model_App_bind,设备需要返回成功的status,否则会配网失败;剩余model需要自行绑定appkey。天猫精灵会使用Config_Model_Subscription_Add命令下发主element的品类组播地址,设备需要返回成功的status,否则会配网失败;剩余model需要自行绑定品类组播地址。注:在设置设备位置和别名的时候天猫精灵也会通过Config_Model_Subscription_Add下发位置或别名的组播地址,此时不要将组播地址绑到其他元素
1天猫精灵不会下发Config_model_app_bind和Config_Model_Subscrption_Add消息。IOT设备需要自行给所有Element的所有model绑定下发的AppKey,并根据产品类型为各个model订阅相应的组播地址(具体品类组播地址请参阅各产品软件规范)。蓝牙mesh设备完成配网后需要进行消息上报,上报消息包括该设备所有支持的可上报的属性。

具体参考天猫精灵mesh 开发规范:https://doc-bot.tmall.com/docs/doc.htm?spm=0.7629140.0.0.34a51780Ql0P5i&treeId=578&articleId=109585&docType=1

 

3.5 配网方式选择

  • APP进行PB-GATT入网

  • 天猫精灵网关直接入网

     

4、设备如何被天猫精灵控制与交互?

兼容天猫精灵的 mesh网络扩展协议,已经sig应用的标准model协议。

具体参考天猫精灵的 mesh网络扩展协议:https://doc-bot.tmall.com/docs/doc.htm?spm=0.7629140.0.0.24761780hiuGOt&treeId=578&articleId=109049&docType=1

 

5、设备如何与天猫精灵APP交互?

  • APP消息通过云端转发给天猫精灵mesh网关进行mesh交互 。

  • APP通过代理(proxy)节点接入mesh进行交互。

其代理Proxy PDU的类型,定义如下:

img

可以实现通过APP接入代理(proxy)节点实现如下功能

  • 配置以及控制设备(通过Network PDU)

  • 通过Proxy configuration,可以对APP想要接受信息数据进行控制。

  • App可以作为配置设备,通过代理节点给其他未配网的节点配网。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ble mesh 学习笔记(6) 如何对接天猫精灵蓝牙mesh 的相关文章

随机推荐

  • simpleBGC32-软件代码开源

    simpleBGC32官方只提供了硬件开源 xff0c 导致市场上有大量的v1 3版的硬件电路板用于飞机云台 xff0c 通过烧录官方给的hex文件实现基本功能 但是由于针对simpleBGC32的软件代码没有开源 xff0c 所以很多需要
  • Gazebo环境下VIO SLAM系统实现

    Gazebo环境下VIO SLAM系统实现 Gazebo环境下VIO SLAM系统实现简介0 准备工作1 搭建gazebo环境1 1 相机1 2 IMU 2 VINS MONO2 1 安装及make2 2 参数修改2 3 外参标定2 3 1
  • 滤波学习理解----EKF(一)

    最近回到slam方向了 xff0c 所以有时间整理一下最近的收获 最复杂也是最简单的模块 滤波 引入 那么滤波是什么呢 xff1f 滤波就是由于观测observation xff08 OB xff09 天生具备的误差和噪声 当有多个信号源观
  • 在VMware里装Kali Linux选graphical install后黑屏解决方案

    我用的是VMware 16 xff0c 装Kali Linux 2020 xff0c 选graphical install后黑屏 其实不管选哪个都黑屏 一开始按照网上的netsh winsock reset xff0c 虚拟打印机 xff0
  • USB移动存储设备上安装Kali Linux(独立系统 非Live 非虚拟机)Standalone Kali Linux + grub2 + luks加密

    前言 本文分享的是在USB移动设备上安装Kali Linux独立系统 非Live版 xff01 非虚拟机版 xff01 非Live版 xff01 非虚拟机版 xff01 非Live版 xff01 非虚拟机版 xff01 这里的USB设备包括
  • 简单git多人协同

    git网上的资料非常多 xff0c 本文只希望能提供一个简单直观的使用教程 xff0c 可能不严谨 如果本文有任何问题 xff0c 请及时指正 git简介 本章介绍git的基本概念 xff0c 了解git就可以跳过 什么是git xff1f
  • Arch 安装 Visual Studio Code(支持Wayland)

    文章目录 安装vscode在Wayland下模糊的解决方法在Wayland下无法使用输入法的解决方法 安装vscode 虽然官网下载一般是首先 xff0c 但是比较复杂 xff0c 所以推荐使用AUR xff1a yay S visual
  • 安装并使用NoMachine

    1 进入NoMachine官网下载NoMachine安装包 2 安装NoMachine xff0c 一路到底 xff0c 不需更改其他设置 xff08 安装目录随意 xff09 3 下载IP扫描工具 xff1a Advanced IP Sc
  • Wayland环境下通过xwayland支持docker图形界面

    写在前面 在之前的文章里已经讲解了怎么直接在docker中使用wayland支持图形界面 xff08 docker内外都使用wayland xff09 xff0c 文章链接 xff1a 使用Docker安装ROS2 ros humble 并
  • ZigBee生产测试项说明

  • C#窗体缩放时窗体上控件同缩放比例变化

    1 定义2个全局float 变量X Y xff0c 用来记录窗体默认窗口时的宽度和高度 float X 默认窗口的宽度 float Y 默认窗口的高度 2 窗体Load的时候将窗体的宽度 高度赋值给X Y private void Form
  • C# winform存储配置文件之App.config文件读写

    有时候一些用户的配置需要写入在本地 xff0c 不能每次程序启动都让用户重新设置一下吧 下面先说基本用法 xff1a 1 创建winform项目之后自动会生成App config文件 xff0c 如果默认没有 就对项目右键 新建项 APP配
  • C# 解决串口接收数据不完整处理方法

    使用缓存机制完成 首先通过定义一个成员变量List lt byte gt buffer 61 new List lt byte gt 4096 用来存放所有的数据 xff0c 在接收函数里 xff0c 通过buffer AddRange 方
  • ble-mesh笔记整理(1) ble-mesh通信理解

    最近有时间将之前整理的 xff0c 关于蓝牙mesh开发学习过程的一些笔记 xff0c 以及一些对mesh协议文档理解的翻译文档 xff0c 发布出来给大家一起学习和参考 xff0c 主要是一个学习的过程参考 蓝牙Mesh通过网状网的组网结
  • ble-mesh 学习笔记(2)-如何给mesh-node配网

    1 配网方式选择 基于手机设备为provisioner进行进行PB GATT 配网 如果一个蓝牙4 0的手机需要用作Provisioner xff0c 并完成对其他节点的配网过程 则需要使用Mesh Provisioning Service
  • ble mesh学习笔记(3)mesh节点设备广播类型

    蓝牙Mesh网络一共有3种广播包 xff0c 如下图所示 1 PB ADV的包是用在Provisioning过程的 xff0c Provisioning是一个设备加入Mesh网络的过程 2 Mesh Message xff0c 这个是在设备
  • ble mesh学习笔记(4)元素model的理解

    说明 xff1a 涉及代码模块为Telink mesh sdk 一 Composition Data 结构定义 mesh节点Composition Data 数据定义元素个数以及元素下model个数与model id数据结构如下 xff1a
  • ble mesh学习笔记(5) mesh数据PDU封包理解

    mesh 网络数据协议格式 xff1a access payload 协议格式 xff1a Upper transport layer协议格式 xff1a 消息分为 xff1a control message friendship cont
  • 交换机SNMP V3版本配置

    SNMPV3版本安全性和远端配置强化 xff0c 目前公司已经禁止SNMPV3以下版本 xff08 H3C交换机 xff09 xff0c 配置步骤如下 1 开启SNMP协议 snmp agent 2 设置使用的SNMP版本 snmp age
  • ble mesh 学习笔记(6) 如何对接天猫精灵蓝牙mesh

    MESH设备接入天猫精灵的步骤 1 设备在天猫精灵mesh 网络中所具有的怎么样功能 xff1f 1 1 目前根据mesh协议能实现如下功能节点 xff08 1 xff09 Node xff1a 网络边缘的节点 xff0c 没有relay功