通用联网模块 SDK

版本记录

版本 编写/修订说明 修订人 修订日期
1.0.0 创建 赵春生 2019/11/20
1.0.1 根据内部讨论优化 赵春生 2019/11/27
1.0.2 优化部分措辞说明 赵春生 2019/11/29

1 概述

联网模块SDK:借助设备的联网能力,直接与涂鸦云、涂鸦app建立通信链路并进行涂鸦标准数据交互的一个软件中间件;比如无线网络、有线网络、gprs、3g/4g等。

功能描述

  • 提供符合涂鸦标准数据规范的上下行通道
  • 提供数据过滤服务:数据校验、规则上报、上报频率控制等
  • 提供涂鸦标准化服务,例如本地定时、本地联动等功能
  • 通信传输过程中的数据安全服务

2 产品形态

2.1 联网模组+MCU类产品

利用联网模块+外部mcu做成的单品,功能相对复杂,模块资源不足以完成产品整体功能的开发、需要借助外部mcu实现。此时联网模块主要作为外部mcu与涂鸦云、涂鸦app之间的桥梁

联网模块同时提供模块自身以及客户mcu的固件升级能力。

2.2 SOC类产品

仅利用联网模块做成的单品,功能相对简单,所有的产品功能均在模块内实现。例如:智能插座、智能led灯等

2.3 网关类产品

利用联网模块+不同的协议控制器将产品做成实体网关产品,网关向下接入各类不同通信协议的产品,比如:zigbee、rf类、ble、有线485等。比如:智能家居中常见的控制中心、智慧主机等。

网关提供联网模块、协议控制器、终端设备的固件升级能力。

2.4 网关+设备类产品

利用联网模块+不同的协议控制器将产品做成带设备功能的网关产品,网关向下接入各类不同通信协议的产品,比如:zigbee、rf类、ble、有线485等,同时自身又是一个产品。自身的产品功能由联网模块实现。

网关提供联网模块、协议控制器、终端设备的固件升级能力

2.5 设备配网方式

设备完整的配网过程:设备要先连通外网,然后sdk去涂鸦云激活,完成整个设备的配网过程。

对于设备连通外网的过程,不同形态的设备方式如下:

  1. 没有人机交互界面的wifi设备,使用前需要app通过smartconfig、ap等技术进行配网,当设备接收连网信息,连上路由器之后才可以接通外网。
  2. 有人机交互界面的wifi设备、有线网络产品、gprs/4G等通过运营商方式已经具备联通外网能力的设备,无需app参与配置。

3 涂鸦云联网模块sdk适用范围

3.1 必备条件

  • 支持linux 或 android
  • 支持tcp/ip协议栈
  • 标准linux系统,支持文件系统

3.2 说明

满足"3.1",涂鸦云联网模块sdk可适用于不同芯片、不同os平台的应用场景。客户可根据产品类别、产品形态按需调用sdk提供的接口实现产品功能。

3.2 资源占用

  • Flash,sdk代码占用2MB左右
  • RAM,sdk运行后内存占用5MB,用户要根据开发产品的功能复杂度增加内存

4 编译说明

4.1 linux平台

涂鸦根据客户toolchain编译成的相关的库,附带开发手册以及相关demo等提供给客户。

4.2 android 平台

涂鸦根据客户提供的 API版本号,使用NDK产生工具链,并编译成的相关的库,附带开发手册以及相关demo等提供给客户。

5 SDK初始化

5.1 设备认证

  • 设备认证:
    • 设备的身份认证采用一机一密的方式,在设备上烧写设备的唯一的UUID、AUTHKEY,这种方式要求对设备的产线工具进行一定的修改,需要对每个设备烧写不同的UUID和AUTHKEY;
    • UUID和AUTHKEY成对出现,每一台设备都必须有自己uuid & authkey,且唯一,请向涂鸦项目经理申请几组用于调试;
    • 设备认证消息通过接口tuya_iot_set_gw_prod_info设置

在demo 中 PID,uuid & authkey仅用作测试使用,不能用于实际产品,会导致后续产品不可用。PID需要用户自行从涂鸦开发者平台申请。每一台设备都必须有自己uuid &authkey,且唯一。

5.2 网关类产品

5.3 单品

5.4 初始化接口说明

5.4.1 tuya_iot_init

函数原型

OPERATE_RET tuya_iot_init(IN CONST CHAR_T *fs_storge_path)

功能说明

用于tuya iot 系统的初始化,必须最先调用

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
fs_storge_path 为sdk 分配可读写的文件分区 CHAR_T 路径长度不能大于110个字节。

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码

5.4.2 tuya_iot_get_sdk_info

函数原型

CHAR_T *tuya_iot_get_sdk_info(VOID);

功能说明

获取tuya iot sdk版本信息。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
VOID

返回值

返回值 说明
SDK 信息字符串 SDK 信息包含 SDK的编译时间,平台,以及版本号,使能的功能属性等。

5.4.3 tuya_iot_sys_mag_hb_init

函数原型

OPERATE_RET tuya_iot_sys_mag_hb_init(IN CONST DEV_HEARTBEAT_SEND_CB hb_send_cb);

功能说明

启动子设备心跳管理能力。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
hb_send_cb 网关每隔3秒检查所有的子设备。如果子设备在心跳包超时内,子设备没有发送心跳给网关,则网关会设置子设备为离线,通过hb_send_cb 通知用户至少三次。 hb_send_cb 回调函数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

5.4.4 wifi配置类设备接口,详见"tuya_iot_wifi_api.h"


tuya_iot_set_wf_gw_prod_info

函数原型

OPERATE_RET tuya_iot_set_wf_gw_prod_info(IN CONST WF_GW_PROD_INFO_S *wf_prod_info);

功能说明

设置配置类wifi设备的授权信息,授权信息需通过涂鸦获取,否则设备无法正常使用。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
wf_prod_info 该结构体包含设备信息:1)uuid 以及 authkey 2) wifi 的 ssid 以及密码。 WF_GW_PROD_INFO_S * 开发者需要把该信息传递给 sdk。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wf_mcu_dev_init

函数原型

OPERATE_RET tuya_iot_wf_mcu_dev_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *p_firmware_key, IN CONST CHAR_T *product_key,IN CONST CHAR_T *wf_sw_ver,IN CONST CHAR_T *mcu_sw_ver);

