Page 1 of 1

【Zigbee】TuyaOS 3.9.0应用配置文件介绍

Posted: 2023年 Dec 19日 19:57
by zeso

涂鸦一直致力于为开发者提供具有强兼容性、强开发友好性及易用性的TuyaOS开发框架。

1. 应用配置文件的作用

  • 定制编译脚本的行为,如链接指定平台的静态库、固件size校验等;
  • 生成app_config.capp_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协议配置ManufacturerNameModelIdentifier两个属性。从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
###-----------------------------------------------------------------------------###