【nRF7002-DK Wi-Fi® 6开发套件评测】#6 基于nRF7002开发matter协议的部署
<div class='showpostmsg'><p>基于nRF7002开发matter协议的部署</p><p>1 Matter协议的组织</p>
<p> 虽然围绕matter的开发很热,但是完整实现的开发环境实例并不多,nRF7002就是一个很好的开发平台,不过,这个过程显得非常不友好,至少是在国内的伙伴们。本周尝试了10天左右,应该是说再见的时候。主要的原因就是第一步Matter的构建,需要从github源下载文件,在没有完全完成的情况下,已经达到11G。按照当下github所能提供的流量通道,这个已经很多了,但是这个matter需要完整引用多个submodule,这样至少有三层的子模块在--recursive的选项下是必须下载的,而这个过程其实几乎无法完全控制,在基本下载完的情况下,尝试build就首战告负,显示开发环境有开发错误,这个在不同版本的操作系统下并不罕见,不过,如果不是生产环境,仅仅是测试的过程,就要替厂家debug这个就有些划不来的。所以,这个部分的评测就此中止了。后面原计划还有的连续测试也就只好随后再说了。</p>
<p> 不过,这个也说明了当下matter发展所遇到的现状。就是匆匆推出抢占市场,即使是在基础测试很成熟的情况下,在多态适应,多种场景切换,以及不同版本兼容上,还有很大的工作没有完成,无法成为市场的主体。仅从matter的开发需要下载11G的代码就可以看出,这个工作量偏大了。</p>
<p> 在此,重新理清matter的脉络。</p>
<p> 首先,matter是需要构建围绕2.4GHz的通讯协议互相联通的问题,目前主要的2.4GHz协议是wifi,蓝牙,低功耗蓝牙,蓝牙Mesh,thread,zigbee,以及各个厂家的私有协议,如TI的自有2.4GHz协议。其中wifi和蓝牙已经自称一体,各自在大流量和低功耗上分别占有主导地位,其实,出货量大的情况下,在小圈子里也可以自洽了。这个matter的最大收益者应该是zigbee,应该是zigbee的商业路线起步就要认证收费,和蓝牙等低门槛没认证就铺货不是一个玩法,然后wifi出了ESP芯片,一下子把硬件门槛给减下去了,所以wifi也是因为esp而赢麻了。还需要注意的是matter虽然号称开放,其实Lora,NB-IoT等并没有纳入其中,而且看来不打算纳入其中,所以嘛,还是 那个熟悉的味道。</p>
<div style="text-align: left;"></div>
<div style="text-align: left;">这个图就比较典型,wifi和thread都各自成网,以wifi接入点也就是我们常见的路由器,thread路由器分别作为高层的网,与必须具备的matter控制器一起构成更高级的网络,这样把异构的网络都连接起来。</div>
<div style="text-align: left;"> 具体实现的信号比较复杂,为了保证数据各自安好,同时避免分赃不匀,这个安全协议是相当的复杂,但是基于其复杂度而言,已经是非常效率高的,搞密码的可以好好研究一下。而对应终端开发者记住这样的简单逻辑就是,任意一个终端节点,包括控制这些节点的手机APP,桌面程序等都首先发出一个基于原始协议的信号包,然后到达各自的网关,这个网关把信息提交matter控制器,打包成matter包,然后分发给原来的网关或者其他网关,这些网关再解包分发,这个过程,终端节点的代码和协议完全不变,但是网关和matter控制器是必须更新代码的,这样。在新的构架下,基于matter的编号也是扩展长度的,用matterID来描述。</div>
<div style="text-align: left;"> 相比而言,wifi的路由是可以不升级代码的,貌似因为这个包可以整包传给matter控制器,自己只需要支持ipv6就行了,老猫应该是不灵了。</div>
<div style="text-align: left;">具体参照<a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/protocols/matter/overview/network_topologies.html#ug-matter-configuring-controller">Matter network topology and concepts </a></div>
<p> </p>
<p>2 构建Matter的方法</p>
<p> 这里的核心就是构建matter控制器,目前,只有Linux可以支持,经过测试的操作系统不多,但是可以支持树莓派。这些matter代码,都需要原生系统上完成build,所以,花时间那个是不可避免的。</p>
<p> 这里可以直接使用已经build成的linux版本,不过,只提供了nRF SDK2.5.0的,使用sdk2.4.2的终端代码无法兼容。<a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/protocols/matter/getting_started/testing/wifi_pc.html">Matter over Wi-Fi: Configuring CHIP Tool for Linux or macOS</a>以及<a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/matter/chip_tool_guide.html">Working with the CHIP Tool</a>和<a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/matter/BUILDING.html">Building Matter — Matter SDK documentation</a></p>
<p>首先,下载代码,如果提示用户名不灵,需要改用http下载,</p>
<pre>
<code>git clone --recurse-submodules git@github.com:project-chip/connectedhomeip.git</code></pre>
<p>然后需要完成依赖包安装</p>
<pre>
<code>sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev</code></pre>
<p>配置好wifi,这个需要固定IP,如修改如下命令</p>
<pre>
<code>sudo nano /etc/systemd/system/dbus-fi.w1.wpa_supplicant1.service</code></pre>
<p>然后安装ZAP file,这个是支持zigbee的文件,已经提供了build release,就不用下载源码了,这个也是一个巨大的工程,提供源码就太浪费资源了。这个就是要形成和zigbee联通的资源包。</p>
<p>都配置好,就build一下,先启动虚拟环境</p>
<pre>
<code>source scripts/activate.sh</code></pre>
<p>然后使用ninja来构建,而不是cmake</p>
<pre>
<code>gn gen out/host
ninja -C out/host</code></pre>
<p>这样就在build目录下生成可执行的chiptool文件。当然,前提是没有报错啊。</p>
<pre>
<code>./scripts/examples/gn_build_example.sh examples/chip-tool BUILD_PATH</code></pre>
<p>3 启动chiptool的控制</p>
<p> chiptool的运行命令简单很多,</p>
<pre>
<code>$ ./chip-tool</code></pre>
<p>直接起飞,运行完成,这个是单此运行。需要完整的功能需要进入交互模式,这样就在配网成功,终端接入的情况下启动,需要网络构建成功</p>
<pre>
<code>./chip-tool interactive start</code></pre>
<p>如果需要thread,还需要启动thread,这里thread提供了一个docker影像,不用从头开始,</p>
<pre>
<code>sudo docker exec -it otbr sh -c "sudo ot-ctl dataset active -x"</code></pre>
<p>这样及形成matter测试的基本环境。</p>
<p> </p>
<p>4 终端设备的启动和运行</p>
<p> 终端设备运行和识别,需要40位代码,前12位是广播码,后27位是设备码,含厂家编号等。</p>
<ul>
<li>
<p>Discriminator - A 12-bit value used to discern between multiple commissionable device advertisements.</p>
</li>
<li>
<p>Setup PIN code - A 27-bit value used to authenticate the device.</p>
</li>
</ul>
<p>chiptool是单命令行,如果需要加入设备,或者控制设备的参数状态,都需要直接录入命令。比如,加入一个配对的设备,需要以下命令</p>
<pre>
<code>$ ./chip-tool pairing code <node_id> <qrcode_payload-or-manual_code></code></pre>
<p>如果实现专用的功能,那么还需要再编写一个交互界面,才能简单使用起来。</p>
<p>在各个终端的app都已经升级了针对matter的扫描加入和读码加入功能,用户使用起来,就靠那40位编号搞联通,还算方便,不过,小米什么都都还很淡定,等子弹再飞一会儿,兴许自己就玩没了呢?</p>
<p> </p>
<p>5 小结</p>
<p> 原本是希望给做一个从零起步的模板打样,结果搞到最后弄了一个现(场表)眼的表现,不过,再丑也见一下各位,有高手用躺雷区,可以继续,不过,目前,已经搞不动了,就先到这里结帖,也不多评价了,毕竟各路大佬已经急急慌慌的弄了一把了,看来还活挺多,超越了我的智能水准,就等大佬什么时候能整出适合智商低一下的工具再用不迟。</p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>目前确实也没有一个很好的Matter教程,让很多有兴趣的小伙伴,望而却步。</p>
页:
[1]