功能说明

联网模块+mcu 设备初始化接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cfg

wifi设备的工作方式。工作方式:

1)非低功耗模式。

2)低功耗模式。

3)特别的低功耗模式。

GW_WF_CFG_MTHD_SEL
start_mode

Wifi 配网模式:

1)仅工作在ap 配置模式。

2)仅smart config 模式式。

3)ap 以及smart config 模式,默认ap 模式。

4)ap 以及 smart config 模式。默认 smart config模式。

根据实际需要选择模式。

GW_WF_START_MODE
cbs Wifi sdk 用户回调函数 TY_IOT_CBS_S *
p_firmware_key 固件key。固件上传至涂鸦平台,都会有固件key。 字符串
product_key 涂鸦平台创建产品时获取 字符串
wf_sw_ver Wifi 软件版本号 字符串
mcu_sw_ver Mcu 固件版本号 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wf_soc_dev_init

函数原型

OPERATE_RET tuya_iot_wf_soc_dev_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *product_key,IN CONST CHAR_T *wf_sw_ver);

功能说明

wifi soc 设备初始化接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cfg

wifi设备的工作方式。工作方式:

1)非低功耗模式。

2)低功耗模式。

3)特殊低功耗模式。

GW_WF_CFG_MTHD_SEL
start_mode

Wifi 配网模式:

1)仅工作在ap 配置模式。

2)仅smart config 模式式。

3)ap 以及smart config 模式,默认ap 模式。

4)ap 以及 smart config 模式。默认 smart config模式。

根据实际需要选择模式。

GW_WF_START_MODE
cbs Wifi sdk 用户回调函数 TY_IOT_CBS_S *
product_key 涂鸦平台创建产品时获取 字符串
wf_sw_ver 软件版本号 字符串 xx.xx.xx

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wf_gw_init

函数原型

OPERATE_RET tuya_iot_wf_gw_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, IN CONST TY_IOT_CBS_S *cbs, IN CONST TY_IOT_GW_CBS_S *gw_cbs, IN CONST CHAR_T *product_key, IN CONST CHAR_T *wf_sw_ver, IN CONST GW_ATTACH_ATTR_T *attr, IN CONST UINT_T attr_num);

功能说明

wifi 网关初始化接口

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cfg

wifi设备的工作方式。工作方式:

1)非低功耗模式。

2)低功耗模式。

3)特殊低功耗模式。

GW_WF_CFG_MTHD_SEL
start_mode

Wifi 配网模式:

1)仅工作在ap 配置模式。

2)仅smart config 模式式。

3)ap 以及smart config 模式,默认ap 模式。

4)ap 以及 smart config 模式。默认 smart config模式。

GW_WF_START_MODE
cbs 涂鸦wifi sdk 用户回调 TY_IOT_CBS_S *
gw_cbs 涂鸦网关用户回调 TY_IOT_GW_CBS_S *
product_key 涂鸦平台创建产时获取 字符串
wf_sw_ver 软件版本号 字符串
attr 网关属性数组 GW_ATTACH_ATTR_T *
attr_num 网关属性长度 UINT_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wf_gw_dev_init

函数原型

OPERATE_RET tuya_iot_wf_gw_dev_init(IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode, IN CONST TY_IOT_CBS_S *cbs, IN CONST TY_IOT_GW_CBS_S *gw_cbs, IN CONST CHAR_T *product_key, IN CONST CHAR_T *wf_sw_ver, IN CONST GW_ATTACH_ATTR_T *attr, IN CONST UINT_T attr_num);

功能说明

wifi 网关加设备初始化接口,相比与tuya_iot_wf_gw_init,该函数使得网关具有设备的属性,可以设置功能点等。

参数说明

参考 tuya_iot_wf_gw_init 接口说明

返回值

参考 tuya_iot_wf_gw_init 接口说明

tuya_iot_reg_get_wf_nw_stat_cb

函数原型

OPERATE_RET tuya_iot_reg_get_wf_nw_stat_cb(IN CONST GET_NW_STAT_CB nw_stat_cb);

功能说明

获取wifi状态接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
nw_stat_cb 涂鸦sdk 网络检测回调,回调函数的参数为网络状态。 nw_stat_cb 详见demo

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

5.4.5 非wifi配置类设备接口,详见"tuya_iot_base_api.h"

tuya_iot_set_gw_prod_info

函数原型

OPERATE_RET tuya_iot_set_gw_prod_info(IN CONST GW_PROD_INFO_S *prod_info);

功能说明

设置非wifi配置类联网模块的授权信息,授权信息需通过涂鸦获取,否则设备无法正常使用。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
prod_info 用户需要传递设备的uuid以及 authkey 到该结构体中。 CONST GW_PROD_INFO_S

UUID 的长度不应大于16字节,authkey 长度不应大于32字节。

该结构定义详见tuya_cloud_base_defs.h

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_mcu_dev_init

函数原型

OPERATE_RET tuya_iot_mcu_dev_init(IN CONST TY_IOT_CBS_S *cbs,IN CONST CHAR_T *product_key, IN CONST CHAR_T *p_firmware_key, IN CONST CHAR_T *sw_ver,IN CONST CHAR_T *mcu_sw_ver);

功能说明

联网模块+mcu 设备初始化接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cbs Cbs 回调函数数组,用户在回调函数中实现自己的功能。 TY_IOT_CBS_S * 参看例子的中的使用方法。
product_key 在平台创建产品时产品的产品ID 字符串 注意:长度不超过16个字节。
p_firmware_key 上传至涂鸦平台mcu固件key 字符串 注意:长度不超过16个字节。
sw_ver 软件版本号 字符串 网关固件版本号。合法的格式:xx.xx.xx (0\<=x \<= 9)
mcu_sw_ver mcu 软件版本号 设备固件版本号。 合法的格式:xx.xx.xx (0\<=x \<= 9)

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_io_soc_init

函数原型

OPERATE_RET tuya_iot_soc_init(IN CONST TY_IOT_CBS_S *cbs, IN CONST CHAR_T *product_key, IN CONST CHAR_T *sw_ver);

功能说明

