施工部署

更新时间:2024-04-01 06:43:07下载pdf

网关无网施工是在没有网络的环境下部署智能家居设备,适合前装市场批量交付的场景。本文介绍使用 TuyaOS 网关开发包如何开发支持无网施工的网关产品。

使用场景

您可以通过施工 SaaS 平台配置好施工模板,选择户型施工时使用的设备、场景和自动化,下发施工任务给施工人员。

施工人员使用施工 App 添加设备、验证场景和自动化,完成部署后,待终端用户入住把权限交付转交给用户。

用户只需要激活网关设备,立即能体验预先配置好的智能场景,减少繁琐的添加子设备和配置场景操作,增强用户体验。

工作原理

无网施工的工作原理是:

  1. 施工 App 从施工 SaaS 平台获取房间信息、设备物模型、智能场景配置,网关设备与施工 App 建立局域网安全连接来传输数据。
  2. 施工完成后,施工人员需要在施工 App 上传部署,施工 SaaS 平台会把设备的数据同步到涂鸦 IoT 开发平台。
  3. 网关回到普通模式会处于未激活状态,等待终端用户激活网关设备。
  4. 网关设备激活后发起无网施工恢复请求。
  5. 涂鸦 IoT 开发平台收到请求把无网施工的数据迁移到该网关。
  6. App 上能够看到施工添加的子设备和智能场景,并且能正常使用。

开发指导

通常网关设备需要支持切换 施工模式普通模式,您可以使用命令行参数来控制程序运行在普通模式还是施工模式。建议网关重启默认工作在普通模式,通过按键切换到施工模式。

无网施工需要有一个独立的 PID,并且跟普通模式的 PID 进行关联,您可以咨询涂鸦商务人员。如未作关联,则需要使用默认的施工模式 PID(ZkOA5uJGrtu4R2f8)。

在普通模式基础上加入无网施工功能,开发步骤如下:

  1. 判断是否进入无网施工模式,若进入无网施工模式则调用 tuya_set_engineer_mode 接口。
  2. 通过 tuya_get_engineer_mode 接口判断当前工作模式是否为无网施工模式。
    • 如果工作在无网施工模式,则 tuya_iot_init 接口的参数为无网施工模式的存储路径(固定为 普通模式存储路径 + /engineer/)。
    • 如果工作在普通模式,则 tuya_iot_init 接口的参数为普通模式的存储路径。
  3. 无论工作在无网施工模式还是普通模式,都需要调用 tuya_engineer_sdk_init 接口初始化施工 SDK。值得注意的是,product_key 参数使用普通模式的 PID。该接口有以下两种使用场景:
    • 使用涂鸦网关 Zigbee 模组,要求在该接口之前调用 tuya_engineer_set_tuya_zigbee_enable 接口,使能涂鸦 Zigbee 施工业务逻辑。
    • 不使用涂鸦网关 Zigbee 模组,您需要实现 TY_ENGR_GW_ZIG_CBS_S 相关的回调,作为该接口的参数。
  4. 初始化 SDK:
    • 如果工作在无网施工模式,则使用 tuya_engineer_gw_init 接口初始化施工网关业务,product_key 参数使用无网施工模式的 PID
    • 如果工作在普通模式,则使用 tuya_iot_wr_wf_sdk_init 接口初始化普通网关业务,product_key 参数使用普通模式的 PID
  5. 指定局域网通讯的网络接口,需要适配 tkl_wifi_get_ip 接口,返回用于局域网通信的网络接口 IP 地址。

接口描述

进入施工模式

/**
 * @brief 设置网关工作模式为施工模式接口。
 * @note 调用该接口让网关进入施工模式,该接口要在程序启动最先调用。
 */
VOID tuya_set_engineer_mode(VOID);

判断施工模式

/**
 * @brief 判断网关是否在施工模式接口。
 * @note 调用该接口区分
 *
 * @return TRUE:施工模式;FALSE:普通模式。
 */
BOOL_T tuya_get_engineer_mode(VOID);

施工 SDK 初始化

/**
 * @brief 施工 SDK 初始化接口。
 * @note 无论网关工作在普通模式,还是施工模式,都需要调用该接口。施工模式下处理施工逻辑,普通模式下处理同步施工数据逻辑。
 *
 * @param[in] product_key   普通模式的产品 ID。
 * @param[in] eng_infra_cbs 施工应用回调。
 * @param[in] eng_zig_cbs   施工 Zigbee 回调。
 */
OPERATE_RET tuya_engineer_sdk_init(IN CONST CHAR_T *product_key,
                                   IN TY_ENGR_GW_INFRA_CBS_S *eng_infra_cbs,
                                   IN TY_ENGR_GW_ZIG_CBS_S* eng_zig_cbs);

施工网关初始化

/**
 * @brief 施工网关业务初始化接口。
 * @note 施工模式使用该接口初始化网关业务,普通模式则使用 `tuya_iot_sdk_init` / `tuya_iot_wf_sdk_init` / `tuya_iot_wr_wf_sdk_init` 接口初始化网关业务。
 *
 * @param[in] net_mode    指定网络模式。
 * @param[in] product_key 施工产品 ID。
 * @param[in] sw_ver      固件版本号。
 * @param[in] attr        模组信息数组。
 * @param[in] attr_num    模组信息数组的长度。
 */
OPERATE_RET tuya_engineer_gw_init(IN CONST IOT_GW_NET_TYPE_T net_mode,
                                  IN CONST CHAR_T *product_key,
                                  IN CONST CHAR_T *sw_ver,
                                  IN CONST GW_ATTACH_ATTR_T *attr,
                                  IN CONST UINT_T attr_num);

使用涂鸦 Zigbee

/**
 * @brief 使能 Zigbee 施工服务接口。
 * @note 网关使用涂鸦 Zigbee 模组时,调用该接口使能 Zigbee 施工服务,Zigbee 施工业务逻辑由 SDK 处理。要求在 `tuya_engineer_sdk_init` 接口之前调用。
 */
OPERATE_RET tuya_engineer_set_tuya_zigbee_enable(VOID);

示例代码

详见 apps/tuyaos_demo_engr 示例。