news 2026/9/19 0:57:28

Matter 连接标准之 Bouffalolab RPC 控制台:从固件构建到远程灯光控制的完整实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Matter 连接标准之 Bouffalolab RPC 控制台:从固件构建到远程灯光控制的完整实战指南

Matter 连接标准之 Bouffalolab RPC 控制台:从固件构建到远程灯光控制的完整实战指南

【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip

本指南聚焦于 Matter(原 Project CHIP)在 Bouffalolab(博流智能)平台上的 Pigweed RPC 控制台方案。通过本文,你将掌握如何为 BL602、BL704L、BL706 系列开发板构建带 RPC 服务的 lighting 固件,如何编译安装chip-console交互式控制台,并通过串口远程调用rpcs.chip.rpc.Lighting服务实现灯具状态的读取与设置,从而获得一条可直接复制的设备调试与验证路径。

一、Bouffalolab 平台的 RPC 控制台概述

RPC(Remote Procedure Call)控制台是 Matter SDK 中基于 Pigweed 生态构建的一套设备端交互工具链。它允许开发者在主机(PC)上通过 UART 串口与运行 Matter 固件的嵌入式设备建立通信,实时调用设备端注册的 gRPC 风格服务(如灯控、设备信息、按键、Thread 等),而无需依赖完整的 Matter 网络配对流程。

在 Bouffalolab 平台中,RPC 服务与设备日志共用一个 UART 通道:日志以 HDLC 帧封装发送(地址为 1),RPC 通信则使用同一物理链路的其他 HDLC 地址,二者互不干扰。这一设计使得开发者既能通过chip-console下发控制指令,又能同时观察设备日志,极大提升了调测效率。相关的平台实现可参考 Rpc.cpp 与 PigweedLogger.cpp。

二、支持的开发板与固件构建

本指南对应的示例程序为 lighting-app(灯控应用)。以下三个目标(target)分别对应三种 Bouffalolab 官方开发板,其中-rpc后缀表示固件中包含 RPC 服务:

开发板连接方式构建目标
BL602DKWi-Fibouffalolab-bl602dk-light-wifi-littlefs-rpc
BL704LDKThreadbouffalolab-bl704ldk-light-thread-littlefs-rpc
BL706DKThreadbouffalolab-bl706dk-light-thread-littlefs-rpc

构建命令统一通过 SDK 的build_examples.py脚本完成,例如 BL602DK 的构建命令为:

./scripts/build/build_examples.py --target bouffalolab-bl602dk-light-wifi-littlefs-rpc build

BL704LDK 与 BL706DK 的 Thread 版本对应命令为:

./scripts/build/build_examples.py --target bouffalolab-bl704ldk-light-thread-littlefs-rpc build ./scripts/build/build_examples.py --target bouffalolab-bl706dk-light-thread-littlefs-rpc build

说明:littlefs表示文件系统采用 littlefs 实现(用于持久化存储),wifi/thread则标明设备的底层连接协议。构建前需先完成 SDK 环境的引导(见下文 console 构建部分的bootstrap.sh),并确保已检出 Bouffalolab SDK 相关依赖。平台侧的构建入口与 Flash 分区配置位于 examples/platform/bouffalolab,其中 BL602 的分区表可参考 partition_cfg_4M.toml。

三、RPC 服务的设备端实现剖析

