Matter - 体验,灯泡(1)

一、前言

        Matter(当时称为 Project Connected Home over IP 或 Project CHIP)于2019年12月11日首次宣布。当时,它是由苹果、谷歌、亚马逊和联发科技等公司共同发起的一个项目,目的是创建一个开放标准,提高智能家居设备之间的互操作性。在2021年,该项目更名为 "Matter",同时宣布了首个 Matter 1.0 版本的发布,这标志着 Matter 开始为开发者和制造商提供稳定的规范,以便构建和推出兼容的智能家居设备。

        本篇采用 nordic 的 nrf-connect-sdk v2.5.0,matter 标准1.1.0,体验 Matter over Thread 开发。

二、先决条件

  1. 带蓝牙的 Ubuntu 22.04 PC 环境。(用作 Matter Controller 控制 MAD 和 开发编译环境)
  2. 支持 IPV6 的路由器。(WiFi Access Point,因为matter基于IPV6,所以路由器必须具备IPV6地址分配的能力(DHCPV6或者可以分配地址前缀信息),否则matter运行过程中mDNS会报错)
  3. Raspberry Pi 5 + nrf52840dongle。(用作 Open Thread Border Router - OTBR)
  4. nrf5340 dk。(作为 Matter Accessory Device - MAD)

本文基于 Matter over Thread 的网络:  

三、配置环境 

Tip:下载相关操作需要梯子。

1.安装 nrf-connect-sdk,构建编译环境。

方式一:使用 vscode 编译与下载(推荐),使用 vscode 的 nrf connect sdk 扩展去下载 toolchain 和 sdk 即可。

方式二:使用 命令行 编译与下载。

方式三:使用  SEGGER Embedded Studio(SES) 编译与下载。

2. 构建 MAD。编译 Matter light hulb 示例。

配置文件选择 prj_no_dfu.conf,不需要烧录 bootloader,其他需要先编译并烧录bootloader。

3. 构建 OTBR 和 编译 coprocessor 示例。

  • OTBR 需要 radvd 服务,来进行IPV6无状态自动配置。
sudo apt update
sudo apt install radvd
  • 创建 /etc/radvd.conf,例如:其中 wlan0 为网卡名称,根据实际情况修改,运行ifconfig查看网卡名称。
interface wlan0 {
  AdvManagedFlag on;
  AdvSendAdvert on;
  MinRtrAdvInterval 30;
  MaxRtrAdvInterval 60;
  prefix fd11:33::1/64 {
      AdvOnLink on;
      AdvAutonomous on;
      AdvRouterAddr on;
      };
  };
  • 重启 rvdvd 服务
sudo systemctl restart radvd
  • 登录 Raspberry Pi 并从 GitHub 克隆 ot-br-posix:
git clone https://github.com/openthread/ot-br-posix.git --depth 1
  • OTBR 可在线程接口和基础架构网络接口(例如 Wi-Fi/以太网)上使用,通过 INFRA_IF_NAME 指定。Thread 接口默认由 OTBR 创建,名为 wlan0。如果未明确指定 INFRA_IF_NAME,则基础架构接口的默认值为 wlan0。
cd ot-br-posix
./script/bootstrap
INFRA_IF_NAME=wlan0 ./script/setup
  • 检查 OTBR 是否已成功安装: 
$ sudo service otbr-agent status
● otbr-agent.service - Border Router Agent
   Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Mon 2021-03-01 05:43:38 GMT; 2s ago
  Process: 2444 ExecStart=/usr/sbin/otbr-agent $OTBR_AGENT_OPTS (code=exited, status=2)
 Main PID: 2444 (code=exited, status=2)

对树莓派 sudo reboot 重启更改生效 

  • 对 nrf52840dongle 编译 RCP: 
west build -p always -b nrf52840dongle_nrf52840 nrf/samples/openthread/coprocessor/

 打包:

nrfutil pkg generate --hw-version 52 --sd-req=0x00 \
 --application build/zephyr/zephyr.hex --application-version 1 build/zephyr/zephyr.zip

 烧录:

nrfutil dfu usb-serial -pkg build/zephyr/zephyr.zip -p /dev/ttyACM0
  • 插入 RCP 到 Raspberry Pi,编辑文件 /etc/default/otbr-agent,改变tty端口和主干接口波特率。
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=100000"
  • 启动 otbr-agent 服务。
sudo systemctl start otbr-agent.service

4. 编译 CHIP Tool(POSIX chip-tool CLI)。

