ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Matter 开源 SDK 中 Java Matter Controller(java-matter-controller)示例的构建与使用指南

Matter 开源 SDK 中 Java Matter Controller(java-matter-controller)示例的构建与使用指南 Matter 开源 SDK 中 Java Matter Controllerjava-matter-controller示例的构建与使用指南【免费下载链接】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本指南完整讲解 connectedhomeipMatter 开源 SDK中examples/java-matter-controller示例的定位、环境准备、编译构建与运行方式并深入到其 Kotlin 命令框架与配对Pairing源码说明该控制器在 Ubuntu/Linux 主机上如何配网、发现并控制 Matter 设备。读完本文你将能够独立搭建 Java 8 与 Kotlin 编译器环境、通过build_examples.py产出可执行 Jar并掌握discover、pairing、im等命令簇的实际用法。一、示例功能定位java-matter-controller是 Matter 生态中的一种Java 控制器Commissioner Controller示例用于配网Commission并控制 Matter 配件设备。根据 examples/java-matter-controller/README.md 的说明它支持以下功能配网Commission一台 Matter 设备向 Matter 回声服务器echo server发送 echo 请求向 Matter 设备发送 on/off 簇请求。从源码结构看其实际能力远不止于此。该示例是 Kotlin 实现的命令行控制器入口为 Main.kt其中在启动时构造了ChipDeviceControllerval controller ChipDeviceController( ControllerParams.newBuilder() .setUdpListenPort(0) .setControllerVendorId(0xFFF1) .setCountryCode(US) .build() )随后注册了六大命令簇见 Main.kt命令簇用途包含命令节选discover发现设备/专员resolve、commissionables、commissionerspairing各种方式配对设备code、code-pase、code-wifi、code-thread、address-pase、onnetwork-*系列、unpair、close-sessionim交互模型IM操作onnetwork-long-im-read、-subscribe、-write、-invoke、-extendable-invokeicd间歇性连接设备管理listbdx大文件传输日志下载download-log、onnetwork-long-download-logotaOTA 更新onnetwork-long-ota-over-bdx因此它实际上是一个麻雀虽小、五脏俱全的 Matter 控制器命令行工具。二、构建环境要求Ubuntu/Linux构建本示例需要准备 Java 运行时、JDK 与 Kotlin 编译器三部分。1. Java Runtime EnvironmentJRE先检查系统是否已安装 JREjava -version若未安装以 root 权限执行sudo apt install default-jre2. Java Development KitJDK再检查 Java 编译器是否可用javac -version若提示命令不存在则安装 JDKsudo apt install default-jdk注意当前java-matter-controller示例要求Java 8 及以上版本。3. Kotlin 编译器版本 1.8.10 及以上编译该示例需要Kotlin 编译器 1.8.10 或更高版本。如果系统里通过 apt 安装了更低版本的 Kotlin 编译器需要先移除sudo apt-get remove kotlin可选如需连配置文件一并清除sudo apt-get purge kotlin然后安装 Kotlin 编译器 1.8.10 或以上版本。以 1.8.10 为例cd /usr/lib \ sudo wget -q https://github.com/JetBrains/kotlin/releases/download/v1.8.10/kotlin-compiler-1.8.10.zip \ sudo unzip kotlin-compiler-*.zip \ sudo rm kotlin-compiler-*.zip \ sudo rm -f kotlinc/bin/*.bat说明原文档指向的是kotlin-compiler-1.8.10.zip的下载地址请根据实际网络环境使用可达的官方发布链接替换 URL 后执行。接着把kotlinc/bin永久加入PATH。编辑主目录下的.bashrc文件在文件末尾追加export PATH/usr/lib/kotlinc/bin:$PATH编辑完成后重新加载或重新登录终端使配置生效。4. 设置 JAVA_HOME在 Linux 上还需将JAVA_HOME指向 JDK 安装路径[JDK path]替换为实际路径例如/usr/lib/jvm/default-javaexport JAVA_HOME[JDK path]三、构建前的准备bootstrap进入 Matter 仓库根目录后执行 bootstrap 以拉取子模块、安装构建工具链。仅首次需要执行source scripts/bootstrap.sh这一步会为后续的 GN/Ninja 构建准备好整套 Python 虚拟环境与依赖详见 scripts/bootstrap.sh。四、构建与产物在 Matter 仓库根目录下使用官方构建脚本一键构建./scripts/build/build_examples.py --target linux-x64-java-matter-controller build构建完成后Java 可执行文件可运行 Jar生成于out/linux-x64-java-matter-controller/bin/该目标由 examples/java-matter-controller/BUILD.gn 中的kotlin_binary(java-matter-controller)定义构建时会把控制器核心 JNI 库、TLV/JSON 解析、Onboarding Payload 解析等依赖一并打入${chip_root}/src/controller/javaCHIPController / InteractionModel 库${chip_root}/src/controller/java:jsontlv与:onboarding_payload${chip_root}/third_party/java_deps下的 gson、json、kotlin-stdlib、protobuf-java 等产物的主类与类路径见 examples/java-matter-controller/Manifest.txt入口为com.matter.controller.MainKt类路径中同时包含CHIPController.jar、CHIPInteractionModel.jar、libMatterTlv.jar、libMatterJson.jar、OnboardingPayload.jar等运行时依赖。五、运行 java-matter-controller1. 启动命令在out/linux-x64-java-matter-controller/bin/目录下运行java -Djava.library.path../lib/jni -jar java-matter-controller-Djava.library.path../lib/jni指定 JNI 原生库libCHIPController.so等的查找路径是控制器能够调用底层 Matter 协议栈的关键-jar java-matter-controller使用 Jar 内 Manifest 中声明的Main-Class启动。2. 命令行通用格式控制器启动后通过命令行参数派发命令通用格式为见 CommandManager.ktjava-matter-controller cluster_name command_name [param1 param2 ...]不传任何参数打印全部命令簇列表只传cluster_name打印该命令簇下所有命令传入完整命令名但参数缺失或非法打印该命令的用法与参数说明。从CommandManager的run()逻辑CommandManager.kt看命令参数支持必选与可选[--xxx]两种形态并会在运行前做参数解析与合法性校验。六、常用命令实战1. 发现设备discover resolvediscover resolve用于解析网络中已配网的节点地址参数为节点 ID 与 fabric ID见 DiscoverCommand.ktjava-matter-controller discover resolve --nodeid 1 --fabricid 12. 手动配对码配网pairing codepairing code通过手动配对码Manual Pairing Code / Onboarding Payload完成配网见 PairCodeCommand.ktjava-matter-controller pairing code --node-id 1 --payload 34970112332 --discover-once --use-only-onnetwork-discovery --timeout 60其中公共参数定义于 PairingCommand.kt参数说明node-id分配给被配网设备的节点 ID必选payload设备的 Onboarding Payload手动配对码或 QR 码负载必选discover-once可选仅发现一次use-only-onnetwork-discovery可选仅使用 On-Network 发现timeout等待配网完成的超时时间毫秒完成后程序会打印Commissioner Node ID即本控制器的节点 ID。3. 带网络凭据配网Wi-Fi 配网pairing code-wifi在pairing基类中当网络类型为WIFI时会追加ssid与password两个必选参数PairingCommand.ktjava-matter-controller pairing code-wifi --node-id 1 --payload payload --ssid MySSID --password MyPassword --timeout 60Thread 配网pairing code-thread追加operationalDataset参数Hex 格式的 Thread 运营数据集java-matter-controller pairing code-thread --node-id 1 --payload payload --operationalDataset 0e080000000000010000... --timeout 604. 交互模型IM读属性与事件im onnetwork-long-im-readonnetwork-long-im-read先通过地址地址 端口 5540 Discriminator 设置 PIN 码配对设备再通过 IM Read 读取属性/事件并校验响应见 PairOnNetworkLongImReadCommand.ktjava-matter-controller im onnetwork-long-im-read \ --node-id 1 \ --setup-pin-code 20202021 \ --discriminator 3840 \ --device-remote-ip ::1 \ --device-remote-port 5540 \ --timeout 60该命令内部读取通配属性路径全端点/全簇/全属性以及 Endpoint 0 Basic 簇的属性列表并订阅 Start-Up 事件其ReportCallback中会校验LocalConfigDisabled属性TLV 与 JSON 两种表示、Start-Up 事件以及 Fixed Label 簇的属性集合从源码注释可以看出这主要用于自动化测试场景的响应校验PairOnNetworkLongImReadCommand.kt。此外im命令簇还提供onnetwork-long-im-subscribe订阅、onnetwork-long-im-write写属性、onnetwork-long-im-invoke调用命令与onnetwork-long-im-extendable-invoke覆盖了 Matter 交互模型的主要操作面。5. 解除配对pairing unpairjava-matter-controller pairing unpair --node-id 16. OTA 与日志下载ota onnetwork-long-ota-over-bdx通过 BDX 通道为已配网设备提供 OTA 镜像需附加镜像文件等参数可先不带参数运行查看命令帮助bdx download-log/bdx onnetwork-long-download-log通过 BDX 从设备下载日志文件。七、常见问题与提示运行时报UnsatisfiedLinkError通常是因为-Djava.library.path未正确指向out/linux-x64-java-matter-controller/bin/../lib/jni请从bin/目录内启动或改用绝对路径指定 JNI 目录。javac版本过旧本示例要求 Java 8请先java -version与javac -version双确认。Kotlin 编译器版本不满足kotlinc -version低于 1.8.10 时请按上文先remove/purge旧版本再安装新版本。build 失败确认已在仓库根目录执行过一次source scripts/bootstrap.sh并且从根目录调用./scripts/build/build_examples.py。查看命令帮助直接运行java -Djava.library.path../lib/jni -jar java-matter-controller pairing可列出pairing簇下全部命令运行... pairing code可查看code命令的参数清单与说明。八、小结java-matter-controller是 Matter 官方仓库中基于 Kotlin/Java 实现的轻量级控制器示例通过 BUILD.gn 与 Manifest.txt 完成 JNI 依赖打包借助 Main.kt 将discover、pairing、im、icd、bdx、ota六大命令簇注册进统一的 CommandManager 框架。掌握了本文的环境准备、构建命令与常用配对/IM 命令之后你就可以在 Ubuntu 主机上用它完成 Matter 设备的发现、配网、属性读取、命令调用乃至 OTA 更新也可以参考其源码结构在其基础上扩展自己的 Java/Kotlin 控制器应用。【免费下载链接】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),仅供参考
返回列表