Zigbee 设备授权

更新时间:2023-07-06 06:05:07下载pdf

您现在正在阅览的,是一篇不完全公开的文档,这表示该文档内容的适用性有一定的限制,文档或目录所描述的内容适用于旧版本 SDK、API、工具、平台等。
如果您需要更准确的技术文档,请访问 涂鸦 IoT 开发平台,然后自行搜索。

本文档主要介绍生产测试 SDK 接口参考信息,包括主要功能,接口函数和回调函数。

概述

Zigbee生产测试SDK是基于涂鸦私有网络通信协议、涂鸦私有Zigbee产测通信协议开发,用于Zigbee设备的授权、生产测试软件的二次开发。

本SDK文档共包括涂鸦网络通信库、Zigbee设备固件通信库两部分组成。其中,涂鸦网络通信库用于与涂鸦 IoT 的通信。主要包括账号登录、获取授权码信息、模块授权、授权校验、授权日志上传等功能。Zigbee设备固件通信库包括基于涂鸦Zigbee设备通信协议的模块产测功能,包括进入产测模式、授权信息读写、按键测试、信号强度测试等功能。

SDK下载地址

主要库名称

网络通信库:TuyaCloudIfLib.dll
Zigbee设备固件通信库:Tuya.Module.ProtocolServer.dll
主要依赖库:
BouncyCastle.Crypto.dll
Newtonsoft.Json.dll
Tuya.Core.dll
Tuya.Module.BottomCommunication.dll

涂鸦网络通信库接口总览

|接口|说明|
|-|-|-|
|SetUrlSftVer|设置涂鸦 IoT 工作环境|
|UserLogin|账号登录|
|TokenAuth|授权|
|GetTokenInfo|获取Token信息|
|GetFirmwareSignFromServer|获取固件签名|
|TokenAuthValidate|授权有效性校验|
|AddAuthLog|添加授权日志|

涂鸦Zigbee设备固件通信库接口总览

|接口|说明|
|-|-|-|
|CommunicationServerBuilder.UseSerialPort|设置Zigbee设备通信服务串口信息 |
|CommunicationServerBuilder.UseTCPClient|设置Zigbee设备通信服务TCP信息|
|CommunicationServerBuilder.Builder|创建Zigbee设备通信服务|
|ZigbeeComServer.Start|启动Zigbee设备通信服务|
|ZigbeeComServer.Stop|停止Zigbee设备通信服务|
|ZigbeeComServer.SwitchTestMode|进入测试模式 |
|ZigbeeComServer.WriteAuthKey|写入固件授权信息|
|ZigbeeComServer.ReadAuthKey|读取固件授权信息 |
|ZigbeeComServer.ReadMAC|读取MAC|
|ZigbeeComServer.WritePID|写入PID|
|ZigbeeComServer. ReadPID|读取PID|
|ZigbeeComServer.WriteFirmwareKey|写入固件签名|
|ZigbeeComServer.DownloadConfig|写入OEM配置文件|
|ZigbeeComServer.QueryConfig|检测配置文件|

流程说明

部分内容为涂鸦产测授权SDK主要是授权测试部分的相关设置、接口调用流程。

整机测试整体流程

整机测试主要包括账号登录、授权码信息获取、固件升级、建立连接、进入测试模式、固件版本校验、授权等部分。测试开始前需确保涂鸦账号、授权码Token正确无误。

环境设置

设置涂鸦 IoT 工作环境。用于设置涂鸦 IoT 的工作模式,设置软件版本信息等。

账号登录

账号登录为使用涂鸦 IoT 授权的前提,账号密码需向涂鸦注册。登录成功后方可使用涂鸦 IoT 相关功能。

信息获取

授权码信息部分作用为根据涂鸦提供授权码获取授权码配置的相关信息,如固件版本信息以及其他相关测试的配置等。

固件升级

固件升级为可选功能,由涂鸦 IoT 服务提供固件版本控制,由第三方提供固件烧录写入工具,在产测时完成升级。

固件信息比较