使用官方的最新 chip 项目:

git clone https://github.com/project-chip/connectedhomeip.git
cd connectedhomeip
git submodule update -f --init --recursive
./scripts/examples/gn_build_example.sh examples/chip-tool BUILD_PATH

other:Android chip tool;IOS chiptool。

四、测试设备

1. 配置和启动 OpenThread(OT)网络,在 raspberry pi 终端下执行。

sudo ot-ctl dataset init new
sudo ot-ctl dataset networkkey 00112233445566778899aabbccddeeff
sudo ot-ctl dataset extpanid 1111111122222222
sudo ot-ctl dataset panid 0x1234
sudo ot-ctl dataset channel 15
sudo ot-ctl dataset commit active
sudo ot-ctl ifconfig up
sudo ot-ctl thread start
  • 初始化一个新的 OpenThread 数据集。
  • 设置网络密钥(Network Key)为给定的值。这是用于保障网络安全性的密钥。
  • 设置扩展PAN ID(Extended PAN ID)为给定的值。这是网络的唯一标识符。
  • 设置PAN ID为给定的值。这是一个短地址,用于在同一网络中唯一标识设备。
  • 设置网络通信的频道为给定的值。在 IEEE 802.15.4 网络中,通信频道的选择对于网络的性能和干扰有影响。
  • 提交对数据集的更改,并激活新的数据集。这将应用上述设置。
  • 启动 OpenThread 接口,准备进行通信。
  • 启动 OpenThread 线程栈,使设备成为网络的一部分。

2. 使用 POSIX chip-tool CLI 来配置配对 Matter Light 设备。

        Matter Light 等待配对状态下 LED1 慢闪,配对中快闪,配对后常亮(nrf5340dk 按住 button1 3s 以上恢复出厂设置)。执行编译出来的 chip-tool 应用如下命令进行配对:

sudo ./chip-tool pairing ble-thread 1234 hex:0e08000000000001000035060004001fffe00708fd9e914e6def9df2030f4f70656e5468726561642d323361350410542ccde31a710d5b17af34e12fec0f140c0402a0f7f8051000112233445566778899aabbccddeeff0208111111112222222201021234000300000f 20202021 3840

$ ./chip-tool pairing ble-thread <node_id> hex:<operational_dataset> <pin_code> <discriminator>

  • pairing ble-thread: 指定使用 BLE Thread 进行配对。
  • <node_id>: 设备的节点ID。这是设备在网络中的唯一标识符。
  • hex:<operational_dataset>: 操作数据集(Operational Dataset)的十六进制表示。这是设备的操作参数,用于配置设备的网络连接等信息。
  • <pin_code>: PIN码。这是一种简单的配对方法,用户可以输入此代码来验证设备。
  • <discriminator>: 辨识码。用于在设备之间进行配对时进行标识的参数。

node_id 自定义为 1234。 operational_dataset 获取在 raspberry pi 终端中执行:

sudo ot-ctl dataset active -x

 得到

0e08000000000001000035060004001fffe00708fd9e914e6def9df2030f4f70656e5468726561642d323361350410542ccde31a710d5b17af34e12fec0f140c0402a0f7f8051000112233445566778899aabbccddeeff0208111111112222222201021234000300000f
Done

pin_code、 discriminator 在 Matter Light 启动时可以在设备的日志终端(例如UART)中找到,当前 pin_code:20202021,discriminator:3840。

I: 658 [DL]Device Configuration:
I: 662 [DL]  Serial Number: 11223344556677889900
I: 666 [DL]  Vendor Id: 65521 (0xFFF1)
I: 670 [DL]  Product Id: 32773 (0x8005)
I: 673 [DL]  Product Name: not-specified
I: 677 [DL]  Hardware Version: 0
I: 681 [DL]  Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 687 [DL]  Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 694 [DL]  Manufacturing Date: (not set)
I: 698 [DL]  Device Type: 65535 (0xFFFF)

3. 使用 POSIX chip-tool CLI 发送 ZCL 消息来控制 Matter Light 设备。

  • 使用以下命令模式切换 OnOff 属性状态(例如通过 LED 状态可视化):

$ ./chip-tool onoff toggle <node_id> <endpoint_id>

  • <node_id>为委托节点的用户自定义ID。

  • <endpoint_id>是已实现 OnOff 集群的端点的 ID。

  • 使用以下命令模式更改 CurrentLevel 属性的值(例如,通过 LED 亮度进行可视化): 

