一、构建虚拟设备
1、下载Docker Hub上开源的虚拟设备控制器的工具映像(容器中包含matter sdk与一些环境配置)
sudo docker pull us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
2、启动Docker容器:
sudo docker run -it --ipc=host --net=host -e DISPLAY --name matter-container us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
3、进入chef路径编译虚拟设备,选择在Linux平台建立虚拟设备:
cd ~/connectedhomeip/examples/chef/
./chef.py -zbr -v0xfff1 -p 0x8000 -d rootnode_onofflight_bbs1b7IaOV -t linux
4、等待编译完成后,执行可执行文件启动虚拟设备:
./linux/out/rootnode_onofflight_bbs1b7IaOV
二、开启控制器界面
因为Google提供的虚拟设备控制器是通过RPC服务在本地以一个GUI界面的形式显示设备状态与控制,我是在Windows使用Xshell的SSH登录Ubuntu,于是采用了Xshell + XMing的方式实现在SSH终端显示虚拟设备控制器的GUI界面:
1、下载安装XMing,点击此处跳转下载连接,安装完成后打开XLaunch
- –>Mutiple windows(display number 为 0)
- –> Start no client
- –>Clipbard
- –>勾选 no access control
- –> 完成
2、在Xming安装目录下修改X0.hosts文件,在localhost一行下面添加远程登录的服务器地址192.168.x.x
3、在Xshell打开另一个终端,在SSH下面一栏点击隧道进入X11转移设置,选择X DISPLAY填下localhost:0.0,点击连接进入终端
4、在终端敲下xclock命令测试Xming是否正常工作弹出以下UI
5、测试Xming工作正常后添加远程控制主机的IP地址:
- 查看当前DISPLAY环境变量的值
echo $DISPLAY
- 允许视图界面投影到设定的ip下(0.0与Xshell上的localhost:0.0一致)
export DISPLAY=192.168.x.x:0.0
- 再次查看DISPLAY环境变量的值
echo $DISPLAY
6、确认主机ip地址无误后在终端敲下以下命令进入matter容器:
sudo docker exec -it matter-container /bin/bash
7、进入~/matter-virtual-device-gui 目录,解析js脚本显示界面信息:
electron main.js --s=$DISPLAY --no-sandbox
成功执行命令后你将看见matter虚拟设备控制器的窗口如下图所示:
本文相关链接:
1、Xming启动配置
2、Google developers center