固件版本比较。此部分主要作用为确保固件中运行的固件版本与授权码中配置的固件信息一致,确保设备批次或烧录结果无误。方法为调用固件通信库接口将获取到的相关信息与授权码中相关信息进行校验。

授权流程

本部分介绍授权详细流程,其中涉及云端通信库、WIFI设备固件通信库相关接口。

授权部分为设备向涂鸦 IoT 注册授权,只有授权通过后才可与涂鸦 IoT 进行正确连接。本部分涉及云端通信库授权、授权校验等接口,涉及到Zigbee设备固件通信库中写入设备授权信息、读取设备授权信息接口。此部分授权通过后授权测试结束。如授权失败,可能会造成整机产测无法进入。授权部分中除读写授权配置信息可使用自有通信协议外,云端通信库授权接口调用不可缺少、省略,否则都可能会造成后续流程失败。

授权准备

授权开始前需确认登录流程是否成功,以及Token相关信息获取无误。除此之外需自行创建序列号SN用于测试,SN的作用为识别授权设备身份,以方便后续整机测试获取Mac正常。SN的要求为独立不重复,且每个SN使用后不可重复授权(包括授权失败的情况)。

建立连接

调用程序并传入连接参数建立通信Server,与设备建立连接。

进入产测模式

先进入产测模式,固件返回该版本固件需要写入的相关信息,包括是否写入PID、固件签名、OEM config文件、AuthKey。

读取设备MAC

读取固件中的MAC,用于授权接口的入参。

授权

授权接口调用。参数为SN、授权码、mac、软件版本信息。调用成功后云端会返回授权会返回分配的mac、uuid、accessKey等信息,此信息用于写入固件设置固件相关参数。
注:授权错误、缺失或授权SN重复使用,授权接口会返回错误信息。
向固件写入授权信息。此处如使用涂鸦Zigbee设备固件通信库,需确保Zigbee通信服务开启成功、进入产测模式成功。分为4个步骤:
步骤1: 判断授权返回的mac和从固件中获取的mac是否相同,不相同的话,重新写入mac。
步骤2: 根据进入产测返回的固件信息和调用云端获取授权码信息的接口,决定是否写入PID。
步骤3: 根据进入产测返回的固件信息和调用获取固件签名的接口,决定是否写入固件签名。
步骤4: 根据云端获取授权码信息的接口,决定是否写入OEM config文件。如果授权码支持写入配置文件,下载配置文件,如果配置文件的url为空,则报错,下载完成后,判断下载的文件是否是标准json文件,如果是标准json文件,需要压缩文件,如果不是,直接将文件写入后缀为.bin的同名文件中。调用请求下载参数文件的接口,传入文件长度和校验值,等待返回,然后调用传输配置文件的接口,支持分包传输,每包都需要等待返回值,然后调用结束文件传输的接口。

读取固件授权信息

读取固件授权信息即为读取上步骤中写入的授权信息,调用相关读取的接口,判断以上写入的信息是否正确。

授权信息校验

调用授权接口并校验固件授权信息后,可确保写入固件授权信息与授权信息一致,此时需进行授权校验确保授权成功。参数包括Token、SN、uuid、mac、accessKey、软件版本信息等。

添加授权日志

用于记录本次授权相关信息。需要上传的内容包括Token、SN、uuid、时间戳、固件信息、授权状态等。添加授权日志接口调用返回正确后授权成功。

Zigbee 设备授权
Zigbee 设备授权

涂鸦网络通信函数说明

设置涂鸦 IoT 工作环境 SetUrlSftVer

  • 函数:
    void SetUrlSftVer(string sftVer, string sftIdentity, _LoginUrlType urlType = _LoginUrlType.Release)
  • 参数:
    [in] sftVer 调用SDK的软件的版本号
    [in] sftIdentity 调用SDK的软件名称
    [in] urlType 涂鸦 IoT 工作环境,默认为线上环境,
  • 返回值: 无
  • 说明: 此接口用于选择涂鸦 IoT 的工作环境和设置调用SDK的应用程序的名称和版本信
    息。调用此接口后,每次调用涂鸦网络通信接口时,调用参数中自动附带应用程
    序的名称和版本信息。
    注意:urlType 必须为_LoginUrlType.Release,否则可能导致产品授权无效。

