matter设备--为light_bulb添加温湿度endpoint
[复制链接]
准备
由于matter使用zap对endpoint/cluster等进行添加/编辑/删除等操作,所以需要安装zap工具.
zap工具必须版本一直,可以通过<ncs目录>modules/lib/matter/scripts/setup/nrfconnect/get_zap.py来安装,命令如下:
cd <ncs>/modules/lib/matter
python scripts/setup/nrfconnect/get_zap.py -l ~/Programs/ -o
~/Programs/是指定的安装目录.
<ncs>表示ncs安装目录.
配置
命令格式如下:
zap src/light_bulb.zap --zcl <ncs>/modules/lib/matter/src/app/zap-templates/zcl/zcl.json --gen <ncs>/modules/lib/matter/src/app/zap-templates/app-templates.json
需要注意的是zcl.json和app-tamplates.json文件不可以拷贝到其他地方,我是了会报错,拷贝之后可能需要修改里面的内容.
然后会出现配置界面如下:
我已经添加了endpoint-2,endpoint添加是使用+ADD POINT按钮,点了之后会出现以下界面:
device可以下拉进行选择,选和是自己的就行.
温湿度传感器endpoint的内容如下:
通过过滤器只显示使能的cluster后就是上面的界面.
根据实际情况进行属性,命令等设置.
完成后保存退出即可.
生成源码
使用以下命令进行代码生成
python <ncs>/modules/lib/matter/scripts/tools/zap/generate.py <工程目录>/src/light_bulb.zap -t <ncs>/modules/lib/matter/src/app/zap-templates/app-templates.json -o <工程目录>/src/zap-generated
工程目录和ncs推荐使用绝对路径.
如果出现'Exception: Could not find a suitable clang-format'提示,可以通过apt安装clang-format进行解决.
修改
源码生成之后,需要修改app_task.cpp中的以下函数:
void AppTask::UpdateClustersState();
void AppTask::UpdateTemperatureClusterState();
void AppTask::UpdatePressureClusterState();
void AppTask::UpdateRelativeHumidityClusterState();
温湿度传感器默认设备是bme680,根据实际情况添加驱动然后修改源码
UpdateClustersState中修改对传感器进行采集部分.源码如下:
const int result = sensor_sample_fetch(sBme688SensorDev);
UpdateTemperatureClusterState中对数据行进转换,合规检测等,然后通过
Clusters::TemperatureMeasurement::Attributes::MeasuredValue::Set(kTemperatureMeasurementEndpointId, newValue);
进行数据的提交.
UpdatePressureClusterState和UpdateRelativeHumidityClusterState也是类似.
可以根据实际情况进行删减.
至此设备端的修改完成.
|