网关联网 SDK

更新时间:2022-11-24 09:20:06下载pdf

涂鸦网关联网 SDK,借助网关设备的联网能力,直接与涂鸦 IoT 平台、涂鸦 App 建立通信链路并进行涂鸦标准数据交互的一个软件中间件。您用此 SDK 开发接入涂鸦云的网关产品。

  • 网关类产品

    利用网关联网 SDK 以及不同的协议控制器将产品做成实体网关产品,网关向下接入各类不同通信协议的产品,例如 Zigbee、BLE、ZWAVE 等。例如智能家居中常见的控制中心、智慧主机等。网关提供网关固件、网关控制器、子终端设备的固件升级能力。

  • 网关配备子设备类产品

    具备网关类产品对子设备的控制外,同时本身也作为设备产品,定义设备的功能点,实现对网关设备的控制。

准备工作

在开发之前,您需要首先注册涂鸦 IoT 平台账号,获取设备开发阶段的必要信息,包含产品 ID、授权码等。具体操作指导,请参考 五分钟快速入门

硬件要求

  • Flash:SDK 代码占用 2MB 左右。并有可读写区域。
  • RAM:SDK 运行后内存占用 5MB,您要根据开发产品的功能复杂度增加内存。

软件要求

  • 支持 Linux 或 Android 系统。
  • 支持 TCP/IP 协议栈。

获取 SDK

涂鸦网关联网 SDK 是以 C 语言动态链接库(.so)或者静态库(.a)的形式提供给您,因此,需要您提供其系统的交叉编译工具链来打包 SDK。

同时,涂鸦网关联网 SDK 也会定时上传到 [GitHub],如果编译的产物已包含您的交叉编译工具链,可以直接下载使用。

目录结构

.
├── build_app.sh
├── CHANGELOG.md
├── demos
├── platforms
└── sdk
    ├── include
    └── lib
        ├── libtuya_iot.a

目录结构以及使用请参见产物包的 README.md 文件。

初始化 SDK

设备认证

  • 设备的身份认证采用一机一密的方式,在设备上烧写设备的唯一的 UUID & authkey,这种方式要求对设备的产线工具进行一定的修改,需要对每个设备烧写不同的 UUID & authkey。

  • UUID & authkey 成对出现,每一台设备都必须有自己 UUID & authkey,且唯一,请向涂鸦项目经理申请几组用于调试。

  • 设备认证消息通过接口 tuya_iot_set_gw_prod_info 设置。

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

    网关联网 SDK

初始化接口说明

tuya_iot_init

OPERATE_RET tuya_iot_init(IN CONST CHAR_T *fs_storge_path)

功能说明

用于初始化网关联网 SDK,必须最先调用。

参数说明

参数名称 说明
fs_storge_path 为 SDK 分配可读写的路径。 路径长度不能大于 110 个字节。

返回值

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

tuya_iot_get_sdk_info

CHAR_T *tuya_iot_get_sdk_info(VOID);

功能说明

获取涂鸦联网 SDK 版本信息。

参数说明

Void

返回值

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

TY_IOT_CBS_S

typedef struct {
    GW_STATUS_CHANGED_CB gw_status_cb;
    GW_UG_INFORM_CB gw_ug_cb;
    GW_RESET_IFM_CB gw_reset_cb;
    DEV_OBJ_DP_CMD_CB dev_obj_dp_cb;
    DEV_RAW_DP_CMD_CB dev_raw_dp_cb;
    DEV_DP_QUERY_CB dev_dp_query_cb;
    DEV_UG_INFORM_CB dev_ug_cb;
    DEV_RESET_IFM_CB dev_reset_cb;
#if defined(TUYA_GW_OPERATOR) && (TUYA_GW_OPERATOR==1)
    OPE_HTTPC_GET_CHCODE_CB ope_get_chcode_cb;
#endif
#if defined(ENABLE_ALARM) && (ENABLE_ALARM==1)
    GW_OFFLINE_DP_SAVE gw_offline_dp_save_cb;
#endif
} TY_IOT_CBS_S;

功能说明(Summary)

SDK 用户回调接口

成员说明

成员名称 说明
gw_status_cb 网关状态回调。
gw_ug_cb 详见 gw_ug_cb
gw_reset_cb 详见 gw_reset_cb
dev_obj_dp_cb 详见 dev_obj_dp_cb
dev_raw_dp_cb 详见 dev_raw_dp_cb
dev_dp_query_cb DP查询回调
dev_ug_cb 详见 dev_ug_cb
dev_reset_cb 详见 dev_reset_cb
ope_get_chcode_cb 设置为 NULL。暂不支持。
gw_offline_dp_save_cb 详见 gw_offline_dp_save_cb

tuya_iot_app_cbs_init

VOID tuya_iot_app_cbs_init(IN CONST TY_IOT_APP_CBS_S *app_cbs);

功能说明

tuya_iot_app_cbs_init 被用来注册成为应用层的回调处理函数。

参数说明

参数名称 说明
app_cbs 应用回调数组。详见 TY_IOT_APP_CBS_S

返回值

Void

TY_IOT_APP_CBS_S

typedef struct {
    GW_APP_LOG_PATH_CB gw_app_log_path_cb;
#if defined(ENABLE_ALARM) && (ENABLE_ALARM==1)
    GW_HOME_SECURITY_IF_CB gw_home_security_if_cb;
    GW_HOME_SECURITY_ALARM_DEV_CB gw_home_security_alarm_dev_cb;
    GW_HOME_SECURITY_ALARM_DEV_CB gw_home_security_alarm_env_dev_cb;
    GW_HOME_SECURITY_ALARM_DELAY_STATUS_CB gw_home_security_alarm_delay_status_cb;
    GW_HOME_SECURITY_EVENT_CB gw_home_security_event_cb;
    GW_HOME_SECURITY_CANCEL_ALARM_CB gw_home_security_cancel_alarm;
#endif
}TY_IOT_APP_CBS_S;

功能说明(Summary)

应用回调接口,包括日志上传回调,以及家庭安防相关回调。

成员说明

成员名称 说明
gw_app_log_path_cb 详见 gw_app_log_path_cb
gw_home_security_if_cb 家庭安防产品调用。非家庭安防产品设置为 NULL。详见 gw_home_security_if_cb
gw_home_security_alarm_dev_cb 家庭安防产品调用。非家庭安防产品设置为 NULL。详见 gw_home_security_alarm_dev_cb
gw_home_security_if_cb 家庭安防产品调用。非家庭安防产品设置为 NULL。详见 gw_home_security_if_cb
gw_home_security_alarm_delay_status_cb 家庭安防产品调用。非家庭安防产品设置为 NULL。详见 gw_home_security_alarm_delay_status_cb
gw_home_security_event_cb 家庭安防产品调用。非家庭安防产品设置为 NULL。详见 gw_home_security_event_cb
gw_home_security_cancel_alarm 家庭安防产品调用。非家庭安防产品设置为 NULL。详见 gw_home_security_cancel_alarm

Wi-Fi 配置类设备接口,详见 “tuya_iot_wifi_api.h”


WF_GW_PROD_INFO_S
typedef struct {
    CHAR_T *uuid; 
    CHAR_T *auth_key;
    CHAR_T *ap_ssid;
    CHAR_T *ap_passwd;
} WF_GW_PROD_INFO_S;

功能说明

Wi-Fi 产品信息。

成员说明

成员名称 说明
uuid UUID 字符串。一定不能为 NULL。长度小于或等于 16 字节。
auth_key auth_key 字符串。一定不能为 NULL。长度小于或等于 32 字节。
ap_ssid SSID 前缀。长度小于或等于 16 字节。如果设置为 NULL 时,则 ssid 前缀默认是 “Smartlife-”。
ap_passwd 长度小于或等于 16 字节。默认为 NULL。
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);

