我们很高兴地宣布本次更新,带来了多项改进和新功能,旨在提升开发体验和效率。以下是具体更新内容:
代码标准化:实现了代码库的格式统一,引入了
clang-format
和pre-commit
工具进行自动化代码格式调整,确保所有提交的代码都遵循一致的编码规范。构建框架升级:对
open-sdk
构建框架进行了全面更新,引入了tos
命令集以支持更广泛的编译操作,为开发者提供了更多的灵活性。模块化开发支持:引入了
open-sdk
与应用程序的分离架构,使开发者能够轻松地创建和管理自定义应用程序,简化了开发流程。目录结构调整:重新组织了项目结构,新增了
examples
和apps
目录。其中:examples
目录包含了针对不同外设、操作系统、Wi-Fi、BLE 以及网络使用的示例代码。apps
目录则包含了云接入应用程序示例,当前支持集成至涂鸦云平台。
硬件兼容性扩展:新增支持
T3
系列模组,进一步扩大了平台兼容范围,目前支持的操作环境包括:ubuntu-pc
、T2
、T3
。授权机制增强:提供了两种涂鸦云
open-sdk
授权方式,一是通过模组自动读取授权码,二是允许手动修改代码实现授权。Arduino 集成:增加了对 Arduino 平台的支持,使得基于 Arduino 的开发变得更加便捷,可直接在 Arduino-IDE 中下载,欢迎在 https://github.com/tuya/arduino-tuyaopen 仓库中提交 PR 。
我们期待这些改动能够给开发者带来更佳的使用体验,并持续欢迎社区反馈与贡献。
tuya open-sdk 包括:https://github.com/tuya/tuya-open-sdk-for-device 和 https://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
使用示例
查看版本
Code: Select all
$ tos version 1.0.0
检测当前环境
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]
,请根据检测结果,安装相关依赖及对应版本。
- 编译项目
进入项目目录,执行以下命令:
Code: Select all
$ cd hello_world
$ tos build
配置项目
进入项目目录,执行以下命令:Code: Select all
$ cd hello_world $ tos menuconfig
清理项目
进入项目目录,执行以下命令: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 形式集成,方便开发者创建自己的应用。
将 tuya-open-sdk-for-device 路径添加到系统环境变量中。
使用 tos 命令创建新的应用
Code: Select all
$ tos new
根据提示输入项目名称,如:
hello_world
。选择项目对应的 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
其中:
CMakeLists.txt
:项目配置文件,用于配置项目编译选项。project_build.ini
:项目配置文件,用于配置项目编译选项。
其中:- project 名为工程名_platform 名
- platform 为工程对应的平台。
src
:源码目录,用于存放项目源码文件。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_UUID
和TUYA_DEVICE_AUTHKEY
替换为购买成功后获取到的 uuid 和 authkey。
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 专用授权码。