联网模块soc 设备初始化接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cbs 回调函数数组,用户在回调函数中实现自己的功能。 TY_IOT_CBS_S * 参看例子的中的使用方法。
product_key 从涂鸦开放平台获取的product key 字符串 注意:长度不超过16个字节。
sw_ver: 软件版本号 字符串 设备固件版本号。 合法的格式:xx.xx.xx (0\<=x \<= 9)

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_gw_init

函数原型

OPERATE_RET tuya_iot_gw_init(IN CONST TY_IOT_CBS_S *cbs,IN CONST TY_IOT_GW_CBS_S *gw_cbs, 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);

功能说明

联网模块网关初始化接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cbs 回调函数数组,用户在回调函数中实现自己的功能 TY_IOT_CBS_S * 参看例子的中的使用方法。
gw_cbs 子设备管理回调函数 TY_IOT_GW_CBS_S *
product_key 从涂鸦开放平台获取的product key 字符串 注意:长度不超过16个字节。
sw_ver 网关固件版本号 字符串 网关固件版本号。合法的格式:xx.xx.xx (0<=x <= 9)
attr 网关参数数组 GW_ATTACH_ATTR_T *

例如:GW_ATTACH_ATTR_T attr[] = {

{GP_DEV_ZB,"1.0.0"},

};

attr_num 参数数组长度 UINT_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_gw_dev_init

函数原型

OPERATE_RET tuya_iot_gw_dev_init(IN CONST TY_IOT_CBS_S *cbs, IN CONST TY_IOT_GW_CBS_S *gw_cbs, 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);

功能说明

联网模块网关加设备初始化接口,相比与tuya_iot_gw_init,该函数使得网关具有设备的属性,可以设置功能点等。

参数说明

参考 tuya_iot_gw_init 接口说明

返回值

参考 tuya_iot_gw_init 接口说明

tuya_iot_reg_get_nw_stat_cb

函数原型

OPERATE_RET tuya_iot_reg_get_nw_stat_cb (IN CONST GET_NW_STAT_CB nw_stat_cb);

功能说明

注册联网网络状态获取函数,在注册的回调函数中,用户可以根据获取当前的网络状态信息。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
nw_stat_cb 网络改变回调函数,回调函数的参数为网络状态 nw_stat_cb 详见 demo。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

5.4.6 有线加wifi 配置接口,详见 "tuya_iot_wired_wifi_api.h"

tuya_iot_set_wired_wifi_gw_prod_info

函数原型

tuya_iot_set_wired_wifi_gw_prod_info(IN CONST WF_GW_PROD_INFO_S *wf_prod_info);

参看 tuya_iot_set_wf_gw_prod_info 函数说明,只用方法以及参数与其一直。

tuya_iot_wired_wifi_gw_dev_init

函数原型

OPERATE_RET tuya_iot_wired_wifi_gw_dev_init(IN CONST IOT_GW_NET_TYPE_T net_mode,

IN CONST GW_WF_CFG_MTHD_SEL cfg, IN CONST GW_WF_START_MODE start_mode,

IN CONST TY_IOT_CBS_S *cbs, IN CONST TY_IOT_GW_CBS_S *gw_cbs,

IN CONST CHAR_T *product_key, IN CONST CHAR_T *wf_sw_ver,

IN CONST GW_ATTACH_ATTR_T *attr, IN CONST UINT_T attr_num);

功能说明

有线 + wifi 网关 (网关同时作为设备)初始化接口。

功能说明

wifi 网关加设备初始化接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
Net_name 支持的设备网络类型 IOT_GW_NET_TYPE_T IOT_GW_NET_WIRED_WIFI
cfg

wifi设备的工作方式。工作方式:

1)非低功耗模式。

2)低功耗模式。

3)特殊低功耗模式。

GW_WF_CFG_MTHD_SEL
start_mode

Wifi 配网模式:

1)仅工作在ap 配置模式。

2)仅smart config 模式式。

3)ap 以及smart config 模式,默认ap 模式。

4)ap 以及 smart config 模式。默认 smart config模式。

GW_WF_START_MODE
cbs 涂鸦wifi sdk 用户回调 TY_IOT_CBS_S *
gw_cbs 涂鸦网关用户回调 TY_IOT_GW_CBS_S *
product_key 涂鸦平台创建产时获取 字符串
wf_sw_ver 软件版本号 字符串
attr 网关属性数组 GW_ATTACH_ATTR_T *
attr_num 网关属性长度 UINT_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_reg_get_wired_wifi_nw_stat_cb

函数原型

OPERATE_RET tuya_iot_reg_get_wired_wifi_nw_stat_cb(nw_stat_cb, wf_nw_stat_cb);

功能说明

注册网络状态管理回调函数

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
nw_stat_cb 网关网络状态回调 GW_BASE_NW_STAT_T 详见 demo。
wf_nw_stat_cb WIFI网络状态回调 GW_WIFI_NW_STAT_E 详见 demo。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wired_wifi_gw_unactive

函数原型

OPERATE_RET tuya_iot_wired_wifi_gw_unactive(VOID);

参看 tuya_iot_wf_gw_unactive 使用方法一直。

tuya_iot_gw_wired_wifi_set_net_name

函数原型

VOID tuya_iot_gw_wired_wifi_set_net_name(IN CONST CHAR_T *wired_net_name, IN CONST CHAR_T *wifi_net_name);

功能说明

设置有线,以及wifi 网络接口名称。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
wired_net_name 有线网络接口名称 CHAR* 例如: eth0
wifi_net_name WiFi 接口网络名称 CHAR* 例如:ath0

返回值

返回值 说明
VOID

6 设备配网

说明:tuya_sdk会开启多线程,进入配网模式生效必须重启整个进程。

因为涂鸦sdk兼顾的平台很多,无法兼顾所有的联网模块的硬件细节特性,因此对于sdk内部而言,抽象出了一套需要实现的联网设备相关的硬件接口,按产品形态分为两类:wifi配置类网络接口、非wif配置类网络接口,具体说明详见"demo"代码

6.1 有线设备配网

设备通过有线接入互联网,不用输入路由器的热点名称和密码,设备已连接外网;只需从APP端获取激活token,即可申请在涂鸦云激活设备。

6.1.1 重置设备(进入待配网状态)

tuya_iot_gw_unactive

函数原型

OPERATE_RET tuya_iot_gw_unactive(VOID);

功能说明

