【Zigbee】TuyaOS Zigbee传感产品接入说明

Zigbee 子设备开发


Post Reply
kb-cyf
Posts: 3

TuyaOS Zigbee传感产品接入说明

开发包拉取

TuyaOS开发包拉取及基本说明可参考【Zigbee】 zigbee设备开发快速入门

文件结构

下图左侧(非以tbl\tdl\tdd开头文件)为产品应用层文件,开发者可修改此处文件实现需求功能。

右侧为产品所关联组件,实现基本基础功能,开发者也可自行接入驱动组件。

Image

功能开关说明

在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
//增加初始化接口,可根据需要决定是否要初始化参数
//增加获取亮度的接口注册

完成以上步骤,即完成新驱动增加。

如果新驱动有其他特殊处理逻辑,也可自行增加,但需用宏同通用代码隔离开,防止切换驱动类型时编译出错。

传感产品流程图

Image

dnvwf
Posts: 5

Re: 【Zigbee】TuyaOS Zigbee传感产品接入说明

在3.7.1版本里,没有这个DEMO了,只有一个tuyaos_demo_zg_pir_tl;根据是否有人存在的上报进行修改光照度上报;失败!
进行灵敏度、距离等配置时,下发到模组里,接收不到!
麻烦有没有完全正确的DEMO提供一下,感谢

Post Reply