Page 1 of 1

tuya open-sdk 1.0.0 发布

Posted: 2024年 Sep 6日 14:18
by chenyisong

我们很高兴地宣布本次更新,带来了多项改进和新功能,旨在提升开发体验和效率。以下是具体更新内容:

  1. 代码标准化:实现了代码库的格式统一,引入了 clang-formatpre-commit 工具进行自动化代码格式调整,确保所有提交的代码都遵循一致的编码规范。

  2. 构建框架升级:对 open-sdk 构建框架进行了全面更新,引入了 tos 命令集以支持更广泛的编译操作,为开发者提供了更多的灵活性。

  3. 模块化开发支持:引入了 open-sdk 与应用程序的分离架构,使开发者能够轻松地创建和管理自定义应用程序,简化了开发流程。

  4. 目录结构调整:重新组织了项目结构,新增了 examplesapps 目录。其中:

    • examples 目录包含了针对不同外设、操作系统、Wi-Fi、BLE 以及网络使用的示例代码。
    • apps 目录则包含了云接入应用程序示例,当前支持集成至涂鸦云平台。
  5. 硬件兼容性扩展:新增支持 T3 系列模组,进一步扩大了平台兼容范围,目前支持的操作环境包括:ubuntu-pcT2T3

  6. 授权机制增强:提供了两种涂鸦云 open-sdk 授权方式,一是通过模组自动读取授权码,二是允许手动修改代码实现授权。

  7. Arduino 集成:增加了对 Arduino 平台的支持,使得基于 Arduino 的开发变得更加便捷,可直接在 Arduino-IDE 中下载,欢迎在 https://github.com/tuya/arduino-tuyaopen 仓库中提交 PR 。

我们期待这些改动能够给开发者带来更佳的使用体验,并持续欢迎社区反馈与贡献。

tuya open-sdk 包括:https://github.com/tuya/tuya-open-sdk-for-devicehttps://github.com/tuya/arduino-tuyaopen 等多个系列,目前已正式发布 1.0.0 版本,1.1.0 版本正在紧张开发中。

下面简单介绍以下部分新能功能使用说明

1、tos 构建命令

tos 命令是 tuya-open-sdk-for-device 构建工具,支持创建、编译、配置等多种功能。

tos 命令位于 tuya-open-sdk-for-device 根目录下,使用 shell 脚本实现,使用前先将 tuya-open-sdk-for-device 路径添加到系统环境变量中。

设置环境变量

Code: Select all

$ cd tuya-open-sdk-for-device
$ export PATH=$PATH:$PWD

或将 tuya-open-sdk-for-device 路径添加到系统环境变量中。

tos 命令列表

可通过 tos help 查看命令列表。

Code: Select all

$ tos help

Usage: tos COMMAND [ARGS]...

Commands:
    version    - Show TOS verson
    check      - Check command and version
    new        - New project
    build      - Build specific project or all projects
                 [name] (default build all project by project_build.ini)
    clean      - Clean specific project or all projects
                 [name] (default clean all project by project_build.ini)
    menuconfig - Configuration project features
    build_all  - Build all projects in the directory
                 [*path]
    help       - Help information

使用示例

  1. 查看版本

    Code: Select all

    $ tos version
    1.0.0
  2. 检测当前环境

    Code: Select all

    $ tos check
    Check command and version ...
    Check [python3](3.10.12) > [3.6.0]: OK.
    Check [git](2.34.1) > [2.0.0]: OK.
    Check [cmake](3.22.1) > [3.16.0]: OK.
    Check [ccmake](3.22.1) > [3.16.0]: OK.
    Check [lcov](1.14) > [1.14]: OK.

tos check 命令会检测当前环境是否满足构建要求,如果满足则输出 OK,不符合会提示所需最低版本如 Please install [lcov], and version > [1.14],请根据检测结果,安装相关依赖及对应版本。

  1. 编译项目

进入项目目录,执行以下命令:

Code: Select all

$ cd hello_world
$ tos build
  1. 配置项目
    进入项目目录,执行以下命令:

    Code: Select all

    $ cd hello_world
    $ tos menuconfig
  2. 清理项目
    进入项目目录,执行以下命令:

    Code: Select all

    $ cd hello_world
    $ tos clean

多平台配置

tos 工具通过项目工程目录下的 project_build.ini 文件配置多平台编译,配置文件格式如下:

Code: Select all

[project:switch_demo_t2]
platform = t2

[project:switch_demo_t3]
platform = t3

默认 project 只有 1 个,如需编译多个 project,需在 project_build.ini 文件中添加多个 project 配置。

当配置文件中存在多个 project 时,tos build 命令会依次编译多个 project。

编译指定目录下所有项目

Code: Select all

$ tos build_all .

tos 将根据项目工程下的 project_build.ini 文件,依次编译指定目录下所有工程配置文件下的所有项目。

2、创建自定义应用