重置网关设备,解除网关有APP的绑定关系,使得网关处于非激活(待配网)状态。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

6.1.2 配网流程交互图

  • 实现6.1.2 ~6.1.4 接口;
  • 如上图,本地重置设备后,需要重启sdk进程,才可进入配网模式。
  • DEV_RESET_IFM_CB 参考常见问题说明

6.1.3 需要用户实现的接口

hwl_bnw_get_ip

函数原型

OPERATE_RET hwl_bnw_get_ip(OUT NW_IP_S *ip);

功能说明

获取联网模块ip 信息。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ip IP 信息结构体。联网模块IP,以及当前网络的子网掩码,当前网络的网关地址。 NW_IP_S * 用户需要填充IP 中的ip 地址信息。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_bnw_station_conn

函数原型

BOOL_T hwl_bnw_station_conn(VOID);

功能说明

获取网络连接状态。

参数说明

VOID

返回值

返回值 说明
TRUE 设备已经联网
FALSE 设备断开网络。
hwl_bnw_get_mac

函数原型

OPERATE_RET hwl_bnw_get_mac(OUT NW_MAC_S *mac);

功能说明

获取设备网络接口的mac 地址。可选实现。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
mac mac保存获取到的网络接口的mac 信息。 NW_MAC_S *

返回值

返回值 说明
OPRT_OK 获取成功
错误码 获取失败
hwl_bnw_set_mac

函数原型

OPERATE_RET hwl_bnw_set_mac(IN CONST NW_MAC_S *mac);

功能说明

设定设备mac 地址,可选实现。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
mac NW_MAC_S *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_bnw_set_station_connect

函数原型

OPERATE_RET hwl_bnw_set_station_connect(IN CONST CHAR_T *ssid,IN CONST CHAR_T *passwd)

功能说明

当产品形态为有线+无线模式,需要用户自己实现 wifi 连接的函数,配网时app会将指定路由的ssid,password传下来。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ssid app 会通知用户wifi ap 的ssid。 CHAR_T *
password app 会通知用户wifi ap 的 password。 CHAR_T *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_bnw_need_wifi_cfg

函数原型

BOOL_T hwl_bnw_need_wifi_cfg(VOID);

功能说明

是否需要wifi 配置。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置

返回值

返回值 说明
TRUE 如果硬件有wifi 接口,用户想要连接wifi
FALSE 如果硬件没有wifi接口,不想连接wifi 需返回false.
hwl_bnw_station_get_conn_ap_rssi

函数原型

OPERATE_RET hwl_bnw_station_get_conn_ap_rssi(OUT SCHAR_T *rssi);

功能说明

当产品形态为有线+无线时,此接口用于获取wifi与router之间的 rssi值。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
rssi rssi保存获取到的rssi 信息。 SCHAR_T *

返回值

返回值 说明
OPRT_OK 获取成功
其他 获取失败

6.2 Wifi设备配网

  • 用户需要先确定wifi网卡支持的工作模式,然后在tuya_iot_wf_xx_init接口初始化时告知sdk支持的配网模式,具体参考tuya_iot_wf_xx_dev_init 类接口的cfg参数说明
  • SDK支持smart config配网以及ap配网模式。smart config也称为快速配网,是设备的wifi处于monitor模式下,获取手机app发出的无线空口报文,sdk会解析这些报文,并从中获取配置信息,切换为station模式进行联网;ap配网过程相对复杂,是指设备开启ap热点,手机连接上,通过局域网发送配置信息,设备获取配置信息之后,切换为station模式,进行联网。

6.2.1 重置设备(进入待配网模式)

  • 如上图,本地重置设备后,需要重启sdk进程,才可进入配网模式。
  • DEV_RESET_IFM_CB 参考常见问题说明;
  • 当初始化时设置同时支持AP和Smart配网模式时,调用此接口会循环切换配网模式;
tuya_iot_wf_gw_unactive

函数原型

OPERATE_RET tuya_iot_gw_unactive(VOID);

功能说明

重置网关设备,解除网关有APP的绑定关系,使得网关处于非激活(待配网)状态。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

6.2.3 AP配网

  1. 实现6.2.4需要用户实现的接口
  2. 实现6.2.1逻辑,使sdk进入待配网状态
  3. GET_WF_NW_STAT_CB参考

6.2.4 需要用户实现的接口

hwl_wf_get_ip

函数原型

OPERATE_RET hwl_wf_get_ip(IN CONST WF_IF_E wf,OUT NW_IP_S *ip);

功能说明

获取wifi设备ip信息。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
wf WiFi 的工作模式。AP 以及 station。 WF_IF_E
ip 保存获取的Ip信息结构体,信息包含IP,submask,gateway。 NW_IP_S * 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_get_mac

函数原型

OPERATE_RET hwl_wf_get_mac(IN CONST WF_IF_E wf,OUT NW_MAC_S *mac);

功能说明

获取wifi设备mac。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
wf WiFi 的工作模式。AP 以及 station。 nw_stat_cb
mac 保存获取到的mac地址。 NW_MAC_S * 作为输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_set_mac

函数原型

OPERATE_RET hwl_wf_set_mac(IN CONST WF_IF_E wf,IN CONST NW_MAC_S *mac);

功能说明

设置wifi设备mac,可选实现。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
wf WiFi 的工作模式。AP 以及 station。 WF_IF_E 输入参数
mac 设置的mac地址。 NW_MAC_S * 输入参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_wk_mode_set

函数原型

OPERATE_RET hwl_wf_wk_mode_set(IN CONST WF_WK_MD_E mode);

功能说明

设置wifi工作模式。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
mode

设置wifi 工作模式:

  1. 低功耗模式

  2. 混杂模式

  3. station 模式

  4. ap 模式

  5. ap + station 模式

WF_WK_MD_E

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_wk_mode_get

函数原型

OPERATE_RET hwl_wf_wk_mode_get(OUT WF_WK_MD_E *mode);

功能说明

获取wifi工作模式。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
mode 同 hwl_wf_wk_mode_set 中 参数mode 含义一致。 WF_WK_MD_E 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_station_connect

函数原型

OPERATE_RET hwl_wf_station_connect(IN CONST CHAR_T *ssid,IN CONST CHAR_T *passwd);

功能说明