功能说明

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

参数说明

参数名称 说明
wf_prod_info 网关产品信息。见 WF_GW_PROD_INFO_S 说明。

返回值

返回值 说明
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);

功能说明

Wi-Fi 网关初始化接口。

参数说明

参数名称 说明
cfg Wi-Fi 配置方法
start_mode Wi-Fi 配网模式
cbs 用户注册的回调。详见 TY_IOT_CBS_S
gw_cbs 用户注册的网关回调。详见 TY_IOT_GW_CBS_S
product_key 平台创建产品时获取
wf_sw_ver 固件版本号
attr 网关适配器配置列表
attr_num 网关适配器配置列表个数

返回值

返回值 说明
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);

功能说明

Wi-Fi 网关和设备初始化接口,相比与 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_WF_NW_STAT_CB nw_stat_cb);

功能说明

获取 Wi-Fi 状态接口。

参数说明

参数名称 说明
nw_stat_cb 注册网络状态回调函数

回调函数 nw_stat_cb 参数为 GW_WIFI_NW_STAT_E 类型, 定义如下:

#define STAT_LOW_POWER          0   // idle status,use to external config network
#define STAT_UNPROVISION        1   // smart config status
#define STAT_AP_STA_UNCFG       2   // ap WIFI config status
#define STAT_AP_STA_DISC        3   // ap WIFI already config,station disconnect
#define STAT_AP_STA_CONN        4   // ap station mode,station connect
#define STAT_STA_DISC           5   // only station mode,disconnect
#define STAT_STA_CONN           6   // station mode connect
#define STAT_CLOUD_CONN         7   // cloud connect
#define STAT_AP_CLOUD_CONN      8   // cloud connect and ap start 

返回值

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

查询 Wi-Fi 协议之外的其他网关设备的状态,请参考 tuya_iot_base_api.h 文件。

GW_PROD_INFO_S
typedef struct {
    CHAR_T *uuid; 
    CHAR_T *auth_key;
} GW_PROD_INFO_S;

功能说明

网关产品信息。

成员说明

成员名称 说明
uuid UUID 字符串。一定不能为 NULL。
auth_key auth_key 字符串。一定不能为 NULL。
tuya_iot_set_gw_prod_info
OPERATE_RET tuya_iot_set_gw_prod_info(IN CONST GW_PROD_INFO_S *prod_info);

功能说明

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

参数说明

参数名称 说明
prod_info 产品信息。见 GW_PROD_INFO_S

返回值

返回值 说明
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 在平台创建产品时产品的产品 ID。
sw_ver 固件版本号。
attr 网关适配器配置列表。
attr_num 网关适配器配置列表个数。

返回值

返回值 说明
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 注册网络变化回调函数

在注册的回调函数中,您根据回调函数参数知道当前网络状态。网络状态 GW_BASE_NW_STAT_T 定义如下:

/* offline in LAN.  user wired callback <hwl_bnw_station_conn> return <false> */
#define GB_STAT_LAN_UNCONN 0

/* online in LAN, offline in WAN.
   user wired callback <hwl_bnw_station_conn> return <true> but mqtt is offline
*/
#define GB_STAT_LAN_CONN 1

/* online in WAN.
   user wired callback <hwl_bnw_station_conn> return <true> and mqtt is online
*/
#define GB_STAT_CLOUD_CONN 2

可参看 tuya_cloud_base_defs.h

返回值

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

有线加 Wi-Fi 配置接口,详见 “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_init
OPERATE_RET tuya_iot_wired_wifi_gw_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);

功能说明

有线 + Wi-Fi 网关初始化接口。

参数说明

参数名称 说明
net_mode 网络类型
cfg Wi-Fi 配置方法
start_mode Wi-Fi 配网模式
cbs 您需要注册的回调函数数组。见 TY_IOT_CBS_S
gw_cbs 您需要注册的网关回调函数数组。见 TY_IOT_GW_CBS_S
product_key 平台创建产时获取
wf_sw_ver 固件版本号
attr 网关适配器配置列表
attr_num 网关适配器配置列表个数

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
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);

功能说明

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

参数说明

参数名称 说明
net_mode 网络类型
cfg Wi-Fi 配置方法
sw_ver 设备固件版本字符串,格式:xx.xx.xx
cbs 您需要注册的回调函数数组。见 TY_IOT_CBS_S
gw_cbs 网关回调
product_key 您需要注册的网关回调函数数组。见 TY_IOT_GW_CBS_S
wf_sw_ver 固件版本号
attr 网关适配器配置列表
attr_num 网关适配器配置列表个数

IOT_GW_NET_TYPE_T 定义:

#define IOT_GW_NET_WIRED       0   //只支持有线, only support wired
#define IOT_GW_NET_WIFI        1   //只支持无线, only support wifi
#define IOT_GW_NET_WIRED_WIFI  2   //有线无线都支持, support wired and wifi

GW_WF_CFG_MTHD_SEL 定义:

#define GWCM_OLD                0   // do not have low power mode
#define GWCM_LOW_POWER          1   // with low power mode
#define GWCM_SPCL_MODE          2   // special low power mode
#define GWCM_OLD_PROD           3   // GWCM_OLD mode with product

在 Linux/Android 系统中,选择 GWCM_OLD_PROD。

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

参数 attr 需要您设置为支持的适配器。比如网关支持 Zigbee,则可以设置为:

GW_ATTACH_ATTR_T attr[] = {
    {GP_DEV_ZB,"1.0.0"},
};

返回值

返回值 说明
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 注册网络状态变化回调函数
wf_nw_stat_cb 注册 Wi-Fi 网络状态变化回调函数

参看 tuya_iot_reg_get_nw_stat_cb 以及 tuya_iot_reg_get_wf_nw_stat_cb 回调函数介绍。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
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);

功能说明

设置有线以及 Wi-Fi 网络的名称。

参数说明

参数名称 说明
wired_net_name 有线网络接口名称
wifi_net_name Wi-Fi 接口网络名称

返回值

返回值 说明
VOID

设备配网

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

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

有线设备配网

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

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

tuya_iot_gw_unactive
OPERATE_RET tuya_iot_gw_unactive(VOID);

功能说明

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

参数说明

Void

返回值

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

说明参看 tuya_iot_gw_unactive

配网流程交互图

网关联网 SDK

  • 如上图,本地重置设备后,需要重启 SDK 进程,才可进入配网模式。
  • dev_reset_cb 参考常见问题说明

需要用户实现的接口

tuya_hal_wired_get_ip
OPERATE_RET tuya_hal_wired_get_ip(OUT NW_IP_S *ip)

功能说明

获取有线网卡的 IP 地址

参数说明

参数名称 说明
ip IP 信息结构体。网卡的 IP 地址,子网掩码,网关。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wired_station_conn
BOOL_T tuya_hal_wired_station_conn(VOID);

功能说明

获取网络连接外网状态。

参数说明

Void

返回值

返回值 说明
TRUE 设备已经联网。
FALSE 设备断开网络。
tuya_hal_wired_get_mac
OPERATE_RET tuya_hal_wired_get_mac(OUT NW_MAC_S *mac)

功能说明

获取有线网络接口的 MAC 地址。可选实现。

参数说明

参数名称 说明
mac 获取到的网络接口的 MAC 信息。

返回值

返回值 说明
OPRT_OK 获取成功
错误码 获取失败
hwl_bnw_set_mac
OPERATE_RET tuya_hal_wired_set_mac(IN CONST NW_MAC_S *mac);

功能说明

设定有线网卡的 MAC 地址。当前无需实现。

参数说明

