TuyaOS Zigbee传感产品接入说明
开发包拉取
TuyaOS开发包拉取及基本说明可参考【Zigbee】 zigbee设备开发快速入门
文件结构
下图左侧(非以tbl\tdl\tdd开头文件)为产品应用层文件,开发者可修改此处文件实现需求功能。
右侧为产品所关联组件,实现基本基础功能,开发者也可自行接入驱动组件。
功能开关说明
在apps\tuyaos_demo_pir_sensor\include\sensor_app_config.h,可手动配置功能开关,开发者可根据需要选择功能,此处置0,则相关功能均不加入编译。PS:后续会更新为可视化配置
开发者可全局搜索这些宏,了解功能完整使用流程,并根据需要进行调整。
Code: Select all
#define APP_KEY_SUPPORT 1
#define APP_LED_SUPPORT 1
#define APP_BATTERY_SUPPORT 1
#define APP_GPIO_ALARM_SUPPORT 1
#define APP_IAS_ZONE_SUPPORT 1
#define APP_ILLUM_SUPPORT 1
#define APP_PIR_SUPPORT 1
功能修改指南
1.数据更新及上报修改:
TuyaOS组件会将状态变化回调返回给到应用层,开发者可在apps\tuyaos_demo_pir_sensor文件夹下相应文件中修改处理这些回调。
如开发者更新电池电量属性前需要将数据进行处理,可在battery_callback.c文件中,修改以下代码实现:
Code: Select all
/**
* @brief update battery level callback, user update data manually.
*
* @param[in] val: battery level value.
*
* @return VOID_T
*/
VOID_T tbl_battery_level_update_handler(UINT8_T val)
{
val *= 2;
tbl_common_write_sensor_attribute(0x01, CLUSTER_POWER_CONFIG_CLUSTER_ID, ATTR_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID, &val, ATTR_INT8U_ATTRIBUTE_TYPE);
}
2.已有组件新增驱动:
TuyaOS zigbee传感类组件分为tbl/tdl/tdd三层。如开发需在已有组件上新增驱动,可参考已有tdd组件,并将新驱动接口添加到tdl组件中。
以亮度传感器组件为例:
1)创建新驱动c\h文件,在新驱动文件中增加初始化、获取数据接口,接口定义参考如下:
Code: Select all
/**
* @brief phottresistance driver init.
*
* @param [in] param: the init param of the photoresistance driver.
*
* @return OPERATE_RET
*/
OPERATE_RET tdd_illum_photoresistance_init(TDD_PHOTO_PARAM_T * param);
/**
* @brief read photo resistance value and calcluate the lux.
*
* @param [inout] lux: the pointer of the lux.
*
* @return OPERATE_RET
*/
OPERATE_RET tdd_illum_photoresistance_get_current_lux(UINT32_T *lux);
/**
* @brief read photo resistance value
*
* @param [inout] raw: the pointer of the lux.
*
* @return OPERATE_RET
*/
OPERATE_RET tdd_illum_photoresistance_get_current_lux_raw(UINT32_T *raw);
2)在tdl_illum_config.h文件中插入新驱动类型宏:
Code: Select all
//illum driver select
#define ILLUM_SENSOR_TYPE (5) //Sensor types are defined as follows.
#define ILLUM_TYPE_TCS3400 (1) //1: TCS3400
#define ILLUM_TYPE_LTRX140A (2) //2: LTRX140A
#define ILLUM_TYPE_OPT3004 (3) //3: OPT3004
#define ILLUM_TYPE_STK2236 (4) //4: STK2236
#define ILLUM_TYPE_PHOTORESISTANCE (5) //5: Photoresistance
//此处新增...
3)在tdl_illum.c中插入新驱动接口:
头文件包含增加:
Code: Select all
#if (ILLUM_SENSOR_TYPE == ILLUM_TYPE_TCS3400)
#include "driver_tcs3400.h"
#endif
#if (ILLUM_SENSOR_TYPE == ILLUM_TYPE_LTRX140A)
#include "driver_ltrx140a.h"
#endif
//参考上方用宏区隔头文件包含
初始化增加:
Code: Select all
#if (ILLUM_SENSOR_TYPE == ILLUM_TYPE_TCS3400)
tcs3400_Init();
s_get_illum_func = tcs3400_get_current_lux;
#elif (ILLUM_SENSOR_TYPE == ILLUM_TYPE_LTRX140A)
ltrx140a_init();
s_get_illum_func = ltr140a_get_current_lux;
#elif
//增加初始化接口,可根据需要决定是否要初始化参数
//增加获取亮度的接口注册
完成以上步骤,即完成新驱动增加。
如果新驱动有其他特殊处理逻辑,也可自行增加,但需用宏同通用代码隔离开,防止切换驱动类型时编译出错。