NB 设备授权说明

Last Updated on : 2023-07-06 06:05:05download

NB 授权 SDK 是基于涂鸦云和涂鸦云接口开发的 SDK,用于 NB 设备的授权和授权校验。本文档主要介绍 NB 授权 SDK中涂鸦网络通信库和 Demo。

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

下载地址

NB 授权 SDK

目录结构

│  readme.txt
└─lib
        BouncyCastle.Crypto.dll
        Newtonsoft.Json.dll
        TuyaCloudIfLib.dll

主要库介绍

涂鸦网络通信库用于与涂鸦云的通信。主要包括账号登录、获取授权码信息、模块授权、授权校验功能,接口说明如下。

接口 说明
UserLogin ( ) 账号登录
GetWorkOrderInfo( ) 获取工单信息
GetTokenInfo ( ) 获取 Token 信息
GetCraftLine ( ) 获取工艺路线
QueryMacSN( ) 查询 IMEI 或 PSK
StationReset( ) 工位重置
Auth ( ) 授权
AuthValidate ( ) 授权有效性校验
StationStatusCommit( ) 提交工位状态

说明: 具体接口说明,请参考涂鸦云网络通信 SDK 说明

流程说明

授权流程

NB 设备授权说明

代码示例

           string workorder = "SQBF03GTZ";
           //账号登录
           UserLoginReqParas req = new UserLoginReqParas();
            req.username = "xxxxx";
            req.password = "xxxxx";
            UserLoginRspParas rsp = TuyaCloudIf.UserLogin(req);
            if (rsp.success == false)
                MessageBox.Show(rsp.errorMsg);
            //1.获取工单信息
            GetWorkOrderInfoReq getWorkOrderInfoReq = new GetWorkOrderInfoReq();
            getWorkOrderInfoReq.orderCode = workorder;
            GetWorkOrderInfoRsp getWorkOrderInfoRsp = TuyaCloudIf.GetWorkOrderInfo(getWorkOrderInfoReq);
            if (getWorkOrderInfoRsp.success)
                MessageBox.Show("getWorkOrderInfo success!\r\n" + getWorkOrderInfoRsp.ToJsonString(true));
            else
            {
                MessageBox.Show("getWorkOrderInfo fail!\r\n" + getWorkOrderInfoRsp.errorMsg);
                return;
            }

            //查询token信息
            GetTokenInfoReqParas getTokenInfoReqParas = new GetTokenInfoReqParas();
            getTokenInfoReqParas.tokenId = getWorkOrderInfoRsp.result.tokenId;
            GetTokenInfoRspParas getTokenInfoRspParas = TuyaCloudIf.GetTokenInfo(getTokenInfoReqParas);
            if (getTokenInfoRspParas.success)
                MessageBox.Show("getTokenInfo success!\r\n" + getTokenInfoRspParas.ToJsonString(true));
            else
            {
                MessageBox.Show("getTokenInfo fail!\r\n" + getTokenInfoRspParas.errorMsg);
                return;
            }

            //2获取工艺路线
            GetCraftLineReq getCraftLineReq = new GetCraftLineReq();
            getCraftLineReq.orderCode = workorder;
            GetCraftLineRsp getCraftLineRsp = TuyaCloudIf.GetCraftLine(getCraftLineReq);
            if (getCraftLineRsp.success)
                MessageBox.Show("getCraftLine success!\r\n" + getCraftLineRsp.ToJsonString(true));
            else
            {
                MessageBox.Show("getCraftLine fail!\r\n" + getCraftLineRsp.errorMsg);
                return;
            }

            //如果是NB,申请IMEI,和psk
            if (getTokenInfoRspParas.result.type.Contains("nb"))
            {
                QueryMacSNReqParas queryMacSNReqParas = new QueryMacSNReqParas_2();
                queryMacSNReqParas.orderCode = workorder;
                queryMacSNReqParas.tokenId = getTokenInfoRspParas.result.id;
                queryMacSNReqParas.keyType = "sn";
                queryMacSNReqParas.key = workorder + "00001";
                queryMacSNReqParas.limit = 1;
                queryMacSNReqParas.printed = "Y";
                queryMacSNReqParas.offset = 0;
                QueryMacSNRspParas queryMacSNRspParas = TuyaCloudIf.QueryMacSN(queryMacSNReqParas);
                if(!queryMacSNRspParas.success)
                {
                    MessageBox.Show("queryMacSNRspParas fail,\r\n" + queryMacSNRspParas.errorMsg);
                    return;
                }
                else
                {
                    MessageBox.Show("queryMacSNRspParas success!\r\n" + 
                    queryMacSNRspParas.ToJsonString(true));
                }
            }

            //3.工位重置
            StationResetReq stationResetReq = new StationResetReq();
            stationResetReq.sn = "SQBF03GTZ00001";
            stationResetReq.orderCode = "SQBF03GTZ";
            stationResetReq.stationCode = getCraftLineRsp.result.nodeList[0].code;
            StationResetRsp stationResetRsp = TuyaCloudIf.StationReset(stationResetReq);
            if(stationResetRsp.success)
                MessageBox.Show("stationResetRsp success!\r\n" + stationResetRsp.ToJsonString(true));
            else
            {
                MessageBox.Show("stationResetRsp fail!\r\n" + stationResetRsp.errorMsg);
                return;
            }

            //3.auth
            AuthReq authReq = new AuthReq();
            authReq.requestId = stationResetRsp.result.requestId;
            authReq.tokenId = getWorkOrderInfoRsp.result.tokenId;
            authReq.sn = workorder + "00001";
            authReq.mac = "123456789012";
            authReq.muid = "123456789012";
            authReq.chipId = "";
            authReq.sftVersion = "9.9.9";
            AuthRsp authRsp=TuyaCloudIf.Auth(authReq);
            if (!authRsp.success)
            {
                MessageBox.Show("Auth fail,\r\n" + authRsp.errorMsg);
                return;
            }
            else
            {
                MessageBox.Show("Auth success!\r\n" + authRsp.ToJsonString(true));
            }

            AuthValidateReq authValidateReq = new AuthValidateReq();
            authValidateReq.requestId = stationResetRsp.result.requestId;
            authValidateReq.tokenId = getWorkOrderInfoRsp.result.tokenId;
            authValidateReq.accessKey = authRsp.result.accessKey;
            authValidateReq.mac = authRsp.result.mac;
            authValidateReq.uuid = authRsp.result.uuid;
            authValidateReq.wifiHotspotName = getTokenInfoRspParas.result.wifiHotspotName;
            authValidateReq.wifiPassword = getTokenInfoRspParas.result.wifiPassword;
            authValidateReq.muid = "123456789012";
            authValidateReq.nodeCode = stationResetReq.stationCode;
            authValidateReq.sn= workorder + "00001";
            authValidateReq.sftVersion = "9.9.9";
            AuthValidateRsp authValidateRsp = TuyaCloudIf.AuthValidate(authValidateReq);
            if(!authValidateRsp.success)
            {
                MessageBox.Show("authValidate fail!\r\n" + authValidateRsp.errorMsg + 
                authValidateRsp.ToJsonString(true));
                return;
            }
            else
            {
                MessageBox.Show("authValidate success!\r\n" + authValidateRsp.ToJsonString(true));
            }

            //Station status commit
            StationStatusCommitReq stationStatusCommitReq = new StationStatusCommitReq();
            stationStatusCommitReq.sn= workorder + "00001";
            stationStatusCommitReq.orderCode = workorder;
            stationStatusCommitReq.requestId = stationResetRsp.result.requestId;
            stationStatusCommitReq.stationCode = stationResetReq.stationCode;
            stationStatusCommitReq.status = 1;//1:授权成功,0:失败

            StationStatusCommitRsp stationStatusCommitRsp= 
            TuyaCloudIf.StationStatusCommit(stationStatusCommitReq);
            if (!stationStatusCommitRsp.success)
            {
                MessageBox.Show("stationStatusCommit fail!\r\n" + stationStatusCommitRsp.errorMsg);
                return;
            }
            else
            {
                MessageBox.Show("stationStatusCommit success!\r\n" + 
                                              stationStatusCommitRsp.ToJsonString(true));
            }