设置wifi设备建立与AP/热点/wifi路由器 的连接。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ssid 连接 ap/热点/wifi路由器的ssid。 字符串
password 连接 ap/热点/wifi路由器的password。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_station_disconnect

函数原型

OPERATE_RET hwl_wf_station_disconnect(VOID);

功能说明

断开wifi设备与AP/热点/wifi路由器 的连接。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_station_get_conn_ap_rssi

函数原型

OPERATE_RET hwl_wf_station_get_conn_ap_rssi(OUT SCHAR_T *rssi);

功能说明

获取作为station 模式的wifi设备与AP连接的信号强度。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
rssi 获取到的rssi SCHAR_T* 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_station_stat_get

函数原型

OPERATE_RET hwl_wf_station_stat_get(OUT WF_STATION_STAT_E *stat);;

功能说明

获取station模式下wifi设备的连接状态。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
stat

Station模式下WiFi 与 ap 连接状态。

  1. 未连接

  2. 正在连接

  3. 密码不对

  4. ap 未发现

  5. 连接失败

  6. 成功连接

  7. 成功获取

WF_STATION_STAT_E * 输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_set_country_code

函数原型

OPERATE_RET hwl_wf_set_country_code(IN CONST CHAR_T *p_country_code);

功能说明

设置wifi 的国家码。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
p_country_code wifi 设备不同的国家工作的频率以及信道信号强度不相同。 CHAR_T *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

6.2.5 需要用户实现的接口(AP配网)

hwl_wf_ap_start

函数原型

OPERATE_RET hwl_wf_ap_start(IN CONST WF_AP_CFG_IF_S *cfg);

功能说明

启动wifi ap热点。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
cfg

启动作为ap 模式下的配置参数。包含:

  1. ssid

  2. password

  3. 信道

  4. 加密方式

  5. 是否隐藏 ssid

  6. 最大连接数

WF_AP_CFG_IF_S *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_ap_stop

函数原型

OPERATE_RET hwl_wf_ap_stop(VOID);

功能说明

停止wifi ap热点。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

6.2.5 EZ配网

6.2.6 用户需实现的接口(EZ配网)

hwl_wf_all_ap_scan

函数原型

OPERATE_RET hwl_wf_all_ap_scan(OUT AP_IF_S **ap_ary,OUT UINT_T *num);

功能说明

扫描所有ap。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ap_ary 当前环境ap 信息列表。 AP_IF_S ** 作为输出参数
num 当前环境ap 信息列表长度。 UINT_T 作为输出参数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_assign_ap_scan

函数原型

OPERATE_RET hwl_wf_assign_ap_scan(IN CONST CHAR_T *ssid,OUT AP_IF_S **ap);

功能说明

扫描指定的ap。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ssid 指定的ap 的 ssid。 字符串 输入参数
ap 获取指定ap信息。 AP_IF_S ** 输出

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_release_ap

函数原型

OPERATE_RET hwl_wf_release_ap(IN AP_IF_S *ap);

功能说明

"5.2.1"、"5.2.2"过程中分配资源的释放处理。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ap 当ap 信息没用的时候,释放在 hwl_wf_all_ap_scan 以及 hwl_wf_assign_ap_scan 申请的内存。 AP_IF_S *

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_set_cur_channel

函数原型

OPERATE_RET hwl_wf_set_cur_channel(IN CONST BYTE_T chan);

功能说明

设置wifi 工作信道。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
chan 要设置的wifi工作信道 BYTE_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_get_cur_channel

函数原型

OPERATE_RET hwl_wf_get_cur_channel(OUT BYTE_T *chan);

功能说明

获取当前工作信道。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
nw_stat_cb 网络改变回调函数,回调函数的参数为网络状态 nw_stat_cb 详见 demo。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
hwl_wf_sniffer_set

函数原型

OPERATE_RET hwl_wf_sniffer_set(IN CONST BOOL_T en,IN CONST SNIFFER_CALLBACK cb);

功能说明

wifi设备混杂模式设置。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
en 使能/关闭 wifi 的sniffer模式。 nw_stat_cb
cb 通知回调函数。抓取到的空中802.11数据包包含frame头。 SNIFFER_CALLBACK

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

6.2.7 其他配网方式

  • 此类配网设备用户层通过其他方式获取路由器的ssid、passwd和配网token,直接调用接口申请设备激活
  • 二维码配网,设备通过摄像头扫描TuyaApp上生成的二维码获取ssid/passwd/token信息
  • 蓝牙配网,设备通过蓝牙获取TuyaApp上的二维码获取ssid/passwd/token信息
  • 串口、声波配网等
tuya_iot_gw_wf_user_cfg

函数原型

OPERATE_RET tuya_iot_gw_wf_user_cfg(IN CONST CHAR_T *ssid,IN CONST CHAR_T *passwd,IN CONST CHAR_T *token);

功能说明

当通过其他模式配网时(非ap、非smartconfig),比如摄像头的二维码配网、声波配网等,调用此接口处理。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
ssid ap 模式下配网使用的 ssid。 字符串
passwd ap 模式下配网使用的 password。 字符串
token ap 模式下配网使用的 token。 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

7 设备固件升级(OTA)

  • 固件升级主要用于修复设备bug和增加设备新功能。固件升级主要分两种,第一种是设备升级,第二种是MCU升级。这里的wifi设备的固件升级均指设备升级。

  • 设备升级过程涉及手机APP 、设备、涂鸦云三端

    • 手机APP:升级进度结果的展示 或者 升级消息的发起者
    • 涂鸦云: 升级过程中的管理者,负责升级固件的存储,设备升级状态的更新,升级文案推送
    • 设备: 负责接收固件,固件升级的执行者

7.1 固件包配置说明

  • 网关或子设备配网成功后,从TuyaApp上获取设备信息里的虚拟ID,作为固件升级的白名单
  • 编译出要升级的固件包,固件版本要高于设备中运行的固件版本
  • 登录 https://iot.tuya.com/index 开发者平台,到对应创建的产品下,上传配置固件包
  • 操作说明:https://docs.tuya.com/cn/product/ota.html

7.2 升级开始的方式