账号登录 UserLogin

  • 函数:
    UserLoginRspParas UserLogin(UserLoginReqParas ReqParas, string apiVer = “1.0”)
  • 参数:
    [in] ReqParas 账号登录请求参数,UserLoginReqParas类型的对象
    [in] apiVer API版本,默认为1.0
    返回值: UserLoginRspParas的对象,包含登录返回成功信息,以及错误信息等。
  • 说明: 此接口实现涂鸦 IoT 账号登录,实现用户身份验证。账号和密码可以联系项目经理申请。每个客户需要单独申请账号和密码,不同的账号拥有不同的权限范围和使用范围。绝大部分涂鸦网络通信接口都需要账号登录后才能访问。

授权 TokenAuth

  • 函数: TokenAuthRsp TokenAuth(TokenAuthReq ReqParas, string apiVer = “1.0”)
  • 参数:
    [in] ReqParas 授权请求参数

[in] apiVer api版本,默认为1.0

  • 返回值: TokenAuthRsp类型的对象,包含接口操作成功结果、错误信息、授权信息等。
  • 说明: 此接口上传产品的信息如mac,SN,token等信息到涂鸦 IoT ,校验通过后返回授权秘钥等信息,完成设备的授权。未经授权或授权失败的设备可能无法连接到涂鸦 IoT 。

获取Token信息 GetTokenInfo

  • 函数: GetTokenInfoRspParas GetTokenInfo(GetTokenInfoReqParas ReqParas, string apiVer = “1.0”)
  • 参数:
    [in] GetTokenInfoReqParas 获取Token信息请求参数。
    [in] apiVer api版本,默认为1.0。
  • 返回值:Token信息获取返回结果
  • 说明:用于获取Token绑定信息。

授权有效性校验 TokenAuthValidate

  • 函数: TokenAuthValidateRsp TokenAuthValidate(TokenAuthValidateReq
    ReqParas, string apiVer = “1.0”)
  • 参数:
    [in] ReqParas 授权有效性请求参数。
    [in] apiVer api版本,默认1.0。
  • 返回值: TokenAuthValidateRsp类型的对象,包含授权有效性校验结果。
  • 说明: 用于校验授权有效性,授权必须要通过授权有效性校验。

添加授权日志 AddAuthLog

  • 函数: AddAuthLogRspParas AddAuthLog(AddAuthLogReqParas ReqParas, string apiVer = “1.0”)
  • 参数:
    [in]ReqParas 添加授权日志请求参数
    [in]apiVer api版本,默认1.0。
  • 返回值: AddAuthLogRspParas的对象。
  • 说明: 授权完成后添加授权日志到涂鸦 IoT 。

涂鸦Linux设备固件通信函数说明**

CommunicationServerBuilder.UseSerialPort设置Zigbee通信服务串口信息

  • 函数: CommunicationServerBuilder UseSerialPort(ComPortParas paras)
  • 参数: [in]paras 串口参数
  • 返回值: 返回Linux通信服务Builder对象
  • 说明: 用于设置Linux通信服务串口、波特率信息。

CommunicationServerBuilder.UseTCPClient设置Zigbee通信服务TCP信息

  • 函数: CommunicationServerBuilder.UseTCPClient (TCPClientParas paras)
  • 参数: [in]paras TCP参数
  • 返回值: 返回Linux通信服务Builder对象
  • 说明: 用于设置Linux通信服务TCP ip、port信息。

CommunicationServerBuilde.Build创建Zigbee通信服务对象

  • 函数: CommunicationServerBuilde.Build()

涂鸦Zigbee设备固件通信函数说明

CommunicationServerBuilder.UseSerialPort设置Zigbee通信服务串口信息

  • 函数: CommunicationServerBuilder UseSerialPort(ComPortParas paras)
  • 参数:
    [in]paras 串口参数
  • 返回值: 返回Zigbee通信服务Builder对象
  • 说明: 用于设置Zigbee通信服务串口、波特率信息。