参数名称 说明
mac 设置有线网卡的 MAC 地址。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wired_wifi_set_station_connect
OPERATE_RET tuya_hal_wired_wifi_set_station_connect(IN CONST CHAR_T *ssid, 
                                                    IN CONST CHAR_T *passwd)

功能说明

如果产品同时兼容有线和无线模式,需要您自己实现 Wi-Fi 连接的函数。

参数说明

参数名称 说明
ssid Wi-Fi 路由器的 ssid。
password Wi-Fi 路由器的 password。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wired_wifi_need_cfg
BOOL_T tuya_hal_wired_wifi_need_cfg(VOID);

功能说明

若硬件形态为 Wi-Fi + 有线模式,您是否需要连接外部 Wi-Fi 配置。

参数说明

Void

返回值

返回值 说明
TRUE 如果硬件有 Wi-Fi 接口,用户想要连接 Wi-Fi。
FALSE 如果硬件没有 Wi-Fi 接口,不想连接 Wi-Fi 需返回 FALSE。
tuya_hal_wired_wifi_station_get_conn_ap_rssi
OPERATE_RET tuya_hal_wired_wifi_station_get_conn_ap_rssi(OUT SCHAR_T *rssi)

功能说明

如果产品同时兼容有线和无线模式,此接口用于获取 Wi-Fi 的 RSSI 值。

参数说明

参数名称 说明
rssi RSSI 保存获取到的 RSSI 信息。

返回值

返回值 说明
OPRT_OK 获取成功
其他 获取失败
tuya_hal_wired_if_connect_internet
int tuya_hal_wired_if_connect_internet(bool *status);

功能说明

获取网络状态。

参数说明

参数名称 说明
status 网络状态。
联网则为 TRUE,反之,为 FALSE。

返回值

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

Wi-Fi设备配网

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

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

网关联网 SDK

  • 如上图,本地重置设备后,需要重启 SDK 进程,才可进入配网模式。
  • dev_reset_cb 参考常见问题说明;
  • 当初始化时设置同时支持 Wi-Fi 快连配网以及热点配网模式时,调用此接口会循环切换配网模式;
tuya_iot_wf_gw_unactive
OPERATE_RET tuya_iot_wf_gw_unactive(VOID);

功能说明

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

参数说明

Void

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wired_wifi_gw_unactive
OPERATE_RET tuya_iot_wired_wifi_gw_unactive(VOID);

功能说明

有线 + Wi-Fi 方式重置。同 tuya_iot_wf_gw_unactive

tuya_iot_wf_fast_get_nc_type
OPERATE_RET tuya_iot_wf_fast_get_nc_type(GW_WF_NWC_FAST_STAT_T *nc_type)

功能说明

获取当前 Wi-Fi 配置方式。

参数说明

参数名称 说明
nc_type

GW_WF_NWC_FAST_STAT_T 定义如下:

#define GWNS_FAST_LOWPOWER           0   // current in low power mode
#define GWNS_FAST_UNCFG_SMC          1   // current in smart-cfg mode
#define GWNS_FAST_UNCFG_AP           2   // current in ap-cfg mode
#define GWNS_FAST_UNCFG_NORMAL       3   // current in normal mode

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_iot_wired_wifi_fast_get_nc_type
OPERATE_RET tuya_iot_wired_wifi_fast_get_nc_type(GW_WF_NWC_FAST_STAT_T *nc_type);

功能说明

有线 + Wi-Fi 方式下获取当前 Wi-Fi 配置方式。参数说明同 tuya_iot_wf_fast_get_nc_type

tuya_iot_set_wf_cfg_err_code_cb
OPERATE_RET tuya_iot_set_wf_cfg_err_code_cb(IN CONST WF_NW_CFG_ERR_CODE_CB wf_nw_cfg_err_code_cb);

功能说明

注册回调函数 — 用来获取 Wi-Fi 配网产生错误码。

参数说明

参数名称 说明
wf_nw_cfg_err_code_cb 获取 Wi-Fi 配网产生的错误码回调函数

回调函数的参数,即为 Wi-Fi 配网产生的错误码。定义如下:

/*初始状态*/
#define NW_CFG_INIT  				0
/*激活失败*/
#define NW_CFG_ACTIVE_FAILED 		1
/*ap找不到*/
#define NW_CFG_AP_NOT_FOUND 		2
/*密码错误*/
#define NW_CFG_ERR_PASSWD 			3
/*ap连接不上*/
#define NW_CFG_CANT_CONN_AP 		4
/*dhcp错误*/
#define NW_CFG_DHCP_FAILED 			5
/*路由器连接成功*/
#define NW_CFG_SUCC  				100

返回值

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

AP配网

  1. 实现需要您实现的接口
  2. 设备被重置后,使 SDK 进入待配网状态
    网关联网 SDK
tuya_iot_set_user_def_ap_if
OPERATE_RET tuya_iot_set_user_def_ap_if(IN CONST CHAR_T *ssid,IN CONST CHAR_T *passwd)

功能说明

您自定义 SSID 前缀以及密码。 不设置则 SSID 前缀默认为 “SmartLife-”,密码为空,加密方式为开放。

参数说明

参数名称 说明
ssid 自定义的 SSID 前缀
passwd 热点密码

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
WF_AP_CFG_IF_S
typedef struct {
    uint8_t ssid[WIFI_SSID_LEN+1];       ///< ssid
    uint8_t s_len;                       ///< len of ssid
    uint8_t passwd[WIFI_PASSWD_LEN+1];   ///< passwd
    uint8_t p_len;                       ///< len of passwd
    uint8_t chan;                        ///< channel. default:0
    WF_AP_AUTH_MODE_E md;                ///< encryption type
    uint8_t ssid_hidden;                 ///< ssid hidden  default:0
    uint8_t max_conn;                    ///< max sta connect nums default:0
    uint16_t ms_interval;                ///< broadcast interval default:0
} WF_AP_CFG_IF_S;

功能说明(Summary)

AP 配置结构体。

成员说明

成员名称 说明
ssid ssid
s_len ssid 长度
passwd 密码
p_len 密码长度
chan Wi-Fi 工作信道
md Wi-Fi 加密类型
ssid_hidden hidden 的 SSID
max_conn 最大的 station 设备连接数
ms_interval 广播间隔

需要用户实现的接口

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

功能说明

获取 Wi-Fi 网卡的 IP 地址。

参数说明

参数名称 说明
wf Wi-Fi 网卡的工作类型。
ip 保存获取的 IP 信息结构体,信息包含 IP,submask,gateway。

WF_IF_E 的类型定义:

typedef enum
{
    WF_STATION = 0,     // station type; station 类型
    WF_AP,              // ap type; 热点类型
} WF_IF_E;

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_get_mac
OPERATE_RET tuya_hal_wifi_get_mac(IN CONST WF_IF_E wf,INOUT NW_MAC_S *mac)

功能说明

获取 Wi-Fi 网卡的 MAC 地址。

参数说明

参数名称 说明
wf Wi-Fi 网卡的工作类型
mac 保存获取到的 MAC 地址。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_set_mac
OPERATE_RET tuya_hal_wifi_set_mac(IN CONST WF_IF_E wf,IN CONST NW_MAC_S *mac)

功能说明

设置 Wi-Fi 设备 MAC 地址。当前不需要实现。

参数说明

参数名称 说明
wf Wi-Fi 网卡的工作类型。
mac 设置的 MAC 地址。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_set_work_mode
OPERATE_RET tuya_hal_wifi_set_work_mode(IN CONST WF_WK_MD_E mode)

功能说明

设置 Wi-Fi 工作模式。

参数说明

参数名称 说明
wf 设置 Wi-Fi 设备工作模式。

Wi-Fi 的工作模式定义如下:

typedef enum
{
    WWM_LOWPOWER = 0,   //wifi work in lowpower mode LINUX系统不关心低功耗问题,不需要处理。
    WWM_SNIFFER,        // wifi work in sniffer mode
    WWM_STATION,        // wifi work in station mode
    WWM_SOFTAP,         // wifi work in ap mode
    WWM_STATIONAP,      // wifi work in station+ap mode
}WF_WK_MD_E;

在 Wi-Fi 快连配网中需要处理 WWM_SNIFFER 以及 WWM_STATION (或 WWM_STATIONAP)。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_get_work_mode
OPERATE_RET tuya_hal_wifi_get_work_mode(OUT WF_WK_MD_E *mode)

功能说明

获取 Wi-Fi 工作模式。

参数说明

参数名称 说明
mode 同 hwl_wf_wk_mode_set 中 参数 mode 含义一致。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_station_connect
OPERATE_RET tuya_hal_wifi_station_connect(IN CONST CHAR_T *ssid,IN CONST CHAR_T *passwd)

功能说明

Wi-Fi 设备根据 ssid & password 连接路由器。

参数说明

参数名称 说明
ssid 连接路由器的 ssid。
password 连接路由器的 password。

返回值

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

函数原型

OPERATE_RET tuya_hal_wifi_station_disconnect(VOID)

功能说明

断开 Wi-Fi 设备与路由器的连接。

参数说明

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_station_get_conn_ap_rssi
OPERATE_RET tuya_hal_wifi_station_get_conn_ap_rssi(OUT SCHAR_T *rssi)

功能说明

获取 Wi-Fi 设备的信号强度。

参数说明

参数名称 说明
rssi 获取到的 RSSI 信息

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_station_get_status
OPERATE_RET tuya_hal_wifi_station_get_status(OUT WF_STATION_STAT_E *stat)

功能说明

获取 Wi-Fi 设备的网络状态

参数说明

参数名称 说明
stat 您需要填充 stat。见 WF_STATION_STAT_E 说明。

WF_STATION_STAT_E 说明:

typedef enum {
    WSS_IDLE = 0,                       // not connected;  未连接
    WSS_CONNECTING,                     // connecting wifi; 正在连接
    WSS_PASSWD_WRONG,                   // passwd not match; 密码不对
    WSS_NO_AP_FOUND,                    // ap is not found; 热点未发现
    WSS_CONN_FAIL,                      // connect fail; 连接失败
    WSS_CONN_SUCCESS,                   // connect wifi success; 连接成功
    WSS_GOT_IP,                         // get ip success; 成功获取 IP。
} WF_STATION_STAT_E;

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_set_country_code
OPERATE_RET tuya_hal_wifi_set_country_code(IN CONST CHAR_T *p_country_code)

功能说明

设置 Wi-Fi 设备工作的国家码。

参数说明

参数名称 说明
p_country_code Wi-Fi 设备不同的国家工作的频率以及信道信号强度不相同。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_ap_start
OPERATE_RET tuya_hal_wifi_ap_start(IN CONST WF_AP_CFG_IF_S *cfg)

功能说明

启动 Wi-Fi 热点。

参数说明

参数名称 说明
cfg 根据传进来的函数参数 cfg 设置 AP。见 WF_AP_CFG_IF_S

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_ap_stop
OPERATE_RET tuya_hal_wifi_ap_stop(VOID)

功能说明

AP 配网模式下停止热点。

参数说明

Void

返回值

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

Wi-Fi 快连配网

用户需实现的接口( Wi-Fi 快连配网)

tuya_hal_wifi_all_ap_scan
OPERATE_RET tuya_hal_wifi_all_ap_scan(OUT AP_IF_S **ap_ary,OUT UINT_T *num)

功能说明

获取当前环境下的热点列表信息。

参数说明

参数名称 说明
ap_ary 当前环境热点信息列表。
num 当前环境热点信息列表长度。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_assign_ap_scan
OPERATE_RET tuya_hal_wifi_assign_ap_scan(IN CONST CHAR_T *ssid,OUT AP_IF_S **ap)

功能说明

获取指定 SSID 的热点信息。

参数说明

参数名称 说明
ssid 指定的热点的 SSID。
ap 获取指定热点信息。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_release_ap
OPERATE_RET tuya_hal_wifi_release_ap(IN AP_IF_S *ap)

功能说明

分配资源的释放处理。

参数说明

参数名称 说明
ap 释放在 tuya_hal_wifi_all_ap_scan 以及 tuya_hal_wifi_assign_ap_scan 申请的内存。

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_set_cur_channel
OPERATE_RET tuya_hal_wifi_set_cur_channel(IN CONST BYTE_T chan)

功能说明

设置 Wi-Fi 工作信道。

参数说明

参数名称 说明
chan 需要 Wi-Fi 设备工作的信道

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_get_cur_channel
OPERATE_RET tuya_hal_wifi_get_cur_channel(OUT BYTE_T *chan)

功能说明

获取当前工作信道。

参数说明

参数名称 说明
chan 填充当前 Wi-Fi 设备的工作信道

返回值

返回值 说明
OPRT_OK 操作成功
错误码 失败返回错误码
tuya_hal_wifi_sniffer_set
OPERATE_RET tuya_hal_wifi_sniffer_set(IN CONST bool en,IN CONST SNIFFER_CALLBACK cb)

功能说明

设置 Wi-Fi 设备的 sniffer 模式下抓包状态。

参数说明

参数名称 说明
en 使能/关闭 Wi-Fi 的 sniffer 模式。
cb 通知回调函数。抓取到的空中 802.11 数据包含帧头。

返回值

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

其他配网方式

  • 此类配网设备用户层通过其他方式获取路由器的 ssid 、passwd 和配网 token,直接调用接口申请设备激活。
  • 二维码配网,设备通过摄像头扫描 App 上生成的二维码获取 ssid/passwd/token 信息。
  • 蓝牙配网,设备通过蓝牙获取 App 上的二维码获取 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);

功能说明

当通过除了 Wi-Fi 快连配网和热点配网之外的模式配网时,比如摄像头的二维码配网、声波配网等,调用此接口处理。

参数说明

参数名称 说明
ssid 热点模式下配网使用的 SSID。
passwd 热点模式下配网使用的 password。
token 热点模式下配网使用的 token。

返回值

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

网关重置

App 重置网关

您可通过 App 重置网关。

gw_reset_cb
VOID gw_reset_cb(GW_RESET_TYPE_E type);

功能说明

用户注册 TY_IOT_CBS_S 的回调函数 gw_reset_cb。

参数说明

参数名称 说明
type

GW_RESET_TYPE_E 定义:

typedef enum {
    GW_LOCAL_RESET_FACTORY = 0,
    GW_REMOTE_UNACTIVE,
    GW_LOCAL_UNACTIVE,
    GW_REMOTE_RESET_FACTORY,
    GW_RESET_DATA_FACTORY, //need clear local data when active
}GW_RESET_TYPE_E;

目前,网关回调中需要处理 GW_REMOTE_RESET_FACTORY 以及 GW_RESET_DATA_FACTORY 重置类型。重置后网关应用需要重启。

返回值

返回值 说明
VOID

本地重置网关

SDK 留有本地重置网关能力,您可通过按键等方式本地重置网关。参看 tuya_iot_gw_unactive 以及 tuya_iot_wf_gw_unactive 等部分。

设备固件升级(OTA)

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

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

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

固件包配置说明

  • 网关或子设备配网成功后,从 App 上获取设备信息里的虚拟 ID,作为固件升级的白名单。
  • 编译出要升级的固件包,固件版本要高于设备中运行的固件版本。
  • 登录 涂鸦 IoT 平台,到对应创建的产品下,上传配置固件包。详情请参考 选择和管理固件版本

