# TuyaOpen
**Repository Path**: itschina/TuyaOpen
## Basic Information
- **Project Name**: TuyaOpen
- **Description**: Tuya open source AI+IoT development framework for device for T2, T3, T5AI, esp32, esp32c3, ln882h, bk7231n
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 16
- **Created**: 2025-05-06
- **Last Updated**: 2025-05-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[English](https://github.com/tuya/TuyaOpen/blob/master/README.md) | 简体中文
## 简介
TuyaOpen 是一款跨芯片平台、操作系统的 AI+IoT 开发框架。它基于通用南向接口设计,支持 Bluetooth、Wi-Fi、Ethernet 等通信协议,提供了物联网开发的核心功能,包括配网,激活,控制,升级等;它具备强大的安全合规能力,包括设备认证、数据加密、通信加密等,满足全球各个国家和地区的数据合规需求。
基于 TuyaOpen 开发的 AI+IoT 产品,如果使用 tuya_cloud_service 组件的功能,就可以使用涂鸦APP、云服务提供的强大生态能力,并与 Power By Tuya 设备互联互通。
同时 TuyaOpen 将不断拓展,提供更多云平台接入功能,及语音、视频、人脸识别等功能。
## 开始体验
### 安装依赖
- Ubuntu and Debian
```sh
$ sudo apt-get install lcov cmake-curses-gui build-essential ninja-build wget git python3 python3-pip python3-venv libc6-i386 libsystemd-dev
```
- macOS
请运行 `tos check` 检查系统依赖,并根据提示安装依赖。
> 注:v1.1.0 版本之后,我们采用了 ninja 作为构建工具来加快编译速度,如遇到编译错误请安装 ninja。
### 克隆仓库
```sh
$ git clone https://github.com/tuya/TuyaOpen.git
```
tuyeopen 仓库中包含多个子模块,tos 工具会在编译前检查并自动下载子模块,也可以使用 `git submodule update --init` 命令手工下载。
## 设置与编译
### step1. 设置环境变量
```sh
$ cd TuyaOpen
$ export PATH=$PATH:$PWD
```
或将 TuyaOpen 路径添加到系统环境变量中。
TuyaOpen 通过 tos 命令进行编译、调试等操作,tos 命令会根据环境变量中设置的路径查找 TuyaOpen 仓库,并执行对应操作。
tos 命令的详细使用方法,请参考 [tos 命令](./docs/zh/tos_guide.md)。
### step2. 选择待编译项目
- 方式1:编译 example
选择待编译 example,可使用命令`tos set_example`,根据平台完成选择,目录 `examples` 会修改为对应平台的示例。
更多 example 信息点击 [示例工程](#example)
- 方式2:编译 app
选择待编译 app,如 [apps/tuya_cloud/switch_demo](https://github.com/tuya/TuyaOpen/tree/master/apps/tuya_cloud/switch_demo) , 并切换至对应目录。
使用 `tos config_choice` 命令选择编译目标平台或目标板。
```sh
$ cd apps/tuya_cloud/switch_demo
$ tos config_choice
[TuyaOpen/apps/tuya_cloud/switch_demo/config] is empty.
Using boards default config file.
========================
Configs
1. BK7231X.config
2. ESP32-C3.config
3. ESP32.config
4. ESP32-S3.config
5. LN882H.config
6. T2.config
7. T3.config
8. T5AI.config
9. Ubuntu.config
------------------------
Please select:
```
`tos config_choice` 命令读取项目下 `config` 目录中的配置文件,并会生成当前工程的配置文件 `app_default.config`。
> 运行 `tos config_choice` 切换 config 后,tos 命令会自动清除当前工程下已经编译生成的编译中间文件
### step3. 编译
选择当前编译的 examples 或 apps 对应工程,运行如下命令编译:
```sh
$ cd apps/tuya_cloud/switch_demo
$ tos build
```
编译完成后目标文件位于当前编译项目 `.build//bin` 目录下,如 `apps/tuya_cloud/switch_demo/.build/bin` 目录。
编译后的目标文件包括:
- switch_demo_QIO_1.0.0.bin:包括 boot 在内的完整固件,用于烧录。
- switch_demo_UA_1.0.0.bin:未包括 boot 的应用固件,使用该文件需根据不同的 platform/chip 烧录该 bin 至对应的地址,否则可能无法正常运行。
- switch_demo_UG_1.0.0.bin:用于 OTA 升级的 bin 文件,无法直接烧录后运行。
项目名称默认为目录名称,项目版本默认为 `1.0.0`,可通过 `tos menuconfig` 配置中修改。
### step4. menuconfig 配置
如需要修改项目的配置,选择需配置的 examples 或 apps 对应工程,在对应工程目录下运行如下命令进行菜单化配置:
```sh
$ cd apps/tuya_cloud/switch_demo
$ tos menuconfig
```
配置当前工程,配置完成后保存退出,编译工程。
> 运行 `tos menuconfig` 切换芯片或开发板后,tos 命令会自动清除当前工程下已经编译生成的编译中间文件
## 烧录
### GUI 工具烧录
tyutool gui 烧录工具已支持 T2/T3/T5AI/BK7231N/LN882H/ESP32 等多种芯片串口烧录,支持 windows/Linux/macOS 等操作系统,请根据运行操作系统选择对应的 GUI 烧录工具。
- windows:[tyutool_win](https://images.tuyacn.com/smart/embed/package/vscode/data/ide_serial/win_tyutool_gui.zip)
- Linux:[tyutool_linux.tar](https://images.tuyacn.com/smart/embed/package/vscode/data/ide_serial/tyutool_gui.tar.gz)
- macOS_x86:[tyutool_mac_x86](https://images.tuyacn.com/smart/embed/package/vscode/data/ide_serial/darwin_x86_tyutool_gui.tar.gz)
- macOS_arm64:[tyutool_mac_arm64.zip](https://images.tuyacn.com/smart/embed/package/vscode/data/ide_serial/darwin_arm64_tyutool_gui.tar.gz)
## 命令行烧录
可通过 tos flash 命令一键烧录
1. 在 Linux 环境下需要先使用如下命令设置串口权限,否则运行会报错。
```sh
$ sudo usermod -aG dialout $USER
```
设置完成后需重启系统方可生效。
2. 在需要编译完成后的项目中运行 `tos flash` 命令一键烧录,`tos flash` 会根据当前运行的环境自动下载对应的 tyutool 工具,并自动烧录。
```sh
$ cd apps/tuya_cloud/switch_demo
$ tos flash
tyutool params:
[INFO]: tyut_logger init done.
[INFO]: Run Tuya Uart Tool.
[INFO]: Use default baudrate: [921600]
[INFO]: Use default start address: [0x00]
--------------------
1. /dev/ttyS0
2. /dev/ttyACM0
3. /dev/ttyACM1
^^^^^^^^^^^^^^^^^^^^
Select serial port: 3 ## 选择正确的串口
[INFO]: Waiting Reset ...
[INFO]: unprotect flash OK.
[INFO]: sync baudrate 921600 success
Erasing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 4 bytes/s 0:00:04 / 0:00:00
[INFO]: Erase flash success
Writing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 16 bytes/s 0:00:18 / 0:00:00
[INFO]: Write flash success
[INFO]: CRC check success
[INFO]: Reboot done
[INFO]: Flash write success.
```
> 注:烧录过程中需要根据芯片实际情况进入 boot 后才可以进行串口烧录。
> 烧录过程中如果串口没有响应,请检查串口是否正确选择,或串口是否被其他程序占用。
3. tos flash 烧录工具正在不断新增支持新的芯片型号,v1.8.0 之前的版本不支持自动升级工具,后续版本在启动时会检测升级并提示升级。
可通过 `tos flash --version` 查询版本情况,
```sh
$ tyutool params: --version
tyuTool, version 1.8.3
```
v1.8.0 之前版本需要手工运行以下升级命令升级:
```shell
$ tos flash upgrade
```
更多 TuyaOpen 相关文档请参考 [TuyaOpen 开发指南](https://tuyaopen.readthedocs.io/zh-cn/latest)。
## 支持 platform 列表
| 名称 | 支持状态 | 介绍 | 调试日志串口 |
| ---- | ---- | ---- | ---- |
| Ubuntu | 支持 | 可在 ubuntu 等 Linux 主机上直接运行 | |
| T2 | 支持 | 支持模组列表: [T2-U](https://developer.tuya.com/cn/docs/iot/T2-U-module-datasheet?id=Kce1tncb80ldq) | Uart2/115200 |
| T3 | 支持 | 支持模组列表: [T3-U](https://developer.tuya.com/cn/docs/iot/T3-U-Module-Datasheet?id=Kdd4pzscwf0il) [T3-U-IPEX](https://developer.tuya.com/cn/docs/iot/T3-U-IPEX-Module-Datasheet?id=Kdn8r7wgc24pt) [T3-2S](https://developer.tuya.com/cn/docs/iot/T3-2S-Module-Datasheet?id=Ke4h1uh9ect1s) [T3-3S](https://developer.tuya.com/cn/docs/iot/T3-3S-Module-Datasheet?id=Kdhkyow9fuplc) [T3-E2](https://developer.tuya.com/cn/docs/iot/T3-E2-Module-Datasheet?id=Kdirs4kx3uotg) 等 | Uart1/460800 |
| T5AI | 支持 | 支持模组列表: [T5-E1](https://developer.tuya.com/cn/docs/iot/T5-E1-Module-Datasheet?id=Kdar6hf0kzmfi) [T5-E1-IPEX](https://developer.tuya.com/cn/docs/iot/T5-E1-IPEX-Module-Datasheet?id=Kdskxvxe835tq) 等 | Uart1/460800 |
| ESP32/ESP32C3/ESP32S3 | 支持 | | Uart0/115200 |
| LN882H | 支持 | | Uart1/921600 |
| BK7231N | 支持 | 支持模组列表: [CBU](https://developer.tuya.com/cn/docs/iot/cbu-module-datasheet?id=Ka07pykl5dk4u) [CB3S](https://developer.tuya.com/cn/docs/iot/cb3s?id=Kai94mec0s076) [CB3L](https://developer.tuya.com/cn/docs/iot/cb3l-module-datasheet?id=Kai51ngmrh3qm) [CB3SE](https://developer.tuya.com/cn/docs/iot/CB3SE-Module-Datasheet?id=Kanoiluul7nl2) [CB2S](https://developer.tuya.com/cn/docs/iot/cb2s-module-datasheet?id=Kafgfsa2aaypq) [CB2L](https://developer.tuya.com/cn/docs/iot/cb2l-module-datasheet?id=Kai2eku1m3pyl) [CB1S](https://developer.tuya.com/cn/docs/iot/cb1s-module-datasheet?id=Kaij1abmwyjq2) [CBLC5](https://developer.tuya.com/cn/docs/iot/cblc5-module-datasheet?id=Ka07iqyusq1wm) [CBLC9](https://developer.tuya.com/cn/docs/iot/cblc9-module-datasheet?id=Ka42cqnj9r0i5) [CB8P](https://developer.tuya.com/cn/docs/iot/cb8p-module-datasheet?id=Kahvig14r1yk9) 等 | Uart2/115200 |
## 示例工程
不同的芯片都会对应的示例,需在 TuyaOpen 根目录下通过 `tos set_example` 命令设置示例工程,可点击 [tos set_example](https://github.com/tuya/TuyaOpen/blob/master/docs/zh/tos_guide.md#%E8%AE%BE%E7%BD%AE%E7%A4%BA%E4%BE%8B) 了解详情。
```sh
$ tos set_example
Now used: None
========================
Platforms
1. T2
2. T3
3. Ubuntu
4. T5AI
5. ESP32
6. LN882H
7. BK7231X
------------------------
Please select: 4
------------------------
Set [T5AI] example success.
```
> 注:通过 `tos set_example` 命令设置后的 examples 目录为软链接,指向 platform 对应目录下的芯片。
TuyaOpen 提供了丰富的示例工程,方便开发者快速上手,了解 TuyaOpen 的使用。
```sh
$ examples
├── ble
│ ├── ble_central
│ └── ble_peripher
├── get-started
│ └── sample_project
├── peripherals
│ ├── adc
│ ├── gpio
│ ├── i2c
│ ├── pwm
│ ├── spi
│ ├── timer
│ └── watchdog
├── protocols
│ ├── http_client
│ ├── https_client
│ ├── mqtt
│ ├── tcp_client
│ └── tcp_server
├── system
│ ├── os_event
│ ├── os_kv
│ ├── os_mutex
│ ├── os_queue
│ ├── os_semaphore
│ ├── os_sw_timer
│ └── os_thread
└── wifi
├── ap
├── low_power
├── scan
└── sta
```
每个示例工程下对应有 README.md 文件,详细介绍了示例工程的配置、编译、运行等操作。
## AI 应用
tuya.ai 是一个综合性的 AI 服务平台,提供以下核心能力:
- 音频处理服务
- 视频处理服务
- 多模态 AI 服务
详细使用说明请参考 [tuya.ai 文档](apps/tuya.ai/README.md)
## 云连接应用
TuyaOpen 提供了丰富的云连接应用示例,相关应用位于 apps 目录下,可点击 [云连接应用](apps/tuya_cloud/README_zh.md)。
## platform 新增与适配
TuyaOpen 支持新增与适配新的 platform,具体操作请参考 [platform 新增与适配](./docs/zh/new_platform.md)。
## board 新增与适配
TuyaOpen 支持新增与适配新的 board,具体操作请参考 [board 新增与适配](./docs/zh/new_board.md)。
## FAQ
1. TuyaOpen 支持的 platform 通过子仓库动态下载,更新 TuyaOpen 仓库不会主动更新子仓库,如遇到问题无法正常编译,请至 platform 文件夹下对应的目录下使用 `git pull` 命令更新,或删除 platform 文件夹下对应目录后再次下载。
2. TuyaOpen 连提供了丰富的云连接应用示例,如发现无法正常连接或无法正常激活设备,请参考 [云连接应用](apps/tuya_cloud/README_zh.md)。
## License
本项目的分发遵循 Apache License 版本 2.0。有关更多信息,请参见 LICENSE 文件。
## 贡献代码
如果您对 TuyaOpen 感兴趣,并希望参与 TuyaOpen 的开发并成为代码贡献者,请先参阅 [贡献指南](./docs/zh/contribute_guide.md)。
## 免责与责任条款
用户应明确知晓,本项目可能包含由第三方开发的子模块(submodules),这些子模块可能独立于本项目进行更新。鉴于这些子模块的更新频率不受控制,本项目无法确保这些子模块始终为最新版本。因此,用户在使用本项目时,若遇到与子模块相关的问题,建议自行根据需要进行更新或于本项目提交问题(issue)。
若用户决定将本项目用于商业目的,应充分认识到其中可能涉及的功能性和安全性风险。在此情况下,用户应对产品的所有功能性和安全性问题承担全部责任,应进行全面的功能和安全测试,以确保其满足特定的商业需求。本公司不对因用户使用本项目或其子模块而造成的任何直接、间接、特殊、偶然或惩罚性损害承担责任。
## 相关链接
- Arduino 版 TuyaOpen:[https://github.com/tuya/arduino-TuyaOpen](https://github.com/tuya/arduino-TuyaOpen)
- Luanode 版 TuyaOpen:[https://github.com/tuya/luanode-TuyaOpen](https://github.com/tuya/luanode-TuyaOpen)