快速入门

更新时间:2024-09-13 07:10:06下载pdf

本文介绍激光扫地机 Demo 如何编译、如何运行程序以及验证基础功能。

前置条件

在 Visual Studio Code 的 Tuya Wind IDE 上,以 TuyaOS SDK 开发模式,获取基于 X86_64 开发平台的类型开发包。更多信息,参考 获取开发资料

目录结构

software/TuyaOS 目录结构及顶层文件简介如下:

名称 说明
apps 应用代码。
build 编译配置目录,存放编译配置文件,您无需关注。
include 头文件。
libs 库文件。
Makefile Makefile 文件。
output 编译产物输出目录。
scripts 编译框架,您无需关注。
vendor 开发环境,开发环境是执行编译时在线下载到本地的。
build_app.sh 编译脚本。

应用修改

  1. 将您在 涂鸦开发者平台 上创建的激光扫地机产品的 PID、UUID 和 KEY 填入到如下内容中:

    您填入的 UUID 不能与其它设备重复,保证唯一性。

    /*******pid uuid authkey 此处仅供测试使用************/
    CHAR_T s_ty_pid[64]= "PID 值"; //设备 PID,需要使用设备自身的 PID。
    CHAR_T s_ty_uuid[64]="UUID 值";//设置 UUID,按照授权信息填写。注意 UUID 是与设备绑定的,具有唯一性。
    CHAR_T s_ty_authkey[64]="KEY 值";//设置 Authkey,按照授权信息填写。注意 Authkey 是与 UUID 一一对应。
    /*******pid uuid authkey 此处仅供测试使用************/
    
  2. 创建一个可以断电保存的存储路径,用来保存设备配网激活等相关参数,实现方式如下:

    #define TY_APP_STORAGE_PATH    "/tmp/"   //测试使用虚拟存储路径
    #define TY_SDK_ONLINE_LOG_PATH "/tmp/"     //测试使用虚拟存储路径
    /*准备文件系统读写存储路径,真实的设备需要填写设备本地分配的路径*/
    TY_INIT_PARAMS_S init_param = {0};
    init_param.init_db = TRUE;
    strcpy(init_param.sys_env, TARGET_PLATFORM);
    strcpy(init_param.log_seq_path, TY_SDK_ONLINE_LOG_PATH);  //SDK 在线日志保存的路径
    TUYA_CALL_ERR_LOG(tuya_iot_init_params(TY_APP_STORAGE_PATH, &init_param));//SDK DATA_BASE 文件存储路径
    
    

编译方式

方式一:可视化界面

在 Tuya Wind IDE 界面上选择 software/TuyaOS/apps/ 下的 Demo 目录,单击鼠标右键,选择菜单 Build Project 一键编译。

快速入门

输入版本号(格式为 X.X.X,其中 X 是任意数字)后,按回车键,即开始编译。

快速入门

方式二:Shell 脚本形式

software/TuyaOS/ 目录下输入:

./build_app.sh $1 $2 $3 $4

其中,

  • $1:应用工程路径,例如 apps/tuyaos_demo_robot/
  • $2:生成的应用工程名,例如 tuyaos_demo_robot
  • $3:版本号,三段式格式 XX.XX.XX,例如 1.0.0
  • $4:用户指令 (可选),例如 clean

方式三:Makefile 形式

software/TuyaOS/ 目录下命令行输入 make,选择要编译的应用程序。

运行程序

启动命令推荐:

./output/x86_64_tuyaos_demo_robot/firmware/tuyaos_demo_robot  -m 0 -t AYGFnn3je2Fi7I -r ./apps/tuyaos_demo_robot
  • m:对应模式。Demo 运行请选择 AP 配网,对应的值为 0

        /* Tuya SDK definition of Wi-Fi start mode */
        typedef BYTE_T GW_WF_START_MODE;
        #define WF_START_AP_ONLY        0   // only have ap-cfg mode
        #define WF_START_SMART_ONLY     1   // only have smart-cfg mode
        #define WF_START_AP_FIRST       2   // have both ap-cfg and smart-cfg. default is ap-cfg mode
        #define WF_START_SMART_FIRST    3   // have both ap-cfg and smart-cfg. default is smart-cfg mode
        #define WF_START_SMART_AP_CONCURRENT    4   // ap-cfg and smart-cfg is concurrent
    
  • t:传入指定 Token。

    1. 打开涂鸦智能 App,单击右上角 + > 添加设备
    2. 选择 小家电 > 清洁 > 扫地机器人(摄像机),输入 Wi-Fi 账号密码(需与 Demo 运行环境 Wi-Fi 保持一致)。
    3. 单击 下一步 出现配网二维码,使用微信或其他应用扫码解析,获取类似于以下的数据:
    {"s":"N234","p":"12345678","t":"AYAq3v9OLa4FN9"}
    

    其中 t 对应的内容是 Token。

    Token 的有效期为 10 分钟,且配网成功后就会失效。再次配网时,需要重新获取 Token。
    您填入的 Token 只是 Demo 测试用,实际产品开发时,您无需传入 Token 值。

  • r:源文件目录。

    需上报的地图、路径等数据所在目录。Demo 已经实现,您无需修改。

功能验证

本章节主要验证 Demo 的基础功能。在此之前,需要关注如下函数。这些函数注册在 TuyaOS SDK 里,进行状态或者数据的接收。

函数 说明
ty_cmd_handle_dp_cmd_objs Obj DP 交互功能
ty_cmd_handle_dp_raw_objs Raw DP 交互功能
ty_sdk_net_status_change_cb Wi-Fi 状态回调函数
ty_sdk_app_reset_cb App 移除回调函数
ty_user_upgrade_inform_cb OTA 升级调用的回调函数
ty_dev_upgrade_pre_check_cb OTA 升级前检查回调函数
ty_sdk_dev_status_changed_cb 设备激活状态回调函数
  1. 设备配网及云端接入成功之后,手机 App 上显示图标如下:

    快速入门

    您可以根据 ty_sdk_net_status_change_cb 函数回调的状态判断是否接入云端,日志交互的打印如下:

    快速入门
  2. 进入面板之后,开始实时地图及路径传输,首页界面如下:

    快速入门

    实时地图及路径数据上报时,需要在 ty_user_protocol_p2p_event_cb 回调里上报,日志如下:

    快速入门
  3. Obj DP 交互验证,在手机端单击开始清扫的按钮,首页界面如下:

    快速入门

    Obj DP 交互使用 ty_cmd_handle_dp_cmd_objs 回调函数,手机 App 下发的 DP 需要得到设备端正确的回复,手机 App 才会相对应的显示。日志打印如下:

    快速入门
  4. Raw DP 交互验证,在手机端单击指哪扫哪清扫,首页界面如下:

    快速入门

    Raw DP 交互使用 ty_cmd_handle_dp_raw_objs 回调函数,Raw 数据格式使用 涂鸦激光扫地机协议(字节格式)及相关逻辑说明,您可以找您的涂鸦项目经理获取。日志打印如下:

    快速入门
  5. 历史数据上报功能,需要您在程序运行的终端中输入 oss_map 指令,子命令选择 6 清扫记录上报,界面显示如下:

    快速入门

    其它相关的历史数据上报功能,参考 Demo 的注释进行验证。清扫记录日志打印如下:

    快速入门 快速入门
  6. 设备 OTA 升级,参考 固件管理,填写固件信息。之后,App 会提示有可升级固件及更新如下:

    快速入门快速入门

    OTA 升级使用 ty_user_upgrade_inform_cb 回调来接收数据,日志打印如下:

    快速入门
  7. 设备移除功能,您可以长按 App 上的扫地机图标,出现界面如下:

    快速入门

    移除设备调用的是 ty_sdk_app_reset_cb 接口,设备移除成功后,日志打印如下:

    快速入门
  8. 参考 Demo 上的注释,验证其它功能。