设备固件上传到云端后,设备不会立即收到升级消息,目前涂鸦支持以下几种方式:

  • App提醒升级: 用户首次打开设备面板时,会收到升级提醒弹框,可选择升级或不升级;
  • App静默升级: 即设备静默升级,设备重启后,会向云端请求一次是否有静默升级任务,有的话直接进行升级;如果用户去打开设备面板,此时会有进度框显示,此时设备是无法操作的;
  • App强制升级: 用户首次打开设备面板时,会收到升级提醒弹框,只有确定可选,负责设备无法操作;
  • App检测升级: 即App用户主动点击对应设备的面板,然后点击右上角进入设备信息界面,检测设备固件版本,主动更新;

7.3 数据交互图

  • 说明:下图中上报升级进度为tuya_sdk上报,也可通过tuya_iot_upgrade_gw_notify配置为应用层上报

7.4 相关接口说明

tuya_iot_upgrade_gw_notify

函数原型

OPERATE_RET tuya_iot_upgrade_gw(IN CONST FW_UG_S *fw,

IN CONST GET_FILE_DATA_CB get_file_cb,\

IN CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,\

IN CONST PVOID_T pri_data,\

BOOL_T notify, UINT_T download_buf_size);

功能说明

联网模块固件升级处理接口。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
fw 固件信息 FW_UG_S 结构体指针
get_file_cb 下载内容存储 回调函数
upgrd_nofity_cb 通知应用的升级状态 回调函数
pri_data 传递给 get_file_cb 以及 upgrd_nofity_cb 的参数 指针 如果不传参数,则设置为NULL。
notify 选择是否由sdk上报升级进度 布尔型 TRUE为sdk上报,Flase为应用层上报
download_buf_size 下载最大缓存,单位字节 UINT_T 传入0,sdk默认缓存大小

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码

7.5 应用层上报升级进度

当需要应用层控制升级进度上报时,请先用tuya_iot_upgrade_gw_notify接口关闭tuya_sdk上报升级进度

tuya_iot_dev_upgd_progress_rept

函数原型

OPERATE_RET tuya_iot_dev_upgd_progress_rept(IN CONST UINT_T percent,

IN CONST CHAR_T *devid,

IN CONST DEV_TYPE_T tp);

功能说明

上报升级进度。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
percent 升级进度值 UINT_T 0~99
devid 子设备时,传入子设备的devid; 网关时,传入NULL CHAR_T * 参考demo
tp 设备类型 DEV_TYPE_T 参考demo

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码

8 设备功能点(dp点)

涂鸦提供基于mqtt网络应用协议,实现设备控制和状态上报,MQTT是一个轻量的发布订阅模式消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用设计。

tuya_sdk封装了mqtt协议层实现,以功能点(以下称为dp点)的形式呈现,支持数值型、布尔型、枚举型、字符串型、故障型,RAW型数据,像定义C变量一样简单。

开发者需要根据设备功能在涂鸦开发者平台创建对应的功能点,新建dp点说明:https://docs.tuya.com/cn/product/function.html

特点

  1. 目前支持每个产品最多创建35个dp,复杂功能请用raw型数据实现;
  2. obj型:布尔型(bool)、数值型(value)、字符串型(string)、枚举型(enum)、故障型(bitmap),tuya_sdk会对连续上报的数值进行过滤,相同则不予上传;

8.1 设备指令下发回调

dev_obj_dp_cb

函数原型

VOID dev_obj_dp_cb(IN CONST TY_RECV_OBJ_DP_S *dp);

功能说明

OBJ 功能点信息命令回调。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dp

TY_RECV_OBJ_DP_S 中包含:

1)dp 命令类型。

2)dp 点控制的设备id。

3)当dtt_tp 为多播时,则mb_id 群组id。

4)功能点结构体数组长度。

5)功能点结构体数组。

参见 tuya_cloud_com_defs.h

TY_RECV_OBJ_DP_S* 开发者重点处理功能点结构体数组。功能点在涂鸦平台上有定义。

返回值

返回值 说明

dev_raw_dp_cb

函数原型

VOID dev_raw_dp_cb(IN CONST TY_RECV_RAW_DP_S *dp);

功能说明

透传类功能点信息命令回调。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dp

该结构体中包含:

1)dp 命令类型。

2)dp 点控制的设备id。

3)当dtt_tp 为多播时,则mb_id 群组id。

4)透传数据字节个数。

5)透传数据。

参见 tuya_cloud_com_defs.h

TY_RECV_RAW_DP_S*

返回值

返回值 说明

dev_dp_query_cb

函数原型

VOID dev_dp_query_cb(IN CONST TY_DP_QUERY_S *dp_qry);

功能说明

设备特定数据查询入口。可选实现。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dp_qry TY_DP_QUERY_S*

返回值

返回值 说明

8.2 设备状态上报

dev_report_dp_json_async

函数原型

OPERATE_RET dev_report_dp_json_async(IN CONST CHAR_T *dev_id,IN CONST TY_OBJ_DP_S *dp_data,IN CONST UINT_T cnt);

功能说明

异步方式,上报功能点信息。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 设备 id 字符串 如果是子设备,则该参数为子设备的 id。如果是网关/mcu,则该参数为NULL。
dp_data 功能点数据结构体 TY_OBJ_DP_S 结构体数组指针
cnt dp_data 结构体数组个数 UINT_T

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

dev_report_dp_raw_sync

函数原型

OPERATE_RET dev_report_dp_raw_sync (IN CONST CHAR_T *dev_id, IN CONST BYTE_T dpid, IN CONST BYTE_T *data,IN CONST UINT_T len, IN CONST UINT_T timeout);

功能说明

设备透传数据同步上报接口,由调用者保障数据上报的可靠性

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 设备 id 字符串 如果是子设备,则该参数为子设备的 id。如果是网关/mcu,则该参数为NULL。
dpid 功能点id UINT_T
data 数据 BYTE_T *
len 数据长度 UINT_T
timeout 函数柱塞超时时间 UINT_T 单位为秒

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

dev_report_dp_stat_sync

函数原型

OPERATE_RET dev_report_dp_raw_sync (IN CONST CHAR_T *dev_id,IN CONST TY_OBJ_DP_S *dp_data, IN CONST UINT_T cnt,IN CONST UINT_T timeout);

功能说明

