涂鸦一直致力于为开发者提供具有强兼容性、强开发友好性及易用性的TuyaOS
开发框架。
1. 应用配置文件的作用
- 定制编译脚本的行为,如链接指定平台的静态库、固件size校验等;
- 生成app_config.c和app_config.h文件;
- 最终影响固件的是app_config.h文件。
2. 旧版应用配置文件 appconfig.json
在3.9.0
版本之前的开发框架一直使用appconfig.json
文件作为应用配置文件。样例如下:
Code: Select all
{
"firmwareInfo": {
"description": "this is a demon project",
"dev_role":"router",
"image_type":"0x1602",
"manufacture_id":"0x1002",
"model_id":"TS0502B",
"pid": "bhzkbugw",
"manufacture_name": "_TZ3210_",
"module_name":"ZSU",
"chip_id":"efr32mg21a020f768im32"
}
}
其中:
- description:工程描述字符,暂未作用于目标文件;
- dev_role:zigbee设备类型,可选值:router/sleep_end_dev,分别对应zigbee网络中的路由节点设备和终端节点设备;
- image_type:固件类型,用于设备OTA时对固件类型的检查;
- manufacture_id:厂商id,zigbee联盟为每个认证厂商分配了唯一标识符,SDK某些功能组件会检查此id;
Code: Select all
#芯科平台
IMAGE_TYPE_SILICON=0x1602
MANU_CODE_SILICON=0x1002
#泰凌微平台
IMAGE_TYPE_TELINK=0xD3A3
MANU_CODE_TELINK=0x1141
#奉加微平台
IMAGE_TYPE_PHYPLUS = 0x1d1c
MANU_CODE_PHYPLUS=0x1111
model_id:涂鸦zigbee网关识别接入设备类型的关键参数,作用于ClusterId=0x0000,AttributeId=0x0005属性;
pid:涂鸦产品id,设备接入涂鸦云的重要参数;
manufacture_name:设备能力值,用于网关识别设备支持的能力,作用于ClusterId=0x0000,AttributeId=0x0004属性;
module_name:模组名;
chip_id:芯片平台,一般用于编译时添加特定平台的操作。
2.1. 输出文件app_config.h
此文件为编译脚本自动生成,应用层无需修改,文件路径:
./TuyaOS/apps/demo_name/include/
Code: Select all
/*************************************************************************************/
/* Automatically-generated file. Do not edit! */
/*************************************************************************************/
#ifndef __APP_CONFIG_H__
#define __APP_CONFIG_H__
/* automatically generated app firmware information! */
#define FIRMWARE_NAME "3.6.1_test_config_report"
#define FIRMWARE_VER 0x40
#define MANUFACTURER_ID 0x1002
#define IMAGE_TYPE 0x1602
#define MODEL_ID "TS0502B"
#define PID_ID_PFEFIX "_TZ3210_"
#define PRODUCTOR_ID "bhzkbugw"
#define MODULE_NAME "ZSU"
#define DEV_ROLE "router"
#define CHIP_ID "efr32mg21a020f768im32"
#endif
3. 新版应用配置文件app_config.yaml
考虑到json文件的一些局限性以及厂商希望按照标准ZCL协议配置ManufacturerName
和ModelIdentifier
两个属性。从3.9.0开始,开发框架对应用配置文件进行了更新,支持涂鸦模式配置和标准模式配置:
3.1. 文件格式更新
yaml格式优点:
可以添加注释,便于添加参数可选值的提示和使用说明等关键信息;
语法相对更简洁。
3.9.0使用app_config.yaml作为应用配置文件,开发框架附带demo中包含对配置文件样例,请仔细阅读文件中的注释了解使用方法和注意事项。
3.2. 涂鸦模式配置
Code: Select all
Firmware_Information:
description: "this is a demo project"
device_role: "router" # router/sleep_end_dev
image_type:
manufacture_id:
model_id: "TS0502B"
manufacture_name: "_TZ3210_bhzkbugw" # capacity+pid
module_name: ""
chip_id: "" # efr32mg21a020f1024im32/efr32mg21a020f768im32/TLSR8258F1KET
此配置方式基本和旧版配置一致,区别:
manufacture_name:为旧版配置中的manufacture_name+pid组合。
3.3. 标准模式配置
Code: Select all
Firmware_Information:
description: "this is a demo project"
device_role: "router" # router/sleep_end_dev
image_type:
manufacture_id:
model_id: "custom"
manufacture_name: "custom"
product_id: "bhzkbugw"
capacity: "_TZ3210_"
product_type: "TS0502B"
module_name: ""
chip_id: "" # efr32mg21a020f1024im32/efr32mg21a020f768im32/TLSR8258F1KET
此配置方式下,
- model_id:对应于用户自定义的ModelIdentifier属性;
- manufacture_name:对应于用户自定义的ManufacturerName属性;
- product_id:对应于旧版appconfig.json配置中的pid字段;
- capacity:对应于旧版appconfig.json配置中的manufacture_name字段;
- product_type:对应于旧版appconfig.json配置中的model_id字段。
3.4. 输出文件app_config.h
此文件为编译脚本自动生成,应用层无需修改,文件路径:
./TuyaOS/apps/demo_name/
Code: Select all
/*************************************************************************************/
/* Automatically-generated file. Do not edit! */
/*************************************************************************************/
#ifndef __APP_CONFIG_H__
#define __APP_CONFIG_H__
/* automatically generated app firmware information! */
#define BUILD_FIRMNAME "tuyaos_demo_zg_light2"
#define FW_VERSION "1.0.0"
#define FW_VERSION_HEX 0x40
#define APP_DEV_ROLE "router"
#define APP_MANUFACTURE_ID 0x1002
#define APP_IMAGE_TYPE 0x1602
#define APP_MODEL_ID "TS0502B"
#define APP_MANUFACTURE_NAME "_TZ3210_bhzkbugw"
#define APP_PRODUCR_ID "bhzkbugw"
#define APP_CAPACITY "_TZ3210_"
#define APP_PRODUCT_TYPE "TS0502B"
#define MODULE_NAME ""
#define CHIP_ID "efr32mg21a020f768im32"
#endif
3.5. 注意事项
- demo中的app_config.yaml文件包含两种配置方式,请确认执行编译操作时,有且只有一种配置生效!
- image_type字段为数值型,不加双引号;
- manufacture_id字段为数值型,不加双引号;
- 考虑到不同平台的统一性。yaml文件中image_type、manufacture_id、module_name、chip_id四个字段的值都为空,非常建议应用根据实际情况补全配置,如果应用没有补全,则开发框架会根据当前平台使用默认值编译,请注意编译终端日志提示:
Code: Select all
###-----------------------------------------------------------------------------###
### TuyaOS SDK build notice ###
###-----------------------------------------------------------------------------###
>>> Exceptions : Image type
>>> Exit : 0
>>> Brief : Image type not specified
>>> Optional : customized
>>> Default : 0x1602
>>> Yours : None
>>>
>>>
>>>-----------------------------------------------------------------------------###
>>> Refer to the TuyaOS development forum for more details about <app_config.yml>.
>>> https://www.tuyaos.com/viewtopic.php?t=2633
###-----------------------------------------------------------------------------###
###-----------------------------------------------------------------------------###
### TuyaOS SDK build notice ###
###-----------------------------------------------------------------------------###
>>> Exceptions : Manufacturer id
>>> Exit : 0
>>> Brief : manu id not specified
>>> Optional : customized
>>> Default : 0x1002
>>> Yours : None
>>>
>>>
>>>-----------------------------------------------------------------------------###
>>> Refer to the TuyaOS development forum for more details about <app_config.yml>.
>>> https://www.tuyaos.com/viewtopic.php?t=2633
###-----------------------------------------------------------------------------###
>>> use tuya config mode.
###-----------------------------------------------------------------------------###
### TuyaOS SDK build notice ###
###-----------------------------------------------------------------------------###
>>> Exceptions : Module name
>>> Exit : 0
>>> Brief : model name is none
>>> Optional : ZSU,ZS3L,ZS2S etc
>>> Default : not defined
>>> Yours : None
>>>
>>>
>>>-----------------------------------------------------------------------------###
>>> Refer to the TuyaOS development forum for more details about <app_config.yml>.
>>> https://www.tuyaos.com/viewtopic.php?t=2633
###-----------------------------------------------------------------------------###
###-----------------------------------------------------------------------------###
### TuyaOS SDK build notice ###
###-----------------------------------------------------------------------------###
>>> Exceptions : Chip id
>>> Exit : 0
>>> Brief : chip id is none
>>> Optional : efr32mg21a020f1024im32,efr32mg21a020f768im32
>>> Default : not defined,you must specify an correct chip!!!
>>> Yours : None
>>>
>>>
>>>-----------------------------------------------------------------------------###
>>> Refer to the TuyaOS development forum for more details about <app_config.yml>.
>>> https://www.tuyaos.com/viewtopic.php?t=2633
###-----------------------------------------------------------------------------###