$ ./chip-tool levelcontrol move-to-level <level> <transition_time> <option_mask> <option_override> <node_id> <endpoint_id>

  • <level>0是在和之间编码的亮度级别254,除非在集群中配置了自定义范围。

  • <transition_time>是过渡时间。

  • <option_mask>是选项掩码。

  • <option_override>是选项覆盖。

  • <node_id>为委托节点的用户自定义ID。

  • <endpoint_id>是实现了 LevelControl 集群的端点的 ID。 

exmple:

翻转LED2:

sudo ./chip-tool onoff toggle 1234 1

 LED2 亮度 18,过渡时间 3s:

sudo ./chip-tool levelcontrol move-to-level 18 3 0 0 1234 1

相关参考

  • Matter over Thread: Configuring Border Router and Linux/macOS controller on separate devices
  • Thread tools
  • 线程边界路由器 - 双向 IPv6 连接和基于 DNS 的服务发现
  • Working with the CHIP Tool

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模拟日光AR汽车HUD的光学特性太阳光模拟器

AR HUD 的光学特性 几何光学可描述物体、透镜和成像之间的关系。将物体放在透镜及其焦点之间将会形成放大且离实际物体有一定距离的虚像[4]。这便是 HUD 生成虚像的方法。源物体&#xff08;在这里是散射屏或 TFT 面板&#xff09;在 HUD 反光镜光学系统的焦距内。这使相应虚像…

快速排序【hoare版本】【挖坑法】【双指针法】(数据结构)

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中 的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所有元素均…

第五站:C++的内存解析

目录 C内存分布 变量的四种存储方式 函数返回值使用指针(指针函数) 动态分配内存空间 不能使用外部函数的普通局部变量的地址 通过指针函数返回静态局部变量的地址 动态内存 根据需要分配内存,不浪费(根据用户的需求设置内存的容量) 被调用函数之外需要使用被调用函数内…

C# Cad2016二次开发选择文本信息导出(六)

//选文本信息导出 [CommandMethod("getdata")] public void getdata() {// 获取当前文档和数据库Document doc Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;Database db doc.Database;Editor ed doc.Editor;// 获取当前…

亲手打造一个本地LLM语音助手来管理智能家居

经历过 Siri 和 Google 助手之后&#xff0c;我发现尽管它们能够控制各种设备&#xff0c;但却无法进行个性化定制&#xff0c;并且不可避免地依赖于云服务。出于对新知识的渴望以及想在生活中使用一些酷炫的东西&#xff0c;我下定决心&#xff0c;要追求更高的目标。我的要求…

我成为开源贡献者的原因竟然是做MySql-CDC数据同步

今年下半年机缘巧合下公司决定搭建自己的数据中台&#xff0c;中台的建设势必少不了数据集成。首先面临的就是数据集成技术选型的问题&#xff0c;按照社区活跃度、数据源适配性、同步效率等要求对市面上几个成熟度较高的开源引擎进行了深度调研。 最终经过内部讨论决定用Apac…

解决虚拟机字体太小的问题

在win11中&#xff0c;安装VMWare软件后&#xff0c;创建好虚拟机&#xff0c;打开终端后&#xff0c;发现终端里显示的字体太小&#xff0c;不方便使用&#xff0c;因此需要修改。 1、打开终端 2、输入"gsettings set org.gnome.desktop.interface text-scaling-factor…

运筹说 第98期|无约束极值问题

上一期我们一起学习了关于非线性规划问题的一维搜索方法的相关内容&#xff0c;本期小编将带大家学习非线性规划的无约束极值问题。 下面&#xff0c;让我们从实际问题出发&#xff0c;学习无约束极值问题吧&#xff01; 一、问题描述及求解原理 1 无约束极值问题的定义 无约…

日志采集传输框架之 Flume,将监听端口数据发送至Kafka

1、简介 Flume 是 Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传 输的系统。Flume 基于流式架构&#xff0c;主要有以下几个部分组成。 主要组件介绍&#xff1a; 1&#xff09;、Flume Agent 是一个 JVM 进程&#xf…

SpringBoot异常处理(Whitelabel Error Page和自定义全局异常处理页面)和整合ajax异常处理

SpringBoot异常处理&#xff08;Whitelabel Error Page和自定义全局异常处理页面&#xff09;和整合ajax异常处理 1、springboot自带的异常处理页面Whitelabel Error Page SpringBoot默认的处理异常的机制&#xff1a;SpringBoot 默认的已经提供了一套处理异常的机制。一旦程…