设备结构化数据同步上报接口,由调用者保障数据上报的可靠性,通常用于统计类数据的上报。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 设备 id 字符串 如果是子设备,则该参数为子设备的 id。如果是网关/mcu,则该参数为NULL。
dp_data 功能点信息结构体数组 TY_OBJ_DP_S *
cnt Dp状态数组长度 UINT_T
timeout 函数柱塞超时时间 UINT_T 单位为秒

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

9 子设备管理

9.1 子设备配网

9.1.1 数据交互图

  • 此图为从手机APP端添加子设备;
  • 网关端也可调用tuya_iot_gw_bind_dev_attr直接绑定
  • sub_device 和 gateway之间通信协议由用户实现

9.1.2 接口&回调说明

gw_add_dev_cb

函数原型

BOOL_T gw_add_dev_cb(IN CONST GW_PERMIT_DEV_TP_T tp,IN CONST BOOL_T permit,IN CONST UINT_T timeout);

功能说明

当添加子设备时,在此回调中实现使能设备入网功能。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
tp 子设备类型。目前仅支持zigbee,RF433,以及 BLE。 GW_PERMIT_DEV_TP_T
permit 是否允许添加子设备 BOOL_T TRUE为允许;FALSE为禁止。
timeout 配网超时时间 UINT_T 单位为秒

返回值

返回值 说明
TRUE 操作成功
FALSE 失败
gw_del_cb

函数原型

VOID gw_del_cb(IN CONST CHAR_T *dev_id);

功能说明

当子设备被删除时,通过此回调通知用户。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 被删除子设备的 id 。 字符串

返回值

返回值 说明
tuya_iot_gw_bind_dev

函数原型

OPERATE_RET tuya_iot_gw_bind_dev(IN CONST GW_PERMIT_DEV_TP_T tp,IN CONST USER_DEV_DTL_DEF_T uddd, IN CONST CHAR_T *id,IN CONST CHAR_T *pk,IN CONST CHAR_T *ver);

功能说明

网关绑定子设备接口。当涂鸦app使能网关添加子设备时,调用此接口将发现的子设备绑定。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
tp 子设备类型 BYTE_T 目前有三种类型:zigbee,RF433,BLE。
uddd 设备类型,用户自己定义,区分不同类的设备。 UINT_T
id 子设备 id 字符串 长度不能超过25个字节。
pk 子设备 product key 字符串 长度不能超过16个字节。
ver 子设备硬件版本号 字符串 长度不能超过10个字节

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
gw_bind_ifm_cb

函数原型

VOID gw_bind_ifm_cb(IN CONST CHAR_T *dev_id,IN CONST OPERATE_RET op_ret);

功能说明

当子设备被bind后,通过此回调通知用户bind结果。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id bind的子设备 Id。 字符串
op_ret Bind 结果 OPERATE_RET OPRT_OK 表示绑定成功。其他表示 bind 失败。

返回值

返回值 说明

9.2 子设备固件升级(OTA)

9.2.1 数据交互图

  • sub_device 和 gateway设备层的通信由客户实现,这里只简单说明;
  • 升级进度上报完全可由用户控制,这里只在网关给子设备发送固件包的过程中更新上报进度;
  • 涂鸦智能App固件升级超时60s机制:每收到设备的一包进度更新消息,重新计时;应用层可通过控制升级进度上报以延长TuyaApp超时

9.2.2 接口&回调说明

dev_ug_inform_cb

函数原型

VOID dev_ug_inform_cb(IN CONST CHAR_T *dev_id,IN CONST FW_UG_S *fw)

功能说明

子设备OTA 固件升级通知,表示服务器有可更新的子设备固件。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 子设备 id。 字符串
fw

新固件信息。

包含:

1)固件下载地址。

2)md5校验值 。

3)版本号。

4)文件大小。

FW_UG_S *

返回值

返回值 说明
tuya_iot_upgrade_dev

函数原型

OPERATE_RET

OPERATE_RET tuya_iot_upgrade_dev(IN CONST CHAR_T *devid,

IN CONST FW_UG_S *fw, \

IN CONST GET_FILE_DATA_CB get_file_cb,\

IN CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,\

IN CONST PVOID_T pri_data)

功能说明

设备固件升级接口,包含网关上的主控设备以及各终端子设备的升级。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
devid 设备id 字符串 字符串

如果升级的是子设备,则 devid 就是子设备的 devid。如果升级的是 soc/mcu,则 devid 为 NULL。

Devid长度不能超过25个字节。

fw 固件信息 FW_UG_S 结构体指针
get_file_cb 下载内容存储 回调函数
upgrd_nofity_cb 通知应用的升级状态 回调函数
pri_data 传递给 get_file_cb 以及 upgrd_nofity_cb 的参数 指针 如果不传参数,则设置为NULL。

返回值

返回值 说明
OPRT_OK 成功
错误码 失败返回错误码
tuya_iot_gw_subdevice_update

函数原型

OPERATE_RET tuya_iot_gw_subdevice_update (IN CONST CHAR_T *id,IN CONST CHAR_T *ver);

功能说明

刷新子设备的固件版本号。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 子设备 id 字符串 不能超过25个字节。
ver 子设备版本号 字符串 长度不能超过10个字节。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

9.3 子设备在线管理

  • 开启tuya_sdk的心跳检测机制

如下图为开启sdk的心跳保活机制时接口调用图

tuya_iot_dev_online_stat_update

函数原型

OPERATE_RET tuya_iot_dev_online_stat_update(IN CONST CHAR_T *dev_id,IN CONST BOOL_T online);

功能说明

网关更新子设备在线/离线状态。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 子设备 id 字符串
online 在线状态 BOOL_T TRUE为在线,FALSE为离线。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_sys_mag_hb_init

函数原型

OPERATE_RET tuya_iot_sys_mag_hb_init(IN CONST DEV_HEARTBEAT_SEND_CB hb_send_cb);

功能说明

启动子设备心跳管理能力。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
hb_send_cb 网关每隔3秒检查所有的子设备。如果子设备在心跳包超时内,子设备没有发送心跳给网关,则网关会设置子设备为离线,通过hb_send_cb 通知用户至少三次。 hb_send_cb 回调函数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_set_dev_hb_timeout

函数原型

OPERATE_RET tuya_iot_set_dev_hb_timeout (IN CONST CHAR_T *dev_id,IN CONST TIME_S hb_timeout_time);

功能说明

