Matter - NXP K32W061 Matter 温湿度 Sensor

    前面有文章给大家介绍过基于 K32W061 搭建支持 Matter Contact Sensor Demo,它是K32W061 Matter 工程中已经支持的设备类型,实际上许多接触传感器中也会包含温湿度传感器,这篇文章主要就是介绍在原有的 Contact Sensor 的工程中加入温湿度 sensor 功能,这样在设备加入 Matter 网络后就可以同时看到多个传感器的状态。

    此次测试的硬件主要还是 K32W061DK6 开发套件,使用的软件 SDK 版本是 SDK_2_6_13_K32W061DK6 Matter 的工程包版本是 NXP GitHub(https://github.com/NXP/matter) 上发布的 v1.2.0.0.1。

    首先,需要修改 contact-sensor-app.zap ,在其中添加 Humidity Sensor Device 和 Temperature Sensor Device,通过新增两个 Endpoint 来实现,如下图,在原有的基础上,添加了 Endpoint 2 和 Endpoint 3,分别对应了 Temperature 和 Humidity。

        

    添加完成后可以先不对代码做任何修改,根据之前工程的搭建 Matter 环境和编译的步骤,完成编译后烧录到 K32W061DK6 开发板中,使用 iPhone + HomePod 进行 Matter 设备配网,当设备连接上手机后,会看到对比之前 Contact Sensor Demo ,手机上显示的设备多了温度传感器和湿度传感器。

        

    并且在 Apple Home 中可以同时看到温湿度的显示和接触传感器的状态,并且可以看到这里显示的温度和湿度都是 0,只有接触传感器是正常显示状态,是因为前面的修改仅仅只是添加了两个 Endpoint 来实现,代码中并没有对这两个设备的数值上报进行添加。

        

    在修改代码前,再一起看一下 Humidity Sensor Device 和 Temperature Sensor Device 在 Matter 中的定义,实际上它们两个的结构的差不多都有一个专门测量的 Cluster。

        

    Temperature Measurement Cluster 中主要通过 MeasuredValue 这个 Attribute 来实现温度数据的更新;



        

    Relative Humidity Measuremen 中同样也有 MeasuredValue 这个 Attribute 来实现相对湿度数据的更新。

        

    所以看到这里相信大家已经知道了,想要在 Matter 中实时更新对应的温湿度值,只要对这两个温湿度 Cluster 中的MeasuredValue Attribute 写值,实际上也类似于 Contact Sensor 中的 Boolean State。

    为了验证前面提出的想法,在代码找到原来 Contact Sensor 中更新 Boolean State 的 void AppTask::UpdateClusterStateInternal(intptr_t arg),在里面添加上更新 Temperature Measurement 和 Relative Humidity Measuremen 的 MeasuredValue 属性。

        

    根据前面步骤添加完成代码后,将设备再次配网,在手机上就可以查看到此时已经显示了配置的温度和湿度数据。

        

    以上是给 MeasuredValue 属性写入了固定的值,那么在实际应用中大家按照 Sensor 返回来的真实温湿度数据进行写入更新就可以了,整个状态更新的过程大家也可以参考 Contact Sensor 更新 Boolean State 的过程,如果希望对温湿度 Sensor Device 和 Cluster 等更多的了解大家可以参考 Matter 的 Spec。

    以上就是今天的全部内容,如果文章中有错误或者不足欢迎大家提出共同学习。


参考资料:

    Matter-1.2-Device-Library-Specification
    Matter-1.2-Application-Cluster-Specification

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论