理解设备端如何承载 RPC 服务,有助于更高效地使用控制台。Bouffalolab 平台的 RPC 服务注册集中在 Rpc.cpp,其核心流程如下:

  • 服务实例化:在匿名命名空间中创建各服务对象,例如Lighting lighting_serviceBouffaloDevice device_serviceBouffaloButton button_serviceThread threadOtCli ot_cli_service等(见 Rpc.cpp)。
  • 服务注册RegisterServices()将上述服务逐一挂载到pw::rpc::Server上(见 Rpc.cpp),控制台端调用rpcs.chip.rpc.*命名空间下的方法,即对应这些注册项。
  • 服务启用开关:所有服务均受编译宏控制(如PW_RPC_LIGHTING_SERVICEPW_RPC_DEVICE_SERVICEPW_RPC_THREAD_SERVICEPW_RPC_TRACING_SERVICE等)。-rpc后缀的构建目标会开启相应开关,从而把对应 RPC 服务编入固件。
  • RPC 任务Init()使用 FreeRTOS 静态任务创建 RPC 服务线程(栈 1536 字、优先级 1),任务主体调用Start(RegisterServices, &logger_mutex)启动服务端(见 Rpc.cpp)。

此外,BouffaloDevice 提供了Reboot(可指定延时毫秒数,默认 1000ms,最终调用bl_sys_reset_por()软复位)与FactoryReset(默认 1 秒后触发ConfigurationMgr().InitiateFactoryReset())两个设备级方法,它们会在控制台中以rpcs.chip.rpc.Device.Reboot(...)rpcs.chip.rpc.Device.FactoryReset()的形式暴露。设备日志则通过 PigweedLogger.cpp 以 HDLC UI 帧(地址 1、写缓冲 128 字节)发送,配合互斥量保证多线程日志不交错。

四、构建 chip-console 交互控制台

chip-console是基于 Pigweedpw_console定制的 Python 交互式控制台,已内置 CHIP 所需的全部 RPC proto 定义。完整说明见 examples/common/pigweed/rpc_console/README.md。

4.1 环境准备

首次使用本仓库时,需要先引导环境以安装所有依赖:

source <project_root>/scripts/bootstrap.sh

若此前已执行过 bootstrap,则只需激活环境:

source <project_root>/scripts/activate.sh

4.2 编译安装

进入 rpc_console 目录,用 GN 生成构建文件并编译:

cd <project_root>/examples/common/pigweed/rpc_console gn gen out/debug ninja -C out/debug

该目录的 BUILD.gn 定义了一个pw_python_distribution("chip_rpc_distribution")目标,会将 Pigweed 与 Matter 的 Python 依赖合并打包成名为chip_rpc的 wheel(输出位于out/debug/obj/chip_rpc_distribution下),并支持 editable 模式安装,方便源码调试。

编译完成后,输出目录中还会生成chip_rpc_console_wheels文件夹,内含该工具所需的全部 wheel 包。若在无 SDK 的环境中,只需安装这些 wheel 即可使用控制台:

cd <project_root>/examples/common/pigweed/rpc_console/out/debug pip install chip_rpc_console_wheels/*.whl

五、启动 RPC Console 并控制灯光

5.1 启动控制台

将设备通过 USB 串口连接主机后,以设备串口节点为参数启动控制台。Bouffalolab 文档给出的启动命令为(适用于以/dev/ttyACM0枚举的开发板):

$ chip-console -d /dev/ttyACM0 -b 115200

其中-d指定串口设备路径,-b指定波特率(此处为 115200)。通用场景下也可使用长选项形式:

$ chip-console --device /dev/ttyUSB0

提示:chip-consolechip_rpc.console包的入口点,也可通过python -m chip_rpc.console直接运行。若设备枚举为ttyUSB0而非ttyACM0,请按实际节点调整-d参数;部分平台还可能需要在系统层配置串口读写权限。

5.2 读取灯光状态

控制台启动后会进入交互式 Python REPL 环境。查询当前灯光开关状态与亮度,执行:

rpcs.chip.rpc.Lighting.Get()

5.3 设置灯光状态

将灯光点亮并设置亮度等级为 128,执行:

rpcs.chip.rpc.Lighting.Set(on=True, level=128)

Lighting.Set()的两个参数分别对应开关状态(on)与亮度值(level,取值范围视固件实现而定,lighting 示例中通常为 0~255)。该方法最终由设备端注册的LightingRPC 服务接收,并映射到 Matter 应用层执行实际的灯控逻辑。

作为对照,chip-console的通用 RPC 调用示例还包括设备信息查询:

rpcs.chip.rpc.Device.GetDeviceInfo()

结合前文设备端实现可知,凡是RegisterServices()中注册过的服务(如rpcs.chip.rpc.Devicerpcs.chip.rpc.Buttonrpcs.chip.rpc.Thread等),均可在控制台中以rpcs.chip.rpc.<Service>.<Method>()的形式调用。

六、典型调测工作流总结

综合以上内容,Bouffalolab 平台使用 RPC 控制台的标准工作流可归纳为四步:

  1. 构建固件:按第二节命令构建对应开发板的-rpc目标镜像并烧录;
  2. 准备控制台:执行bootstrap.sh/activate.sh,在examples/common/pigweed/rpc_consolegn gen+ninja编译并安装chip-console
  3. 连接设备:确认串口节点(如/dev/ttyACM0),以 115200 波特率启动chip-console
  4. 调用 RPC:通过rpcs.chip.rpc.*接口读取/设置灯光状态,或调用Device.RebootDevice.FactoryReset等设备级操作辅助调试。

该方案让开发者无需完整走一遍 Matter 配网流程,即可快速验证硬件外设与业务逻辑,是 Bouffalolab 系列开发板日常开发与自动化测试中非常实用的调测手段。

【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 0:56:26

用Charles抓包百词斩:批量提取单词音频与例句翻译的完整实战

做英语学习工具或者备考资料整理的人&#xff0c;大概率都有过这样一个念头&#xff1a;百词斩里的单词翻译、真人发音、例句和例句翻译都挺规整&#xff0c;要是能按自己的词库批量拉下来&#xff0c;做成Anki卡片、离线词表或者自用的词典&#xff0c;效率会高很多。手动一个…

作者头像 李华
网站建设 2026/9/19 0:56:00

Keil 5暗色护眼主题配置:从配色到global.prop详解

每次打开Keil 5&#xff0c;那个刺眼的白色窗口都让我怀疑自己是在写代码还是在做眼科测试。做单片机开发的朋友应该都有同感——默认的MDK界面实在谈不上舒服&#xff0c;白底黑字配上饱和度极高的语法高亮&#xff0c;白天看还行&#xff0c;一到晚上加班&#xff0c;盯上两个…

作者头像 李华
网站建设 2026/9/19 0:54:59

Transformer-LSTM混合模型在股票择时中的对比实验与PyTorch实现

简介&#xff1a;在金融量化交易研究不断深化的背景下&#xff0c;这份PDF围绕Transformer-LSTM混合模型在股票择时策略中的对比实验展开&#xff0c;适合量化研究员、金融方向研究生以及对机器学习选股感兴趣的开发者阅读。文档共42页&#xff0c;完整覆盖从LSTM与Transformer…

作者头像 李华
网站建设 2026/9/19 0:52:00

2026年北京断桥铝开平窗源头厂家综合实力推荐:恒熠门窗行业全景分析

断桥铝门窗作为北方家装与工程场景的核心建材&#xff0c;其核心性能直接关系到居住舒适度与能耗控制。在华北地区&#xff0c;夏季高温多雨、冬季严寒多风&#xff0c;普通塑钢窗或劣质铝合金门窗往往难以兼顾隔音、保温与耐用性&#xff0c;而断桥铝门窗通过隔热条切断金属导…

作者头像 李华
网站建设 2026/9/19 0:51:05

手写K-means与FCM聚类算法:从原理到工程实现

简介&#xff1a;本资源是面向高校人工智能课程学习者与初学者的聚类算法实验教学材料&#xff0c;聚焦无监督学习核心内容&#xff0c;助力理解K-means与FCM两种经典算法的原理差异、实现逻辑与实际应用。文档完整呈现广州大学《人工智能导论》实验四的规范报告结构&#xff0…

作者头像 李华