快速开始

更新时间:2025-05-28 06:47:38下载pdf

本文介绍开发包中的重要文件,便于您更好地理解代码的组织结构。

目录结构

开发包整体目录结构如下:

├── hardware                  # 硬件手册,存放涂鸦自研硬件资料
├── pc
│    └── tools                # 工具类目录,存放各种开发相关工具
├── software
│    ├── packages             # SDK 压缩包
│    ├── SDKInformation.json  # SDK 信息文件
│    └── TuyaOS               # SDK 开发包目录
│        ├── apps             # 应用示例代码目录,您可以根据需求修改
│        ├── build
│        ├── build_app.sh     # 编译脚本
│        ├── CHANGELOG.md
│        ├── include          # SDK 头文件
│        ├── libs             # SDK 库文件,您可以按需链接
│        ├── LICENSE          # Tuya MIT License
│        ├── Makefile
│        ├── output           # 产物输出目录
│        ├── README.md
│        ├── scripts
│        └── vendor           # 工具链,编译时会自动把工具链下载到该目录下
└── tuya.json

TuyaOS > apps > tuyaos_demo_gw_ble_longrange 目录结构:

├── include                            # 源码头文件
├── local.mk
├── output                             # Demo 输出文件
├── README.md                          # Readme 文件
├── src                                # 源码文件
└── tuyaos_adapter

配置

RTOS 网关需要在初始化时生成一份 JSON 配置,如下所示:

STATIC OPERATE_RET __gen_config(ty_cJSON **cfg)
{
    ty_cJSON *root = NULL, *bt = NULL, *tuya = NULL;

    if (cfg == NULL) {
        PR_ERR("param is null");
        return OPRT_INVALID_PARM;
    }
    
    bt = ty_cJSON_CreateObject();
    ty_cJSON_AddNumberToObject(bt, "enable_hb", 1);
    ty_cJSON_AddNumberToObject(bt, "scan_timeout", 5);
    ty_cJSON_AddNumberToObject(bt, "subdev_type", 0xF);

    tuya = ty_cJSON_CreateObject();
    ty_cJSON_AddItemToObject(tuya, "bt", bt);

    root = ty_cJSON_CreateObject();
    ty_cJSON_AddStringToObject(root, "pid", PRODUCT_KEY);
    ty_cJSON_AddStringToObject(root, "uuid", UUID);
    ty_cJSON_AddStringToObject(root, "authkey", AUTHKEY);
    ty_cJSON_AddItemToObject(root, "tuya", tuya);

    *cfg = root;

    return OPRT_OK;
}

配置字段详细解析如下。基本格式为:

{
    "pid": <xxx>,
    "uuid": <...>,
    "authkey_key": <...>,
    "ap_ssid": <... optional>,
    "ap_password": <... optional>,
    "log_level": <level>,
    "storage_path": <...>,
    "start_mode": <xxxx>,
    "tuya": {
        "bt": {
                "dev_name": <xxx, string>,
                "enable_hb": <xxx, number>,
                "scan_timeout": <xxx, number>,
                "subdev_type": <xxx, number>,
        },
    },
    "user": {
        [ { "tp": <DEV_ATTACH_MOD_X, number>, "sw_ver": <version, string> }, ... ]
    },
}

公共配置

字段 必须 说明
PID SDK 运行在非 OEM 模式,PID 字段指定此设备 PID
uuid 唯一识别码,优先从 Flash 读取,不存在时使用此处
authkey_key 授权识别码,优先从 Flash 读取,不存在时使用此处
ap_ssid 热点模式配网 SSID,未指定则使用默认 SmartLife-<WLAN MAC 后四位>
ap_password 热点模式配网密码,默认为空
log_level 日志等级,默认为 Debug 等级 4
start_mode Wi-Fi 配网模式,支持以下类型:
  • 0WF_START_AP_ONLY 仅支持热点模式配网
  • 1WF_START_SMART_ONLY 仅支持快连模式配网
  • 2WF_START_AP_FIRST 支持 热点模式 + 快连模式 配网,热点模式优先
  • 3WF_START_SMART_FIRST 支持 热点模式 + 快连模式 配网,快连模式优先
  • 4WF_START_SMART_AP_CONCURRENT 热点模式 和 快连模式 共存

蓝牙配置

字段 说明
dev_name 蓝牙设备名
enable_hb 使能心跳查询
scan_timeout Bluetooth Low Energy 扫描超时时间,单位为秒
subdev_type TAL_BLE_ROLE_E

编译

编译 BSP 需要一些系统工具。例如,在 Ubuntu 平台执行以下命令:

sudo apt-get install whois patchelf meson bison flex libssl-dev

按照如下步骤操作,在 Visual Studio Code 上编译 CR3L BLE Long Range 固件:

  1. 展开开发包的 TuyaOS > apps > demo 目录,并单击右键,在菜单中选择 Build Project,然后输入版本号按下回车键,开始编译。

    快速开始

  2. 观察 Visual Studio Code 下方的 终端,会看到编译的输出打印。直到看到如下图所示的打印时,代表编译成功,生成的固件位于 output 目录下。

    快速开始

固件烧录

固件详情和烧录方法,请参考 固件烧录 章节。

运行

前置工作完成后,接下来可以运行示例程序查看效果。

固件烧录完成之后,断电重启设备。

CR3L 支持蓝牙配网、热点模式配网,可以用 涂鸦 App 来激活网关。App 的详细使用教程,请参考 使用指南

上传固件

详细步骤,请参考 固件升级