自动切换网络

更新时间:2025-08-01 03:11:08下载pdf

背景介绍

TuyaOS 网关 SDK 支持多种网络访问方式,如以太网、Wi-Fi 功能。TuyaOS 网关 SDK 访问网络时会绑定指定的网口,而不是依赖系统的默认路由。当设备同时支持以太网和 Wi-Fi 时,应用分别通过 TKL_WIRED_STATUS_CHANGE_CBWIFI_EVENT_CB 通知 SDK 以太网和 Wi-Fi 的当前状态,其中,以太网优先级高于 Wi-Fi。

本文为您介绍在实际使用中已发现的典型网络连接问题。如出现这些问题,可能会影响设备的稳定性和终端用户体验。

典型问题分析

设备假离线

当设备有线接口获取到有效 IP 地址,但实际无法连通外网时,应用可能仍会向 SDK 通知以太网处于 UP 状态。此时 SDK 会优先选择以太网口进行网络访问,即使设备的 Wi-Fi 接口实际上能够正常连接互联网。这种错误的网络接口选择会导致 SDK 无法连通涂鸦开发者平台,最终造成设备处于离线状态。

热点配网超时

设备的以太网获取了有效 IP 地址,但是不能访问外网。应用通知给 SDK 以太网状态是 UP,SDK 会绑定以太网网口。这种场景下,如果终端用户选择热点配网,会导致配网超时。

解决方案

SDK 支持网络切换功能,默认是关闭的,需要应用调用 maq_set_connection_switch(TRUE) 来开启。

实现机制

开启网关切换功能后,当 SDK 访问涂鸦开发者平台时,如果当前链路不可达,就自动切换选择下一条链路进行访问,依次循环。

实现步骤

  1. 确认产品形态:设备需同时支持有线和无线网络。
  2. 修改代码:在 user_main.c__gw_active_stat_cb 回调函数中添加 mqc_set_connection_switch(TRUE) 调用,且 __gw_active_stat_cb 的传参 stat 需满足 stat == GW_ACTIVED || stat == GW_NORMAL
  3. 验证功能
    • 有线网络正常时,SDK 优先使用有线连接。
    • 有线网络无外网时,SDK 自动切换到无线网络。

注意事项

  • 此功能仅适用于有线 + 无线的混合产品形态。
  • 请确保无线网络配置正确,避免切换失败。