子设备心跳超时时间设置,若网关在超过设置时间内未收到子设备心跳,则网关会将子设备设置为离线。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 子设备 id 字符串
hb_timeout_time 心跳超时时间,单位为秒 TIME_S 如果设置为 0xffffffff,该子设备将会被跳过心跳检查,会一直在线。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

tuya_iot_fresh_dev_hb

函数原型

OPERATE_RET tuya_iot_fresh_dev_hb(IN CONST CHAR_T *dev_id);

功能说明

当网关收到子设备心跳信息,调用此函数刷新该子设备心跳状态。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
dev_id 子设备 id 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

9.4 获取子设备信息

tuya_iot_dev_traversal

函数原型

DEV_DESC_IF_S *tuya_iot_dev_traversal(INOUT VOID **iterator);

功能说明

子设备遍历,通过此接口可以遍历网关下所有的子设备。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
iterator 临时保存链表,用户只需要定义一个空指针即可。 VOID**

返回值

返回值 说明
DEV_DESC_IF_S 指向设备信息的结构体指针,用户可从中读取设备信息。
NULL 设备信息已读完。

9.5 子设备群组控制

gw_dev_grp_cb

函数原型

OPERATE_RET gw_dev_grp_cb(IN CONST GRP_ACTION_E action,IN CONST CHAR_T *dev_id,IN CONST CHAR_T *grp_id);

功能说明

在该回调中实现组操作处理命令的实现。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
action 组的操作类型。增加以及删除组操作。 GRP_ACTION_E 有APP传递过来,开发者根据该命令,执行相应的操作。
dev_id 子设备 Id。 字符串 加入组grp_id 的子设备ID。
grp_id 组 id 。 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

9.6 子设备场景功能

gw_dev_scene_cb

函数原型

OPERATE_RET gw_dev_scene_cb(IN CONST SCE_ACTION_E action,IN CONST CHAR_T *dev_id,\

IN CONST CHAR_T *grp_id,IN CONST CHAR_T *sce_id)

功能说明

在该回调中实现场景处理命令功能。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
action 场景的操作类型。增加以及删除,以及执行场景操作。 SCE_ACTION_E 有APP传递过来,开发者根据该命令,执行相应的操作。
dev_id 子设备 Id。 字符串
grp_id 组 id 。 字符串
sce_id 场景 id。 字符串

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

12 日志管理

AddOutputTerm

函数原型

OPERATE_RET AddOutputTerm(IN CONST CHAR_T *name,IN CONST LOG_OUTPUT term);

功能说明

为tuya_sdk日志新增一个输出回调,用于将日志写到文件。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
name 日志回调名称。 字符串 用于DelOutputTerm注销此回调
term LOG_OUTPUT 回调

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

DelOutputTerm

函数原型

VOID DelOutputTerm(IN CONST CHAR_T *name);

功能说明

注销AddOutputTerm接口注册的日志回调。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
name 日志回调名称。 字符串 注销AddOutputTerm接口注册的日志回调

返回值 VOID

SetLogManageAttr

#include "uni_log.h"
/***********************************************************
 * @Function:SetLogManageAttr
 * @Desc:   设置日志等级
 * @Param:  curLogLevel,可选参数:
 *          LOG_LEVEL_ERR       0  // 错误信息,程序正常运行不应发生的信息 
            LOG_LEVEL_WARN      1  // 警告信息
            LOG_LEVEL_NOTICE    2  // 需要注意的信息
            LOG_LEVEL_INFO      3  // 通知信息
            LOG_LEVEL_DEBUG     4  // 程序运行调试信息,RELEASE版本中删除
            LOG_LEVEL_TRACE     5  // 程序运行路径信息,RELEASE版本中删除
 * @Return: OPRT_OK: success  Other: fail
 * @Note:   不设置时,sdk默认为DEBUG日志等级
***********************************************************/
OPERATE_RET SetLogManageAttr(IN CONST LOG_LEVEL curLogLevel);

SetLogManageAttr

函数原型

OPERATE_RET SetLogManageAttr(IN CONST LOG_LEVEL curLogLevel);

功能说明

设置日志等级。

参数说明

参数名称 如何理解 参数类型 是否必选 如何设置
curLogLevel 日志等级 UINT 参考uni_log.h说明

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码

13 错误码说明

  • 便于开发调试过程中定位问题,会持续更新。
错误码 原因 解决方法
-944 上报功能点时,对应的DPID不在该产品下 登陆涂鸦IoT平台确认
-916 设备与涂鸦云mqtt服务器长连接断开 排查设备端连接外网是否OK
-926 设备上报mqtt数据时,等待服务器puback超时 检查设备网络情况或降低上报频率
-945 DP点属性值不匹配 排查上报的dp点属性值和平台定义是否一致

14 常见问题(FAQ)

14.1 tuya_sdk会占用那些端口,用途是?

  • 6668->tcp,局域网通信端口
  • 6667->udp,局域网广播端口
  • 8883,mqtt_tls通信端口
  • https通信端口

14.2 固件下载过程中网络断开时,tuya_sdk会超时多久退出升级状态 ?

  • 设备和https服务器断开后,tuya_sdk会尝试重新建立连接(连接超时参数30s),
  • 累积重试8次还没有连接成功,即退出升级状态。

14.3 设备安装固件还没完成,TuyaApp已经提示升级失败,是什么原因 ?

  • 涂鸦智能APP,固件升级结果显示的机制:超时60s没有收到设备上报的进度更新时,即显示升级失败;
  • 收到进度更新时,重新计时,等待60s;
  • 设备端可在安装固件时,上报进度更新延长TuyaApp超时时间。

14.4 tuya_sdk下载固件是否支持断点续传 ?

  • 支持~

14.5 是否有取消升级接口,比如对于电池供电的设备,当电量不足时,设备收到升级消息后,取消升级

  • OPERATE_RET tuya_iot_refuse_upgrade(IN CONST FW_UG_S fw, IN CONST CHAR_T dev_id);

14.6 设备和手机APP无法建立局域网通信 ?

  • 确认下6667/6668端口是否被其他进程占用
  • 确认下手机ip地址和设备ip地址是否处于同一个网段
  • 确认下设备是否分享给他人,设备只可以和一个手机建立局域网通信
  • 检查get_ip接口实现,传给sdk的ip字段是否正确

results matching ""

    No results matching ""