CommunicationServerBuilder.UseTCPClient设置Zigbee通信服务TCP信息

  • 函数:
    CommunicationServerBuilder.UseTCPClient (TCPClientParas paras)
  • 参数:
    [in]paras TCP参数
  • 返回值: 返回Zigbee通信服务Builder对象
  • 说明: 用于设置Zigbee通信服务TCP ip、port信息。

CommunicationServerBuilde.Build创建Zigbee通信服务对象

  • 函数:
    CommunicationServerBuilde.Build()
  • 参数: 无
  • 返回值: 返回Zigbee通信服务对象
  • 说明: 用于与设备的通信

ZigbeeComServer.Start启动Zigbee通信服务

  • 函数: bool ZigbeeComServer.Start()
  • 参数: 无
  • 返回值: true成功 false:失败
  • 说明: 启动Zigbee设备串口通信服务

ZigbeeComServer.Stop关闭Zigbee通信服务

  • 函数: bool ZigbeeComServer.Stop()
  • 参数: 无
  • 返回值: true:成功 false:失败
  • 说明: 关闭WIFI设备串口通信服务

ZigbeeComServer.SwitchTestMode进入测试模式

函 数:
bool SwitchMode(out EnterTestModeRsp rsp, int sendRetryTimes = 1, int receiveRetryTimes = 50, int retryInterval = 100)

  • 参数:
    [out]rsp 进入测试模式返回结果
    [in]sendRestryTimes 串口命令最大重发次数,默认1
    [in]receiveRetryTimes 串口命令接收最大重试次数,默认50次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认100毫秒
  • 返回值: true:成功 false:失败
  • 说明: 向Server发送进入产测命令用以开启后续测试。

ZigbeeComServer.WriteAuthKey写入固件授权码

  • 函数:
    bool WriteAuthKey(WriteAuthKeyReq req, out BaseRsp rsp, int sendRetryTimes = 1, int receiveRetryTimes = 20, int receiveRetryInterval = 1000)
  • 参数:
    [in]req 写入固件授权码参数
    [out]rsp 写入固件授权码返回结果
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认20次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败
  • 说明: 通过Server向固件向设备写入授权信息。

