整体方案说明

更新时间:

一、整体架构交互

image

二、场景交互

2.1 开发者登录时序图

image


说明

注意:开发者每次调用涂鸦的服务都需要带上token信息,以此来确保访问信息的合法性,token信息失效后,需要再次调用login接口获取签证信息。

登录接口信息:

用户登录

允许已授权的用户通过此接口更新自己的信息。

  • URLPOST:/v1.0/openapi/visual/d/user/login

  • MethodPOST

  • 需要登录

  • 需要鉴权

请求参数

参数

类型

说明

userName

String

开发者账户名

password

String

开发者密码

deviceList

List<Object>

需要授权的设备列表

DeviceInfo

Object

设备对象

productKey

String

设备产品Key

deviceName

String

设备名称

请求示例

{
    "userName": "userName",		// 开发者账户名
    "password": "password",		// 开发者密码
    "deviceList": [				// 需要授权的设备列表
        {
            "productKey": "wkNCAsnnlsYSnI6n",	// 设备产品Key
            "deviceName": "2ac4d7cffa"			// 设备名称
        }
    ]
}

成功响应

条件:请求参数合法,并且用户身份校验通过。

状态码:200 OK

参数

类型

说明

success

Boolean

请求结果状态

msg

String

错误信息

t

Long

请求时间

data

Object

结果对象

deviceVisualTokenList

List<Object>

对象集合

productKey

String

设备产品Key

deviceName

String

设备名称

visualToken

String

设备token信息

expire

Integer

过期时间(秒)

响应示例

{
    "success": true,
    "msg": null,
    "t": 1737621418759,
    "data": {
        "deviceVisualTokenList": [
            {
                "productKey": "wkNCAsnnlsYSnI6n",	// 设备产品Key
                "deviceName": "2ac4d7cffa",			// 设备名称
                "visualToken": "eyJhbGciNiJ9.xxx.5f5Nd5JNaP-O2LBmYJZO0_9thFU",
            	  "expire": 3600						// 过期时间,单位秒。
            }
        ]
    }
}

注意事项

说明

visualToken是每个设备唯一的访问凭证


2.2 实时视频时序图

image


IOS端为例:

发起连接

接口说明:发起p2p连接

/// connect
- (void)connect;

示例代码:

ThingSmartCameraDevice *device = [[ThingSmartCameraDevice alloc] createCameraWithProductKey:@"your productId" deviceSecret:@"your device secret" deviceName:@"you device name"];

[device connect];

连接成功回调:

发起connect后,如果连接成功,会回调下面这个方法

连接成功回调:

/// Them camera did connected
/// @param camera camera
- (void)cameraDidConnected:(id<ThingSmartCameraTypeProtocol>)camera;

连接失败回调:

type 对应 ThingSmartCameraVisualTypeConnect

/// The operate did occurred error
/// @param camera camera
/// @param errCode error code
/// @param type opera type
- (void)camera:(id<ThingSmartCameraTypeProtocol>)camera didOccurredError:(NSInteger)errCode type:(ThingSmartCameraVisualType)type;

2.3 设备上传云存储时序图

image

云存储业务

  • 云存储开始上传

/**
 * @brief    report an event, cloud storage will start
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_imm_cloud_storage_event_start(VOID);
  • 云存储结束上传

/**
 * @brief    report the end of event, synchronous api
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_imm_cloud_storage_event_stop(VOID);


2.4 APP查看云存储时序图

image


IOS端为例:

获取录像片段

获取云存储播放片段信息

/// load cloud datas
/// - Parameters:
///   - params: params
///   - success: success callback
///   - fail: fail callback
- (void)loadCloudData:(ThingSmarCameraLiteCloudParamas *)params success:(ThingSmartCameraCloudDataHandler)success fail:(ThingSmartCameraCloudDataFailHandler)fail;

ThingSmarCameraLiteCloudParamas 参数说明

参数

类型

说明

startTime

NSTimeInterval

开始时间

endTime

NSTimeInterval

结束时间

pageIndex

NSInteger

分页下标

pageSize

NSInteger

分页大小

metaData

id

录像片段信息

示例代码

ThingSmarCameraLiteCloudParamas *params = [[ThingSmarCameraLiteCloudParamas alloc] init];
params.startTime = 12345;
params.endTime = 67890;
params.pageIndex = 0;
params.pageSize = 20;
[self.cloudManager loadCloudData:params success:^(NSString * _Nonnull jsonData) {
        
} fail:^(NSError * _Nonnull error) {
        
}];