继钱江之后,赛科龙也出自动挡?RA401自动挡曝光

QJ在发动赛921的当天&#xff0c;还有一台闪300搭载了自动挡&#xff0c;当天的热度高的离谱&#xff0c;并且后续也经常有人问&#xff0c;这自动挡啥时候上市等等&#xff0c;相信有很多人都想要一台排量大一点的自动挡摩托车&#xff0c;而最新的消息赛科龙也在开发一台&…

文本分类的一些记录

背景 过去工作中最常遇到的问题就是文本分类和实体抽取的任务。其中文本分类是自然语言处理中最基础的任务&#xff0c;指的是将文本打上特定的类别标签&#xff0c;以做区分和筛选。文本分类主要流程一般是&#xff1a;先预处理文本&#xff0c;再提取特征&#xff0c;最后通…

PDF修改技巧之:如何简单方便的编辑PDF文件?

在当今精通技术的世界中&#xff0c;PDF 的使用已变得普遍&#xff0c;尤其是在商业和教育方面。如果您在审阅 PDF 文件时遇到语法或其他错误怎么办&#xff1f; 尽管 PDF 文件不像 Word 或在线文档那样容易编辑&#xff0c;但借助高级工具&#xff0c;您一定可以进行编辑。 …

鸿蒙 ArkUI - 常用组件和布局

目录 一、组件 1.按钮 2.单选框 3.切换按钮 4.进度条 5.文本 6.文本输入框 二、布局方式 1.线性布局 2.层叠布局 3.弹性布局 4.网格布局 一、组件 ArkUI有丰富的内置组件&#xff0c;包括文本、按钮、图片、进度条、输入框、单选框、多选框等。我们还可以将基础组件…

HCIA基础知识

IP地址、静态路由、动态路由、交换机 OSPF RIP DHCP VLAN ACL NAT OSI TCP/IP UDP TCP 三次握手&#xff0c;四次挥手&#xff0c;报头 什么是网络&#xff1f; 由网络连接设备通过传输介质将网络终端设备连接起来&#xff0c;进行资源共享、信息传递的平台。 OSI七…

【电子取证篇】蘇小沐的电子取证工具合集在线文档

【电子取证篇】蘇小沐的电子取证工具合集在线文档 弄成了在线表格&#xff0c;记得及时保存&#xff1b;工具永远只是辅助&#xff0c;但不要过多依赖自动化&#xff0c;有难度说明可以提升&#xff0c;既要不断学习也要不停思考&#xff0c;知行合一—【蘇小沐】 【腾讯文档…

202405读书笔记|《作家榜名著:宋词三百首(马未都亲笔推荐版)》——绿酒初尝人易醉,一枕小窗浓睡

《作家榜名著&#xff1a;宋词三百首&#xff08;马未都亲笔推荐版&#xff09;》画很美&#xff0c;词也是&#x1f618;&#x1f618;&#xff0c;既廖远又色彩明艳&#xff0c;丰富而丰盈&#xff0c;看的很欢乐的一本书。部分节选如下&#xff1a; 艳溢香融 天遥地远&…

智能搬运机器人作为一种新型的物流技术

随着物流行业的快速发展&#xff0c;货物转运的效率和准确性成为了企业竞争的关键因素之一。智能搬运机器人作为一种新型的物流技术&#xff0c;已经在许多企业中得到了广泛应用。本文将介绍富唯智能智能搬运机器人在物流行业的应用和优势。 在实际应用中&#xff0c;智能搬运机…

如何在Eclipse IDE中安装TestNG插件

目录 使用Eclipse Marketplace安装TestNG插件 通过输入URL安装TestNG 1.点击安装新软件 2.输入URL以安装TestNG 3.遵循正常的安装过程 4.重新启动Eclipse 在Eclipse中安装TestNG插件的视频 在这篇文章中&#xff0c;我们将介绍如何在Eclipse IDE中安装TestNG插件&#x…

基于算术电路的全同态加密方案介绍

基于算术电路的全同态加密方案介绍 摘 要&#xff1a; 云计算技术目前已经发展得相对成熟&#xff0c;应用也逐步得到普及&#xff0c;它所具有的强大的数据处理能力&#xff0c;能够帮助个体用户计算复杂的数据。但它带来便利的同时&#xff0c;也催生了一系列用户隐私数据保…