亲宝软件园·资讯

展开

[BlueZ] 3、使用 meshctl 连接控制一个 sig mesh 灯

beautifulzzzz 人气:0
[TOC]
### 前言 本文介绍如何使用 meshctl 配对、连接、控制一个 sig mesh 球泡灯
### 1、准备工作 **1)编译安装 meshctl:** meshctl 和b luetoothctl 一样都属于 bluez(一个linux上的蓝牙协议栈:Official Linux Bluetooth protocol stack[#1]) **ps:**之前写过bluez的安装和使用(主要是bluetoothctl) - [BlueZ] [1、Download install and use the BlueZ and hcitool ][l1] - [BlueZ] [2、使用bluetoothctl搜索、连接、配对、读写、使能notify蓝牙低功耗设备 ][l2] 这里采用源码编译(不安装-绿色),大家复制一个我下面的脚本,命名为 `run.sh`: ```shell ➜ bluez-5.52-pure cat run.sh #!/bin/bash wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.52.tar.xz tar -xvf bluez-5.52.tar.xz cd bluez-5.52 ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-mesh make -j8 ``` 执行该脚本自动下载、解压、配置、编译,最后在 `bluez-5.52/tools/` 下生成了可执行文件 `meshctl` 接下来就可以执行下面命令来启动 `meshctl` : ```shell ➜ tools ./meshctl --config mesh Waiting to connect to bluetoothd...Reading prov_db.json and local_node.json from mesh directory [meshctl]# ``` ps:`--config mesh` 是指定 `prov_db.json` 和 `local_node.json` 所在目录。
**2)准备一个SIG MESH两路灯泡** 在 iot.tuya.com 上创建一个 sig mesh两路的灯免开发方案: ![][p1] 然后默认点下去,在硬件调试阶段,可以选择下单一个模块用于调试(10块钱左右,比较便宜),收到模块后按照配置在模块上连接两个LED,供上电即可:(以下图为例:收到模块后在GPIO2的引脚接一个高电平点亮的白光灯珠、在GPIO7的引脚接一个高电平点亮的暖光灯珠、再给模块供上3.3V的电即可) ![][p2] 当然,你也可以自己用开发板,自己开发一个标准SIG MESH支持onoff model的灯~
### 2、meshctl 连接、配置、控制 sig mesh 灯 **1)搜索未配置设备** 输入 `discover-unprovisioned on` 命令会自动搜索周围未配置的 sig mesh 设备,如下搜索到一个 MAC 为 `BC:23:4C:04:CC:F7` 的设备: ```shell [meshctl]# discover-unprovisioned on SetDiscoveryFilter success Discovery started Adapter property changed [CHG] Controller A0:D3:7A:DB:24:B8 Discovering: yes Mesh Provisioning Service (00001827-0000-1000-8000-00805f9b34fb) Device UUID: bc234c04ccf75012366c63366c677062 OOB: 0000 [NEW] Device BC:23:4C:04:CC:F7 BC-23-4C-04-CC-F7 ```
**2)provision 设备** 用下列命令将配网安全等级设置为0:(从涂鸦IOT平台上创建的灯采用的认证机制是:no oob) ```shell [meshctl]# security 0 Provision Security Level set to 0 (low) ``` 然后调用 `provision` 对设备进行连接配置:(其中 Composition data 就是该节点的配置信息) ```shell [meshctl]# provision bc234c04ccf75012366c63366c677062 Trying to connect Device BC:23:4C:04:CC:F7 BC-23-4C-04-CC-F7 Adapter property changed [CHG] Controller A0:D3:7A:DB:24:B8 Discovering: no Connection successful Service added /org/bluez/hci0https://img.qb5200.com/download-x/dev_BC_23_4C_04_CC_F7/service0008 ... GATT-RX: 00 f4 05 1f de 88 66 06 9f 72 f8 31 ca 0f 9f 46 GATT-RX: 55 3c 46 89 0e de e5 8e ad 29 Composition data for node 0100 { "cid":"07d0", "pid":"0005", "vid":"3033", "crpl":"0069", "features":{ "relay":true, "proxy":true, ... } GATT-TX: 00 f4 2b 62 8c 1e e2 d1 65 31 1d 78 04 28 5d 16 GATT-TX: 92 a3 db 21 5b 82 fc 75 c3 [DEL] Device DC:23:4D:0B:74:4F DC-23-4D-0B-74-4F [DEL] Device BC:23:4C:03:88:D1 BC-23-4C-03-88-D1 [SigMesh-Node-0100]# ```
**3)绑定相关配置** 使用 `menu config` 进入子目录,使用 `target 0100` 选择当前要配置的节点为 0100; 用 `netkey-add 0` 给设备配置第0个网络秘钥,使用 `appkey-add 1` 给设备配置第1个应用级别秘钥 (网络秘钥和APP秘钥是 mesh 规范中要求的,该秘钥可以在 meshctl 主页菜单执行 `mesh-info ` 看到); 最后用 `bind 0 1 1000` 实现将 model:1000 绑定(绑定时采用net-key 0,app-key 1) **ps:** 订阅与发布是 sig mesh 实现联动控制的机制,每一个事件和动作都抽象为 model,比如:onoff model 就是规定开关逻辑的模型,其 id 也是规定死的: 0x1000 ```language [SigMesh-Node-0100]# menu config [SigMesh-Node-0100]# target 0100 [config: Target = 0100]# netkey-add 0 [config: Target = 0100]# appkey-add 1 [config: Target = 0100]# bind 0 1 1000 ```
**4)控制灯的开关** 从 config 子菜单返回,进入 onoff 子菜单,然后选择目标 0100,之后就可以用 onoff 命令来实现控制了:(之后如果再次打开 meshctl,只需要调用 `connect 0 0100` 即可实现再次连接) ```language [config: Target = 0100]# back [config: Target = 0100]# menu onoff [config: Target = 0100]# target 0100 [on/off: Target = 0100]# onoff 0 [on/off: Target = 0100]# onoff 1 ```
### 3、最终效果: ![][p3]
: **bluez:bluez的meshctl是比较新的功能,国内外资料比较少,特别是在交叉编译的系统上部署!** : **大家觉得不错,可以点推荐给更多人~**
### LINKS [[1].bluez官网][#1] [[2].BLE Mesh 开发(1) - nRF52与meshctl][#2]
``` @beautifulzzzz 以蓝牙技术为基础的的末梢无线网络系统架构及创新型应用探索! 领域:智能硬件、物联网、自动化、前沿软硬件 博客:https://www.cnblogs.com/zjutlitao/ 微信交流群|微信:园友交流群|btfzzzz ``` [#1]:http://www.bluez.org/ [#2]:https://blog.csdn.net/leirifa/articlehttps://img.qb5200.com/download-x/details/86582522 [p1]:http://tuchuang.beautifulzzzz.com:3000/?path=/34https://img.qb5200.com/download-x/db5656c74d59ca89dab07831d6e1cd.png [p2]:http://tuchuang.beautifulzzzz.com:3000/?path=/94/2894208dae9eac6fb600f9195ac483.png [p3]:http://tuchuang.beautifulzzzz.com:3000/?path=/12/cfc10136d84736a5fb63f72f3ad9f8.gif [l1]:https://www.cnblogs.com/zjutlitao/p/9576589.html [l2]:https://www.cnblogs.com/zjutlitao/p/9589661.html

加载全部内容

相关教程
猜你喜欢
用户评论