升级开始的方式

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

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

数据交互图

下图中上报升级进度为 tuya_SDK 上报,也可通过 tuya_iot_upgrade_gw_notify 配置为应用层上报

网关联网 SDK

相关接口以及回调说明

FW_UG_S

typedef struct {
    DEV_TYPE_T tp;
    UPGRADE_TYPE_T type;
    CHAR_T fw_url[FW_URL_LEN+1];
    CHAR_T sw_ver[SW_VER_LEN+1];
    UINT_T file_size;
    CHAR_T fw_hmac[FW_HMAC_LEN+1];
} FW_UG_S;

功能说明(Summary)

升级的固件信息。

成员说明

成员名称 说明
tp 固件类型
type UPGRADE_TYPE_NORMAL :普通升级
UPGRADE_TYPE_SILENT : 强制升级
fw_url 固件下载 URL 地址
sw_ver 固件版本号
file_size 固件大小
fw_hmac 固件 HMAC 校验码

gw_ug_cb

VOID gw_ug_cb(IN CONST FW_UG_S *fw)

功能说明

用户注册 TY_IOT_CBS_S 结构体的 gw_ug_cb 回调函数。网关有新固件可以升级时通知回调。

参数说明

参数名称 说明
fw 固件信息。见 FW_UG_S

返回值

返回值 说明
VOID

tuya_iot_upgrade_gw

OPERATE_RET tuya_iot_upgrade_gw_notify(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 固件信息
get_file_cb 下载内容存储的回调函数
upgrd_nofity_cb 通知应用的升级状态的回调函数
pri_data 传递给 get_file_cb 以及 upgrd_nofity_cb 的参数
notify 选择是否由 SDK 上报升级进度
download_buf_size 下载最大缓存,单位字节

返回值

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

应用层上报升级进度

当需要应用层控制升级进度上报时,请先用 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 升级进度值。0~99
devid 子设备时,传入子设备的 ID ;
网关时,传入 NULL
tp 设备类型

返回值

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

tuya_iot_dev_upgd_result_report

OPERATE_RET tuya_iot_dev_upgd_result_report(IN CONST CHAR_T *dev_id, 
                                            IN CONST DEV_TYPE_T type, 
                                            IN CONST INT_T result);

功能说明

上报设备升级结果。

参数说明

参数名称 说明
devid 为子设备时,传入子设备的 ID ;
为网关时,传入 NULL。
tp 设备类型
result 升级结果

TI_UPGRD_STAT_S 定义:

#define TUS_RD 1         // 升级已准备
#define TUS_UPGRDING 2   // 升级中
#define TUS_UPGRD_FINI 3  // 升级完成
#define TUS_UPGRD_EXEC 4  // 升级完成后离开

返回值

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

tuya_iot_refuse_upgrade

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

功能说明

升级的过程中停止升级。

参数说明

参数名称 说明
fw 固件信息。见 FW_UG_S
devid 为子设备时,传入子设备的 ID ;
为网关时,传入 NULL。

返回值

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

tuya_iot_gw_version_update

OPERATE_RET tuya_iot_gw_version_update(IN GW_PERMIT_DEV_TP_T type, IN CONST CHAR_T *ver);

功能说明

升级完成后,更新网关或网关适配器固件版本号。

参数说明

参数名称 说明
type 网关类型
ver 固件版本号

GW_PERMIT_DEV_TP_T 定义:

#define GP_DEV_ZB DEV_ZB_SNGL    // Zigbee 
#define GP_DEV_OTHER DEV_OTHER_SNGL // 其他
#define GP_DEV_BLE DEV_BLE_SNGL     // 蓝牙
#define GP_DEV_INFRARED DEV_INFRARED_SNGL //红外
#define GP_DEV_MCU  DEV_NM_NOT_ATH_SNGL // MCU

返回值

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

设备功能点

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

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

开发者需要根据设备功能在涂鸦开发者平台创建对应的功能点,新建 DP 请参考 功能定义

特点

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

DP 结构体

TY_RECV_OBJ_DP_S

typedef struct {
    DP_CMD_TYPE_E cmd_tp;
    DP_TRANS_TYPE_T dtt_tp;
    CHAR_T *cid;
    CHAR_T *mb_id;
    UINT_T dps_cnt;
    TY_OBJ_DP_S dps[0];
} TY_RECV_OBJ_DP_S;

功能说明(Summary)

OBJ 类型 DP数据结构。

成员说明

成员名称 说明
cmd_tp 命令类型,该命令产生方式
dtt_tp 传输类型
cid CID 为 NULL,表示为网关设备
不为空,表示为子设备。
mb_id dtt_tp 为多播时,则 mb_id 为群组 ID
dps_cnt 功能点结构体数组个数
dps_cnt 功能点结构体数组

TY_RECV_RAW_DP_S

typedef struct {
    DP_CMD_TYPE_E cmd_tp;
    DP_TRANS_TYPE_T dtt_tp;
    CHAR_T *cid;
    BYTE_T dpid;
    CHAR_T *mb_id;
    UINT_T len;
    BYTE_T data[0];
} TY_RECV_RAW_DP_S;

功能说明(Summary)

RAW 类型 DP点数据结构。

成员说明

参数名称 说明
cmd_tp 命令类型,该命令产生方式
dtt_tp 传输类型
cid CID 为 NULL,表示为网关设备
不为空,表示为子设备。
dpid DP ID。
mb_id dtt_tp 为多播时,则 mb_id 为群组 ID
len 透传数据长度
data 透传数据缓存

TY_DP_QUERY_S

typedef struct {
    CHAR_T *cid;
    UINT_T cnt;
    BYTE_T dpid[0];
} TY_DP_QUERY_S;

功能说明(Summary)

查询 DP信息。

成员说明

参数名称 说明
cid CID 为 NULL,表示为网关设备
不为空,表示为子设备。
cnt DP个数。如果等于 0,则表示所有 DP。
dpid 所要查询的 DP ID。

设备指令下发回调

dev_obj_dp_cb

VOID dev_obj_dp_cb(IN CONST TY_RECV_OBJ_DP_S *dp);

功能说明

用户注册 TY_IOT_CBS_S 的回调函数 dev_obj_dp_cb。 OBJ 功能点回调。

参数说明

参数名称 说明
dp SDK 回调给用户的 OBJ 类型功能点数据。参看 TY_RECV_OBJ_DP_S

返回值

Void

dev_raw_dp_cb

VOID dev_raw_dp_cb(IN CONST TY_RECV_RAW_DP_S *dp);

功能说明

用户注册 TY_IOT_CBS_S 的回调函数 dev_raw_dp_cb。透传类功能点回调。

参数说明

参数名称 说明
dp SDK 回调给用户的 RAW 类型功能点数据。参看 TY_RECV_RAW_DP_S

返回值

Void

dev_dp_query_cb

VOID dev_dp_query_cb(IN CONST TY_DP_QUERY_S *dp_qry);

功能说明

用户注册 TY_IOT_CBS_S 的回调函数 dev_dp_query_cb。设备特定数据查询入口回调。

参数说明

参数名称 说明
dp_qry 参看 TY_DP_QUERY_S

返回值

Void

设备状态上报

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
dp_data 功能点数据结构体
cnt dp_data 结构体数组个数

返回值

返回值 说明
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
dpid 功能点 ID
data 透传数据
len 透传数据长度
timeout 函数柱塞超时时间

返回值

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

dev_report_dp_stat_sync

#define dev_report_dp_stat_sync(dev_id, dp_data, cnt, timeout) \
    dev_report_dp_stat_sync_extend(dev_id, dp_data, cnt, timeout, TRUE)
OPERATE_RET dev_report_dp_stat_sync_extend(IN CONST CHAR_T *dev_id,
                                           IN CONST TY_OBJ_DP_S *dp_data,
                                           IN CONST UINT_T cnt,
                                           IN CONST UINT_T timeout, 
                                           IN CONST BOOL_T enable_auto_retrans);

功能说明

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

参数说明

参数名称 说明
dev_id 设备 ID
dp_data 功能点信息结构体数组。TY_OBJ_DP_S
cnt DP 状态数组长度
timeout 函数柱塞超时时间

返回值

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

子设备管理

子设备配网

数据交互图

  • 此图为从手机 App 端添加子设备。
  • 网关端也可调用 tuya_iot_gw_bind_dev 直接绑定。
  • 子设备和网关之间通信协议由您实现。

网关联网 SDK

接口&回调说明

TY_IOT_GW_CBS_S
typedef struct {
    GW_PERMIT_ADD_DEV_CB gw_add_dev_cb;
    GW_DEV_DEL_CB gw_del_cb;
    GW_DEV_GRP_INFM_CB gw_dev_grp_cb;
    GW_DEV_SCENE_INFM_CB gw_dev_scene_cb;
    GW_BIND_DEV_INFORM_CB gw_ifm_cb;
} TY_IOT_GW_CBS_S;

功能说明(Summary)

网关对子设备的添加使能,删除子设备,场景,群组,以及子设备绑定通知的回调函数。。

成员说明

成员名称 说明
gw_add_dev_cb 参看 gw_add_dev_cb
gw_del_cb 参看 gw_del_cb
gw_dev_grp_cb 参看 gw_dev_grp_cb
gw_dev_scene_cb 参看 gw_dev_scene_cb
gw_ifm_cb 参看 gw_ifm_cb
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);

