热点配网

更新时间:2023-12-19 08:36:57下载pdf

配网是通过具有配网能力的设备,例如手机,对未配网的设备进行网络连接配置。

功能描述

热点配网的大致流程如下:

  1. 未配网设备先建立热点(AP)。
  2. 具有配网能力的设备连接到该热点,并通过涂鸦的热点配网协议服务将路由器的 SSIDPassword 以及 Token 信息,发送给未配网设备。
  3. 未配网设备拿到这些信息,连接指定路由器,并连接云端进行设备激活绑定。

配网流程

App设备路由器监听设备 UDP 广播UDP 广播连接设备热点根据广播信息建立 TLS 连接或者 UDP 连接下发配网数据解密数据连接路由器上网后续连接云端进行激活绑定App设备路由器

开发指导

关联头文件

  • tuya_iot_wifi_api.h

使用方法

要想启动热点配网,您需要在设备初始化时设置具有热点功能的 配网模式:

配网模式 描述
WF_START_AP_ONLY 仅支持热点模式配网模式。
WF_START_SMART_ONLY 仅支持快连模式配网模式。
WF_START_AP_FIRST 支持热点模式配网或者快连模式配网模式,默认热点模式配网,但是经过重置,可以切换成快连模式配网模式。
WF_START_SMART_FIRST 支持热点模式配网或者快连模式配网模式,默认快连模式配网模式,但是经过重置,可以切换成热点模式配网模式。
WF_START_SMART_AP_CONCURRENT 涂鸦万能配网模式,支持热点模式、快连模式配网配网共存,同时根据产品的形态和客户的需求,自定义支持蓝牙配网、闪电配网和 FFS 配网。

API 说明

设置用户自定义热点信息

设备的默认 AP 是 SmartLife-xxxx,其中 xxxx 是设备的 MAC 地址后四位。如果调用该接口,您可以自定义设备热点。

此接口必须在调用 设备初始化接口 之前调用。

/**
 * @brief tuya_iot_set_user_def_ap_if
 *
 * @param[in] ssid: user defined ssid
 * @param[in] passwd: user defined passwd
 *
 * @return OPERATE_RET
 *
 * @note need call before tuya_iot_wf_xxx_init
 */
OPERATE_RET tuya_iot_set_user_def_ap_if(IN CONST CHAR_T *ssid, IN CONST CHAR_T *passwd);

获取热点信息

查询设备建立的 AP 信息,即 SSIDPassword

/**
 * @brief tuya_iot_get_dev_ap_if
 *
 * @param[in] ssid: the ssid of ap
 * @param[in] passwd: the passwd of ap
 *
 * @return OPERATE_RET
 *
 */
OPERATE_RET tuya_iot_get_dev_ap_if(OUT CHAR_T *ssid, OUT CHAR_T *passwd);

使用示例

int main(int argc, char *argv[])
{
    //设置具体的 AP 热点名称,如无自定义需求,可不用调用。
    TUYA_CALL_ERR_RETURN(tuya_iot_set_user_def_ap_if("test_ap", "test_passwd"));

    TY_IOT_CBS_S wf_cbs = {
        .gw_status_cb = status_changed_cb,
        .gw_ug_cb = (GW_UG_INFORM_CB)gw_ug_inform_cb,
        .gw_reset_cb = vResetCB,
        .dev_obj_dp_cb = dev_obj_dp_cb,
        .dev_raw_dp_cb = dev_raw_dp_cb,
        .dev_dp_query_cb = dev_dp_query_cb,
        .dev_ug_cb = (DEV_UG_INFORM_CB)dev_ug_inform_cb,
    };
    //start_mode 传可以启动 AP 配网的任何一种,如 WF_START_SMART_AP_CONCURRENT
    TUYA_CALL_ERR_RETURN(tuya_iot_wf_mcu_dev_init(GWCM_OLD, WF_START_SMART_AP_CONCURRENT, &wf_cbs, tuya_get_user_firmware_key(), "product_key", tuya_get_user_sw_ver(), "1.1.0"));
}

常见问题

App 下发配网数据后,为什么设备解密失败?

热点配网经过了多个版本的迭代,加密方式做了升级,加密方式不同时配网的网段也不一致,具体有 192.168.175.1 和 192.168.176.1 两种网段,需要保证热点配网的网段由 SDK 设置到开发环境中。

为什么 App 连接设备热点失败?

  1. 开发框架目前默认设置的最大可连接客户端数量为 1 个。可能是该热点已经被其他客户端连接。
  2. 遇到部分安卓系统的版本,当手机连接到设备热点后,热点会因为拥挤而下线的情况,存在兼容性问题。

设备广播包间隔多长?广播地址是什么?

当启动热点配网后,设备会定期的发 UDP 广播。间隔为 1s,是全网段广播(即 255.255.255.255)。

热点配网的任务栈多大?

占用栈大小约为 3.5K。

热点配网可以和其它配网共存吗?

可以的。目前是万能配网模式中,所有配网模式共存。具体有快连配网、热点配网、蓝牙配网、FFS 配网、闪电配网共存。