tuyaopen-embedded-core 是将 https://github.com/tuya/tuyaopen 连接 tuya 云相关核心组件重新组织,可快速嵌入至各种嵌入式平台使用。
tuyaopen-embedded-core 可通过 WiFi、有线以太网、CAT-1、4G 等多种方式接入涂鸦云,实现设备远程控制、OTA 等功能
下载源码并编译
使用 https://github.com/flyingcys/tuyaopen-embedded-core 仓库代码下载到本地。
$ git clone https://github.com/flyingcys/tuyaopen-embedded-core.git
$ cd tuyaopen-embedded-core
$ git submodule update --init --recursive
创建产品并获取PID
参考文档 https://developer.tuya.com/cn/docs/iot-device-dev/application-creation?id=Kbxw7ket3aujc 在 https://iot.tuya.com 下创建产品,并获取到创建产品的 PID 。
该 PID 对应 TUYA_PRODUCT_ID
,采用环境变量形式加入编译。
$ export TUYA_PRODUCT_ID=qhivvyqawogv04e4
PID 为 qhivvyqawogv04e4 该设备为智能插座,开发者可自由创建其他产品。
获取 UUID/Authkey
请根据 https://github.com/tuya/tuyaopen/blob/master/apps/tuya_cloud/README_zh.md 介绍方式获取 TUYA_OPENSDK_UUID
与 TUYA_OPENSDK_AUTHKEY
。
通过环境变量形式加入编译:
$ export TUYA_OPENSDK_UUID=uuidxxxxxxxxxxxxxxxx
$ export TUYA_OPENSDK_AUTHKEY=keyxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
请使用正确的 PID/UUID/Authkey,否则无法正常连接涂鸦云。
编译
- 安装依赖
$ sudo apt-get install -y cmake ninja-build
- 编译
目前 tuyaopen-embedded-core
内置了部分硬件平台交叉编译工具,其他硬件平台可自行修改对应的 toolchain.cmake
文件。
- 确定 toolchain
在 milkv-duo256m 终端上运行以下命令确认 toolchain
$ cat /proc/version
Linux version 5.10.4-tag- (root@06883d61fb65) (riscv64-unknown-linux-musl-gcc (Xuantie-900 linux-5.10.4 musl gcc Toolchain V2.6.1 B-20220906) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 PREEMPT Thu Aug 1 13:53:00 CST 2024
使用的是 riscv64-unknown-linux-musl-gcc
- 编译
$ cd demos/switch_demo
$ cmake -DCMAKE_TOOLCHAIN_FILE="../../boards/sg200x/toolchain_sg200x_rv64_musl.cmake" -S . -B build -G "Ninja"
$ ninja -C build
编译完成后的文件位于 build/switch_demo
目录下。
上传与运行
通过 scp 将编译后的文件上传到 milkv-duo256m 开发上。
$ scp build/switch_demo root@192.168.188.40:/root/
运行
在 milkv-duo256m 终端上执行:
$ chmod +x switch_demo
$ ./switch_demo
此时运行可能会出现错误:
$ ./switch_demo
-sh: ./switch_demo: not found
该错误是因为缺少动态链接库,需要拷贝到 /lib
目录下,可通过以下方式解决。
- 使用
file
命令查看switch_demo
文件,查看对应的动态链接库。
$ file switch_demo
switch_demo: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-riscv64xthead.so.1, with debug_info, not stripped
- 拷贝动态链接库到
/lib
目录下
该文件对应的动态链接库位于 riscv64-linux-musl-x86_64/sysroot/usr/lib64xthead/lp64d
$ scp riscv64-linux-musl-x86_64/sysroot/usr/lib64xthead/lp64d/libc.so root@192.168.188.40:/lib
- 重新运行
并在 milkv-duo256 上执行:
$ ln -s /lib/libc.so /lib/ld-musl-riscv64xthead.so.1
$ ./switch_demo
当前示例采用有线网络连接,使用二维码扫描方式连接涂鸦云,第一次连接时会弹出二维码。
使用涂鸦 APP 点击右上角 +
后,选择 扫一扫
,扫描二维码后,设备通过自动激活设备,并与当前用户绑定。
运行成功后,通过涂鸦 APP 控制设备。
接下来可以根据 demo 的功能进行扩展,实现各种自己的功能。
当前示例在milkv-duo 系列板子上通过有线连接,同样 tuyaopen-embedded-core 适用于所有可以直接连接互联网的设备。