功能说明

用户注册 TY_IOT_GW_CBS_S 的回调函数 gw_add_dev_cb。 当添加子设备时,在此回调中实现使能设备入网功能。

参数说明

参数名称 说明
tp 子设备类型
permit 是否允许添加子设备。TRUE 为允许;FALSE 为禁止。
timeout 配网超时时间。单位为秒

返回值

返回值 说明
TRUE 操作成功
FALSE 失败
gw_del_cb
VOID gw_del_cb(IN CONST CHAR_T *dev_id);

功能说明

用户注册 TY_IOT_GW_CBS_S 的回调函数 gw_del_cb。当子设备被删除时,通过此回调通知用户。

参数说明

参数名称 说明
dev_id 被删除子设备的 ID。

返回值

Void

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);

功能说明

网关绑定子设备接口。当应用使网关添加子设备时,调用此接口绑定发现的子设备。

参数说明

参数名称 说明
tp 子设备类型。
uddd 设备类型,用户自己定义,区分不同类的设备。
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);

功能说明

用户注册的 TY_IOT_GW_CBS_S 的回调函数 gw_bind_ifm_cb。当子设备被绑定后,通过此回调通知用户绑定结果。

参数说明

参数名称 说明
dev_id 绑定的子设备 ID。
op_ret 绑定结果。
OPRT_OK 表示绑定成功。
其他表示绑定失败。

返回值

Void

子设备的解绑

接口&回调说明

tuya_iot_gw_unbind_dev
OPERATE_RET tuya_iot_gw_unbind_dev(IN CONST CHAR_T *id);

功能说明(Summary)

解绑子设备。

参数说明

参数名称 说明
dev_id 需要从网关解绑的子设备 ID。

返回值

返回值 说明

子设备固件升级 (OTA)

数据交互图

  • 子设备和网关设备层的通信由客户实现,这里只简单说明。

  • 升级进度上报完全可由用户控制,这里只在网关给子设备发送固件包的过程中更新上报进度。

  • 涂鸦智能 App 固件升级超时 60s 机制:每收到设备的一包进度更新消息,重新计时;应用层可通过控制升级进度上报以延长 App 超时。

    网关联网 SDK

接口&回调说明

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

功能说明

用户注册的 TY_IOT_CBS_S 中回调函数 dev_ug_cb。 子设备 OTA 固件升级通知,表示有可更新的子设备固件。

参数说明

参数名称 说明
dev_id 有新固件可更新的子设备 ID。
fw FW_UG_S

返回值

返回值 说明
tuya_iot_upgrade_dev
OPERATE_RET tuya_iot_upgrade_dev_notify(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 字符串
fw 升级的固件信息。见 FW_UG_S
get_file_cb 在该回调中实现,下载设备固件并进行存储
upgrd_nofity_cb 下载完成回调通知函数。在该回调中需调用设备的升级函数
pri_data 传递给 get_file_cb 以及 upgrd_nofity_cb 的参数。比如下载升级文件句柄

返回值

返回值 说明
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 子设备固件版本号。参看本文中涂鸦对版本号的格式的定义。

返回值

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

子设备在线管理

开启 tuya_SDK 的心跳检测机制。如下图为开启 SDK 的心跳保活机制时接口调用图。

网关联网 SDK

当启动子设备心跳管理后,在子设备绑定时,调用函数 tuya_iot_set_dev_hb_timeout 设置子设备心跳配置。需注意的是当网关应用重启时,需要调用函数 tuya_iot_dev_traversal 遍历子设备,并设置子设备心跳配置。

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 在线状态。
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 通知用户至少三次。

返回值

返回值 说明
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 心跳超时时间,单位为秒。如果设置为 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 操作成功
错误码 失败返回错误码

获取子设备信息

tuya_iot_dev_traversal

DEV_DESC_IF_S *tuya_iot_dev_traversal(INOUT VOID **iterator);

功能说明

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

参数说明

参数名称 说明
iterator 临时保存链表,用户只需要定义一个空指针即可。

返回值

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

子设备群组控制

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);

功能说明

用户注册 TY_IOT_GW_CBS_S 的回调函数 gw_dev_grp_cb。 在该回调中实现组操作处理命令的实现。

参数说明

参数名称 说明
action 组的操作类型。增加以及删除组操作。
dev_id 加入组 grp_id 的子设备 ID。
grp_id 组 ID。

返回值

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

子设备场景功能

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);

功能说明

用户注册 TY_IOT_GW_CBS_S 的回调函数 gw_dev_scene_cb。在该回调中实现场景处理命令功能。

参数说明

参数名称 说明
action 场景的操作类型。增加以及删除,以及执行场景操作。
dev_id 子设备 ID。
grp_id 组 ID。
sce_id 场景 ID。

返回值

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

子设备重置回调

dev_reset_cb

VOID dev_reset_cb(IN CONST CHAR_T *dev_id, IN DEV_RESET_TYPE_E type)

功能说明

用户注册 TY_IOT_CBS_S 的回调函数 dev_reset_cb。在该回调中需要处理对子设备的重置处理。

参数说明

参数名称 说明
dev_id 需要重置的子设备 ID。
type 重置类型。
typedef enum {
    DEV_REMOTE_RESET_FACTORY, //移除设备
    DEV_RESET_DATA_FACTORY, //清除本地数据,并移除设备。
} DEV_RESET_TYPE_E;

返回值

返回值 说明
VOID

日志管理

gw_app_log_path_cb

VOID app_log_path_cb(OUT CHAR_T *path, IN CONST INT_T len)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 app_log_path_cb。用户在此回调中实现网关日志上传。

参数说明

参数名称 说明
path 本地日志文件路径字符串,为输出参数
len 本地日志文件路径字符串最大长度

返回值

返回值 说明
VOID

注意:日志管理对于设备维护和问题排查至关重要,设备端建议留有 5MB~10MB 左右空间用来保存设备运行日志,设备出现故障时,可通过网关设备 ID 信息在 IoT 平台查询设备日志。为了设备问题分析方便,该功能必须实现。