ZigbeeComServer.ReadAuthKey读取固件授权码

  • 函数:
    bool ReadAuthKey (out ReadAuthKeyRsp rsp, int sendRetryTimes = 1, int
    receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [out]rsp 读取的固件授权码信息
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认6次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败
  • 说明: 通过Server读取固件授权信息。

ZigbeeComServer.ReadMAC读取MAC

  • 函数: bool ReadMac(out MACRsp rsp, int sendRetryTimes = 1, int receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [out]rsp 读取MAC的返回值
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认6次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败 mac:mac值
  • 说明: 通过Server读取MAC信息。

ZigbeeComServer.WritePID写入PID

  • 函数:
    bool WritePID (PIDReq req, out BaseRsp rsp , int sendRetryTimes = 1, int
    receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [in]req 写入固件PID参数
    [out]rsp 写入固件PID返回结果
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认20次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败 pid:pid值
  • 说明: 通过Server写入PID信息。

ZigbeeComServer.ReadPID读取PID

  • 函数:
    bool ReadPID(out PIDRsp rsp, int sendRetryTimes = 1, int
    receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [out]rsp 读取PID的返回值
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认6次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败 pid:pid值
  • 说明: 通过Server读取PID信息。

ZigbeeComServer.WriteFirmwareKey写入固件签名

  • 函数:
    bool WriteFirmwareKey (WriteFirmwareKeyReq req, out BaseRsp rsp , int sendRetryTimes = 1, int receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [in]req 写入固件签名信息参数
    [out]rsp 写入固件签名信息返回结果
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认20次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败 Key:固件签名值
  • 说明: 通过Server写入固件签名信息。

ZigbeeComServer.DownloadConfig写入OEM配置文件

  • 函数:
    bool DownloadConfig (byte[] req, out ConfigRsp rsp , int sendRetryTimes = 1, int
    receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [in]req 写入OEM配置文件byte数据
    [out]rsp 写入OEM配置文件返回结果
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认20次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败 crc32:配置文件的CRC32校验值
  • 说明: 通过Server写入配置文件信息。

ZigbeeComServer.QueryConfig查询OEM配置文件信息

  • 函数:
    bool QueryConfig (out ConfigRsp rsp , int sendRetryTimes = 1, int
    receiveRetryTimes = 6, int receiveRetryInterval = 1000)
  • 参数:
    [out]rsp 查询OEM配置文件返回结果
    [int]sendRestryTimes 串口命令最大发送次数,默认1
    [int]receiveRetryTimes 串口命令接收最大重试次数,默认20次
    [in]retryInterval 串口命令接收重试间隔时间,单位毫秒,默认1000毫秒
  • 返回值: true:成功 false:失败 crc32: 配置文件的CRC32校验值
  • 说明: 通过Server查询设备中的OEM配置文件信息。

涂鸦网络通信库类说明

涂鸦 IoT 端运行环境枚举 _LoginUrlType

enum _LoginUrlType
{
	Release = 0,	//线上环境,默认
	Preview = 1,  //预发环境
	Daily = 2     //日常环境
}

账号登录请求参数 UserLoginReqParas

public class UserLoginReqParas
{
	public string username;  //用户名,必填
	public string password;  //密码,必填  
	public string token;     //token,非必填
}

登录权限数据

public class PermissionsData
{
	public string permissionCode;  // 登录权限码
	public string permissionName;  // 登录权限名称
}

账号登录返回结果

public class UserLoginResult
{
	public string sessionId;                 // 登录session id
	public List<PermissionsData> permissions; // 登录权限数据列表
}

账号登录返回参数 UserLoginRspParas

public class UserLoginRspParas{
	public bool success;        //接口执行结果,成功为true,失败为false
	public string errorMsg;      // 错误信息
	public string errorCode;     //错误码
	public string status;         // 操作状态,包含一些特定的错误信息或状态
	public long t;              //接口调用时间
	public UserLoginResult result; // 账号登录返回结果
}

授权请求参数 TokenAuthReq

public class TokenAuthReq    
{
        public string sn ;      //产品序列号
        public string tokenId ;  //激活码
        public string sftVersion ;//软件版本号
        public string muid ;    //乐鑫芯片的muid,其他芯片传空字符串
        public string mac ;     // 产品的mac地址
        public string chipId ;   // 加密芯片的芯片ID,无加密芯片传空串
}

授权结果 TokenAuthResult

public class TokenAuthResult
{
	public string uuid;       //模块uuid
	public string mac;       //授权的mac
	public string accessKey;  //授权秘钥
}

授权请求返回结果 TokenAuthRsp

public class TokenAuthRsp{
    	public bool success; //接口执行结果,成功为true,失败为false
    	public string errorMsg; //错误信息
	public string errorCode; //错误代码
	public string status;    //操作状态
	public long t; //接口调用时间戳
    	public ProdTokenAuthResult result; //授权结果只有串口执行结果为true的时候有意义
}

获取Token信息请求参数 GetTokenInfoReqParas

public class GetTokenInfoReqParas
{
	public string tokenId; //激活码
	public string type;   //授权类型“wifi”
	public string sftVersion; //软件版本
	public string softwareName; //软件名称
}

Token绑定信息 TokenInfo

public class TokenInfo
{
	public int amount; //授权总数
	public string firmwareConfigMd5; //配置文件md5校验码
	public string firmwareConfigUrl; //配置文件下载地址
	public string snPrefix; //sn的前缀
	public string firmwareChip; //固件芯片平台
	public string firmwareProtocolType; //固件协议类型
	public string productionFirmwareMd5; //生产固件md5校验码
	public string productionFirmwareUrl; //生产固件下载地址
	public bool supportFirmwareConfig; //是否支持oem配置
	public string productionSubFirmwareUrl; //子固件下载地址
	public string moduleModelChip; //模组芯片平台
	public string productId; //产品ID
	public string type; //激活码类型
	public string firmwareKey; //固件key
	public string macRule; //是否云端分配mac,“0”:不分配mac,“1”:分配mac
	public bool oem; //是否是oem固件
	public string countryCode; //国家码
	public string productionSubFirmwareMd5; //子固件md5校验码
	public string userareaFirmwareUrl; //用户区固件下载地址
	public string userareaFirmwareMd5; //用户区固件md5校验码
	public bool refreshUserarea; //是否刷新用户区固件
	public long effectiveTime; //激活码生效时间
	public int expires; //有效期
	public string id; //激活码
	public string productionId; //生产批号
	public bool test; //是否产测
	public int usedAmount; //已授权数量
	public string wifiHotspotName; //热点名称
	public string wifiPassword; //热点密码
	public string desc; //激活码描述信息
	public string manufacturer; //生产工厂
	public string productKey; //预留
	public string fingerprint; //固件名称
	public string firmwareVersion; //固件版本
	public int firmwareType; //预留
	public bool gpioTest; //预留
	public bool wifiTest; //预留
	public string baselineVersion; //预留
	public string flashRunSize; //flash大小,单位Mbits
}

授权请求返回结果

public class TokenAuthRsp
{
   	public bool success; //接口执行结果,成功为true,失败为false
	public string errorMsg; //错误信息
	public string errorCode; //错误码
	public string status; //操作状态,包含一些特定的错误信息或状态
	public long t; //接口调用时间戳
	public ProdTokenAuthResult result; //授权结果数据
}

授权信息校验请求参数 TokenAuthValidateReq

public class TokenAuthValidateReq    {
	public string tokenId ; //激活码
	public string sn; //产品序列号
	public string mac ; //mac地址
	public string uuid ; //授权产品uuid
	public string muid ; //产品芯片的id
	public string accessKey ; //授权秘钥
	public string wifiHotspotName ; //热点名称
	public string wifiPassword ; //热点密码
	public string chipId ; //加密芯片id
	public string sftVersion ; //软件版本
}

授权信息校验结果 TokenAuthValidateResult

public class TokenAuthValidateResult
{
	public bool result; //授权校验结果
	public string failureDepict; //失败原因描述信息
}

授权校验请求返回结果 TokenAuthValidateRsp

public class TokenAuthValidateRsp : BaseResponse
{
   	public bool success; //授权校验执行结果
	public string errorMsg; //错误信息
	public string errorCode; //错误码
	public string status; //操作状态,包含一些特定的错误信息或状态
	public long t; //时间戳
	public ProdTokenAuthValidateResult result;  //  授权校验结果
}

授权日志信息 AuthLog

public class AuthLog
{
	public string hid; //wifi类授权为mac地址
	public string uuid; //授权uuid
	public string tokenId; //激活码
	public string sn; //产品sn
	public string activeTime; //时间戳
	public string firmwareInfo; //固件指纹,包含固件名称和版本
	public string gpio; //gpio测试结果“成功”或“失败”
	public string rssi; //wifi信号强度测试结果
	public int authStatus; //授权状态,1:成功 ,0:失败
	public string authDepict; //授权状态描述,“成功”或“失败”
	public string countryCode; //国家码
 }

添加授权日志返回结果 AddAuthLogReqParas

public class AddAuthLogReqParas
{
   	public AuthLog log; //授权日志数据集
}

添加授权日志返回结果 AddAuthLogRspParas

public class AddAuthLogRspParas{
    	public bool success; //接口执行结果
	public string errorMsg; //错误信息
	public string errorCode; //错误代码
	public string status; //操作状态,包含一些特定的错误信息或状态
	public long t; //时间戳
}

涂鸦Zigbee设备固件通信库类说明

串口信息设置参数 ComPortParas

public class ComPortParas
{
	public string PortName; //串口号如“COM3”
	public int BaudRate ; //波特率
	public int DataBits ; //数据为
	public Parity Parity ; //奇偶校验
	public StopBits StopBits ; //停止位数
	public int ReadBufferSize ; //读缓存大小
	public int WriteBufferSize ; //写缓存大小
	public int ReadTimeout ; //读超时时间,单位毫秒
}

TCP信息设置参数 TCPClientParas

public class TCAppientParas
{
   public string HostName { get; set; }//目标IP地址
   public int Port { get; set; }//目标端口
   public int? ReceiveBufferSize { get; set; }//发送缓冲区大小
   public int? SendBufferSize { get; set; }//接受缓冲区大小
   public int? ReceiveTimeout { get; set; }//超时时间
}

写入设备固件信息 WriteConfigInfoReq

public class WriteConfigInfoReq
{
	public string Auzkey; //授权秘钥
	public string UUID; //授权uuid
	public bool PID; //产品PID
	public bool IsProductionTest; //是否为整机测试
	public string ApSSID; //授权的热点名称
	Public string ApPWD;//授权的热点密码
}

固件请求返回信息 BaseRsp

public class BaseRsp
{
	public bool Ret; //返回结果:true:成功 false:失败
}

固件授权信息读取结果

public class GetModuleInformationRsp
{
	public string AuthKey; //授App
	public string UUID; //授权uuid
	public string PID; //产品PID
	public bool IsProductionTest; //是否为整机测试
	public string ApSSID; //授权的热点名称
	Public string ApPWD;//授权的热点密码
}

获取授权信息示例代码(C#)

此代码进仅演示从涂鸦 IoT 端获取授权信息并完成授权校验的部分内容。(不包含写mac地址,写授权信息等其他功能)。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TuyaCloudIfLib;
using Newtonsoft.Json;
//1. Login
UserLoginReqParas loginReq= new UserLoginReqParas();
loginReq.username = "******";
loginReq.password = "######";
UserLoginRspParas loginRsp= TuyaCloudIf.UserLogin(loginReq);
if (loginRsp.success == false)
	MessageBox.Show(loginRsp.errorMsg);
else
	MessageBox.Show("Login successfully !");

//2. Get token information
GetTokenInfoReqParas GetTokenReq = new GetTokenInfoReqParas();
GetTokenReq.tokenId= "XRVAygmzpvRZNxYN";
GetTokenInfoRspParas GetTokenRsp = TuyaCloudIf.GetTokenInfo(GetTokenReq);
if(GetTokenRsp.success == false)
	return false;
//3. Get firmware signs
 var req = new TuyaCloudIfLib.GetModuleSignReqParas
 {
        mac = mac,
        tokenId = tokenId,
        firmwareName = "tuya_zigbee"
  };
  var rsp = TuyaCloudIfLib.TuyaCloudIf.GetModuleSign(req);
  if (rsp.success == false)
  {
         errMsg += rsp.errorMsg;
         return false;
  }
   else
  {
         sign = rsp.result.sign;
         return true;
    }
//4. Auth
TokenAuthReq AuthReq = new TokenAuthReq();
AuthReq.sn = "sn0000000002";
AuthReq.mac = "ecfabc9a86f0";//mac read from module
AuthReq.sftVersion = "test_app";
AuthReq.muid = "";// muid read from module
AuthReq.chipId = "";
AuthReq.tokenId = "*****************";//tokenId
TokenAuthRsp AuthRsp= TuyaCloudIf.TokenAuth(AuthReq);
If(AuthRsp.success== false)
	Return false;
//5. Auth validate
TokenAuthValidateReq ValidateReq = new TokenAuthValidateReq();
ValidateReq.accessKey = AuthRsp.result.accessKey;
ValidateReq.muid = "";//read 
ValidateReq.sn = "sn0000000002";
ValidateReq.mac = AuthRsp.result.mac;
ValidateReq.tokenId = "*****************";
ValidateReq.uuid = AuthRsp.result.uuid;
ValidateReq.chipId = "";
ValidateReq.wifiHotspotName = "";
ValidateReq.wifiPassword = "";
ValidateReq.sftVersion = "test_app";
TokenAuthValidateRsp ValidateRsp= TuyaCloudIf.TokenAuthValidate(ValidateReq);
if (!ValidateRsp.success)
	MessageBox.Show("Validate fail !");
else
	MessageBox.Show("Validate successfully!");