tuya-open-sdk-for-device 已支持 sdk 和 应用分离模式,sdk 也可采用 submodule 形式集成,方便开发者创建自己的应用。

  1. 将 tuya-open-sdk-for-device 路径添加到系统环境变量中。

  2. 使用 tos 命令创建新的应用

    Code: Select all

    $ tos new
  3. 根据提示输入项目名称,如: hello_world

  4. 选择项目对应的 platform:

    Code: Select all

    Choice platform ...
    ========================
    Platforms
      1. t2
      2. t3
      3. ubuntu
    ------------------------
    Please select: 

    选择完成后,tos 会自动下载相关依赖文件,并生成项目目录及模板文件。

    Code: Select all

    ├── CMakeLists.txt
    ├── project_build.ini
    └── src
        └── hello_world.c

    其中:

  5. CMakeLists.txt:项目配置文件,用于配置项目编译选项。

  6. project_build.ini:项目配置文件,用于配置项目编译选项。
    其中:

    • project 名为工程名_platform 名
    • platform 为工程对应的平台。
  7. src:源码目录,用于存放项目源码文件。

  8. src/hello_world.c:项目源码文件,用于存放项目源码。

3、获取模组或授权码

tuya-open-sdk-for-device 需要使用专用的 open-sdk 授权码,非 open-sdk 授权码无法正常连接涂鸦云。

可通过以下方式获取 open-sdk 专用授权码:

  • 方式1:购买已烧录 open-sdk 授权码模块。该授权码已经在出厂时烧录在对应模组中,且不会丢失。tuya-open-sdk-for-device 在启动时通过 tuya_iot_license_read() 接口读取授权码。请确认当前设备是否为烧录了 tuya-open-sdk-for-device 授权码。

    Code: Select all

    	tuya_iot_license_t license;
    
    	if (OPRT_OK != tuya_iot_license_read(&license)) {
    		license.uuid = TUYA_DEVICE_UUID;
    		license.authkey = TUYA_DEVICE_AUTHKEY;
    		PR_WARN("Replace the TUYA_DEVICE_UUID and TUYA_DEVICE_AUTHKEY contents, otherwise the demo cannot work");
        }

目前已支持 T2-U、T3-U 模组。

  • 方式2:如当前模组未烧录 tuya-open-sdk-for-device 授权码,可通过 https://platform.tuya.com/purchase/index?type=6 页面购买 Open SDK 授权码,并在以下代码中将 TUYA_DEVICE_UUIDTUYA_DEVICE_AUTHKEY 替换为购买成功后获取到的 uuid 和 authkey。
authorization_code.png

3、FAQ

1. 未修改 apps/tuya_cloud/switch_demo/src/tuya_config.h 文件中默认的UUID 和 authkey。

Code: Select all

#define TUYA_DEVICE_UUID      "uuidxxxxxxxxxxxxxxxx"                    // Please change the correct uuid
#define TUYA_DEVICE_AUTHKEY   "keyxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"        // Please change the correct authkey
  • ubuntu 上出错提示如下:

    Code: Select all

    [01-01 00:00:00 ty E][tal_opt_flash.c:153] ret:-2
    [01-01 00:00:00 ty W][switch_demo.c:220] Replace the TUYA_DEVICE_UUID and TUYA_DEVICE_AUTHKEY contents, otherwise the demo cannot work
    [01-01 00:00:00 ty D][switch_demo.c:222] uuid uuidxxxxxxxxxxxxxxxx, authkey keyxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    [01-04 23:22:17 ty E][mqtt_client_wrapper.c:215] mqtt connect err: Connection not authorized(11)
    [01-04 23:22:17 ty E][mqtt_service.c:465] MQTT connect fail:3
    [01-04 23:22:17 ty E][mqtt_bind.c:191] tuya mqtt connect fail:-34, retry..
  • T2/T3 等真实硬件上运行出错提示如下:

    Code: Select all

    [01-01 00:00:00 ty E][tal_opt_flash.c:153] ret:-2
    [01-01 00:00:00 ty W][switch_demo.c:220] Replace the TUYA_DEVICE_UUID and TUYA_DEVICE_AUTHKEY contents, otherwise the demo cannot work
    [01-01 00:00:00 ty D][switch_demo.c:222] uuid uuidxxxxxxxxxxxxxxxx, authkey keyxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    并无法正常配网。

2. 采用 TuyaOS 授权码,激活失败,出错提示如下:

Code: Select all

[01-01 00:01:03 ty D][atop_base.c:216] result:
{"t":1725593560,"success":false,"errorCode":"ACTIVE_OPEN_SDK_NOT_MATCHED","errorMsg":"ACTIVE_OPEN_SDK_NOT_MATCHED"}
[01-01 00:01:03 ty E][atop_base.c:268] errorMsg:ACTIVE_OPEN_SDK_NOT_MATCHED

请使用 open-sdk 专用授权码。