伪代码

STATIC VOID app_log_path_cb(OUT CHAR_T *path, IN CONST INT_T len);
int main(void)
{
    tuya_iot_init(CFG_STORAGE_PATH);
    ......
    TY_IOT_APP_CBS_S iot_app_cbs =  {
        app_log_path_cb,
    };
    tuya_iot_app_cbs_init(&iot_app_cbs);
    ......
    while(1){
        sleep(10);
    }
}
/*****************************************************************
 * @Function: app_log_path_cb
 * @Description: 本地日志获取回调
 * @Param[out]: path, 本地日志压缩包文件路径字符串
 * @Param[in]: len,本地日志压缩包文件路径字符串最大长度
 * @Return: void
 *****************************************************************/
STATIC VOID app_log_path_cb(OUT CHAR_T *path, IN CONST INT_T len)
{
    PR_DEBUG("app_log_path_cb,log_file_path maxlen:%d",len);
	// 这里只是参考,日志文件的保存和压缩需用户自行实现
    CHAR_T log_file_path[] = {"/tmp/tuya_log.tar.gz"};

    if( (strlen(log_file_path) < len) && (path != NULL) ){
        snprintf(path, len, "%s", log_file_path);
    }
}

家庭安防

tuya_iot_home_secruity_info_set

OPERATE_RET tuya_iot_home_secruity_info_set(IN CONST CHAR_T *mode_str,
									   IN CONST CHAR_T *node_id,
									   IN CONST CHAR_T *delay_str);

功能说明

设置当前的布防撤防模式,比如遥控器布防撤防。

参数说明

参数名称 说明
mode_str 布防模式。
“0”:disarm 撤防(固定不变)
“1”:在家布防
“2”:离家布防
node_id 触发设置的设备 ID。
“0123456789”:表明是 0123456789 这个设备触发了布防,可以为 NULL。
delay_str 延时布防时间。JSON 格式:{“<mode_str>”:

返回值

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

tuya_iot_home_secruity_get_alarm_info

OPERATE_RET tuya_iot_home_secruity_get_alarm_info(OUT ALARM_INFO_S *alarm_info);

功能说明

获取当前安防状态信息。

参数说明

参数名称 说明
alarm_info 安防信息结构体。当前模式,当前报警状态,布防延时状态。详见 ALARM_INFO_S

返回值

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

tuya_iot_home_secruity_alarm_status

OPERATE_RET tuya_iot_home_secruity_alarm_status(IN CONST BOOL_T alarm_status);

功能说明

同步报警状态。应用层安防标准 DP 32 的状态变化,通过该 API 接口同步报警状态到 SDK 中

参数说明

参数名称 说明
alarm_status 同步的状态
FALSE:正常
TRUE:报警中

返回值

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

tuya_iot_net_mode_report

OPERATE_RET tuya_iot_net_mode_report(IN CONST HOME_SECURITY_NET_MODE net_mode);

功能说明

同步当前的网络模式。

参数说明

参数名称 说明
net_mode 以太网,Wi-Fi,4G。 见 **HOME_SECURITY_NET_MODE ** 定义。
typedef enum  {
    HOME_SECURITY_NET_MODE_WAN=0,     // wired
    HOME_SECURITY_NET_MODE_WIFI,      //wifi
    HOME_SECURITY_NET_MODE_4G,        //4G
} HOME_SECURITY_NET_MODE;

返回值

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

gw_home_security_if_cb

VOID app_gw_home_security_if_cb(IN CONST CHAR_T *mode_str, IN CONST UINT_T time, BOOL_T is_sound)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 gw_home_security_if_cb。布防模式切换时,通知应用层的回调。

参数说明

参数名称 说明
mode_str 布防模式。
“0”:disarm 撤防(固定不变)
“1”:在家布防
“2”:离家布防
time 布防模式延时时间。
单位是秒,0表示没有延时
is_sound 是否要播放声音。
FALSE:表示不需要播放声音,只切换模式,主要用于一些程序起动时,不需要播放声音的场景。
TRUE:需要播放声音

返回值

Void

app_gw_home_security_alarm_dev_cb

VOID app_gw_home_security_alarm_dev_cb(IN CONST CHAR_T *cid, IN ty_cJSON *dp_inf)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 app_gw_home_security_alarm_dev_cb。

当环境设备的某个 DP 触发了设备报警后,通知应用层,最终要通过安防标准 DP 26 上报。

非环境设备与布防撤防有关,只有在布防时才报警。

参数说明

参数名称 说明
cid 设备 ID。
dp_inf 触发报警的 dp 信息。

返回值

Void

app_gw_home_security_alarm_env_dev_cb

VOID app_gw_home_security_alarm_env_dev_cb(IN CONST CHAR_T *cid, IN ty_cJSON *dp_inf)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 app_gw_home_security_alarm_env_dev_cb。

环境设备哪个 dp 触发了设备报警,通知应用层,最终要通过安防标准 DP 26 上报。

环境设备与布防撤防无关,只要有触发就报警。

参数说明

参数名称 说明
cid 设备 ID。
dp_inf 触发报警的 dp 信息。

返回值

Void

app_gw_home_security_alarm_delay_status

VOID app_gw_home_security_alarm_delay_status(IN ALARM_DELAY_STATE alarm_status)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 app_gw_home_security_alarm_delay_status。

延时报警是由 SDK 实现的,当有延时报警时(未报警还在延时中时),通过此接口通知应用。

参数说明

参数名称 说明
alarm_status 报警延时状态
ALARM_DELAY_DONOT_CREATE:报警延时未创建
ALARM_DELAY_COUNTDOWN:报警延时进行中
ALARM_DELAY_END:报警延时结束
typedef enum  {
    ALARM_DELAY_DONOT_CREATE=0, 
    ALARM_DELAY_COUNTDOWN,
    ALARM_DELAY_END,
} ALARM_DELAY_STATE;

返回值

Void

app_gw_home_security_event

VOID app_gw_home_security_event(IN SECURITY_EVENT_E security_event_status, PVOID_T data)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 app_gw_home_security_event。

一些事件通知应用。

参数说明

参数名称 说明
security_event_status 事件类型。
DISARMED_EVENT:disarm 撤防事件(可不关心,if_cb接口有此通知)。
ARMED_EVENT:进入布防 (倒计时后,在家或离家)。
BYPASS_EVNET:有忽略事件发生,主要用于触发播放声音。
WARING_COUNTDOWN:报警倒计时开始,并通过参数 data 传送时间。
data
typedef enum  {
    DISARMED_EVENT,
    ARMED_EVENT,                //进入布防(倒计时后,在家或离家)
    BYPASS_EVNET,               //忽略
    WARING_COUNTDOWN,           //报警倒计时
} SECURITY_EVENT_E;

返回值

Void

gw_home_security_cancel_alarm

VOID gw_home_security_cancel_alarm(VOID)

功能说明

用户注册 TY_IOT_APP_CBS_S 的回调函数 gw_home_security_cancel_alarm。

取消报警回调函数。收到此信息后,要取消报警,dp 32上报 FALSE。

参数说明

Void

返回值

Void

ALARM_INFO_S

typedef struct {
    CHAR_T alarm_mode[ALARM_SECURITY_MODE_STR_LEN_MAX+1];
    BOOL_T alarm_status;
    BOOL_T enable_countdown_status;
} ALARM_INFO_S;

功能说明

成员说明

成员名称 说明
alarm_mode 布防模式。
“0”:disarm 撤防(固定不变)
“1”:在家布防
“2”:离家布防
alarm_status 报警状态。
TRUE : 报警状态中 (报警延时,以及报警中)
FALSE: 正常状态。
enable_countdown_status 布防延迟状态。
TRUE:布防延迟中
FALSE:其他

工程模式

tuya_iot_set_engineer_mode

VOID tuya_iot_set_engineer_mode(VOID);

功能说明

设置SDK处于工程模式下。在调用网关初始化函数 (tuya_iot_gw_<*>_init) 之前调用

参数说明

Void

返回值

Void

tuya_iot_get_engineer_mode

BOOL_T tuya_iot_get_engineer_mode(VOID);

功能说明

检测是否处于工程模式。

参数说明

Void

返回值

返回值 说明
BOOL_T TRUE:处于工程模式下
FALSE:处于普通模式下。

tuya_iot_gw_engineer_check

OPERATE_RET tuya_iot_gw_engineer_check(IN CONST CHAR_T *engineer_path, ENGR_TO_NORMAL_FINISH_CB cb);

功能说明

网关开始从工程模式恢复到正常模式。

参数说明

参数名称 说明
engineer_path 工程模式存储路径。
cb 工程模式恢复到正常模式完成回调通知。
在回调中,需要删除工程模式存储下的文件。

返回值

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

TY_IOT_GW_CBS_ENGR_S

typedef struct {
    GW_PERMIT_ADD_DEV_CB gw_add_dev_cb;
    GW_DEV_DEL_CB gw_del_cb;
    GW_DEV_GRP_INFM_CB gw_dev_grp_cb;
    GW_DEV_SCENE_INFM_CB gw_dev_scene_cb;
    GW_BIND_DEV_INFORM_CB gw_ifm_cb;
    GW_SCE_PANEL_BIND_CB gw_sce_panel_cb;
} TY_IOT_GW_CBS_ENGR_S;

功能说明

网关对子设备的添加使能,删除子设备,场景,群组,以及子设备绑定通知,场景面板设置的回调函数。。

成员说明

成员名称 说明
gw_add_dev_cb TY_IOT_GW_CBS_S 中使用方法一致。 参看 gw_add_dev_cb
gw_del_cb TY_IOT_GW_CBS_S 中使用方法一致。参看 gw_del_cb
gw_dev_grp_cb TY_IOT_GW_CBS_S 中使用方法一致。参看 gw_dev_grp_cb
gw_dev_scene_cb TY_IOT_GW_CBS_S 中使用方法一致。参看 gw_dev_scene_cb
gw_ifm_cb TY_IOT_GW_CBS_S 中使用方法一致。参看 gw_ifm_cb
gw_sce_panel_cb 参看 gw_sce_panel_cb

TY_IOT_CBS_ENGR_S

typedef struct {
    GW_STATUS_CHANGED_CB gw_status_cb;
    GW_UG_LAN_INFORM_CB gw_lan_ug_cb;
    GW_RESET_IFM_CB gw_reset_cb;
    DEV_OBJ_DP_CMD_CB dev_obj_dp_cb;
    DEV_RAW_DP_CMD_CB dev_raw_dp_cb;
    DEV_DP_QUERY_CB dev_dp_query_cb;
    DEV_UG_LAN_INFORM_CB dev_lan_ug_cb;
    DEV_RESET_IFM_CB dev_reset_cb;
    GW_SET_CHANNEL_CB gw_set_channel_cb;
    GW_GET_CHANNEL_CB gw_get_channel_cb;
    GW_GET_LOG_CB gw_get_log_cb;
    GW_SYNC_CONFIG_CB gw_sync_config_cb;
    GW_ENG_FIN_CB gw_engineer_finish_cb;
} TY_IOT_CBS_ENGR_S;

功能说明

成员说明

成员名称 说明
gw_status_cb TY_IOT_CBS_S 中 gw_status_cb 使用方法一致。
gw_lan_ug_cb TY_IOT_CBS_Sgw_ug_cb 使用方法一致。
gw_reset_cb TY_IOT_CBS_Sgw_reset_cb 使用方法一致。
dev_obj_dp_cb TY_IOT_CBS_Sdev_obj_dp_cb 使用方法一致。
dev_raw_dp_cb TY_IOT_CBS_Sdev_raw_dp_cb 使用方法一致。
dev_dp_query_cb TY_IOT_CBS_Sdev_dp_query_cb 使用方法一致。
dev_lan_ug_cb TY_IOT_CBS_Sdev_ug_cb 使用方法一致。
dev_reset_cb TY_IOT_CBS_Sdev_reset_cb 使用方法一致。
gw_set_channel_cb 详见 gw_set_channel_cb
gw_get_channel_cb 详见 gw_get_channel_cb
gw_get_log_cb 详见 gw_get_log_cb
gw_sync_config_cb 详见 gw_sync_config_cb
gw_engineer_finish_cb 详见 gw_engineer_finish_cb

gw_sce_panel_cb

OPERATE_RET gw_sce_panel_cb(IN CONST CHAR_T *dev_id, 
			    IN CONST SCE_PANEL_S *sce_panel,
			    IN CONST INT_T btn_num)

功能说明

用户注册 TY_IOT_GW_CBS_ENGR_S 的回调函数 gw_sce_panel_cb。

设置场景面板回调。

参数说明

参数名称 说明
dev_id 场景面板设备 ID。
sce_panel 需要设置的面板信息结构体数组。详见 SCE_PANEL_S
btn_num 面板个数。

返回值

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

gw_set_channel_cb

OPERATE_RET gw_set_channel_cb(IN INT_T channel)

功能说明

用户注册 TY_IOT_GW_CBS_ENGR_S 的回调函数 gw_set_channel_cb。

设置网关控制器工作信道。如果非无线,设置该回调 NULL。

注意 : 重新设置了信道,可能子设备需要重新绑定。

参数说明

参数名称 说明
channel 设置网关控制的无线工作信道。

返回值

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

gw_get_channel_cb

OPERATE_RET gw_get_channel_cb(OUT INT_T *channel)

功能说明

用户注册 TY_IOT_GW_CBS_ENGR_S 的回调函数 gw_get_channel_cb。

获取网关控制器无线工作信道。如果非无线,设置该回调 NULL。

参数说明

参数名称 说明
*channel 保存获取到的网关控制器的无线工作信道。

返回值

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

gw_get_log_cb

OPERATE_RET gw_get_log_cb(OUT CHAR_T *path, IN CONST INT_T len)

功能说明

用户注册 TY_IOT_GW_CBS_ENGR_S 的回调函数 gw_get_log_cb。

上传本地日志回调。

参数说明

参数名称 说明
path 需要上传日志文件路径。比如:/tmp/tuya.tar.gz。
len 参数 path 支持的最大长度。

返回值

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

gw_sync_config_cb

OPERATE_RET gw_sync_config_cb(VOID)

功能说明

用户注册 TY_IOT_GW_CBS_ENGR_S 的回调函数 gw_sync_config_cb。

同步工程文件到普通模式运行下。SDK 相关文件包括:tuya_user.db,以及 tuya_enckey.db。

参数说明

Void

返回值

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

gw_engineer_finish_cb

OPERATE_RET gw_engineer_finish_cb(VOID)

功能说明

用户注册 TY_IOT_GW_CBS_ENGR_S 的回调函数 gw_engineer_finish_cb。

工程部署完成通知回调。回调中需要实现网关应用重启。

参数说明

Void

返回值

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

SCE_PANEL_S

typedef struct {
    INT_T btn;
    CHAR_T *grp;
    CHAR_T *sce;
    CHAR_T *sce_name;
} SCE_PANEL_S;

功能说明

面板信息结构体。

成员说明

成员名称 说明
btn 按键 ID。
grp 群组 ID。
sce 场景 ID。
sce_name 场景名称。

错误码说明

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

错误码定义参看: tuya_cloud_error_code.h