整体方案说明
一、整体架构交互
二、场景交互
2.1 开发者登录时序图
注意:开发者每次调用涂鸦的服务都需要带上token信息,以此来确保访问信息的合法性,token信息失效后,需要再次调用login接口获取签证信息。
登录接口信息:
用户登录
允许已授权的用户通过此接口更新自己的信息。
URL:
POST:/v1.0/openapi/visual/d/user/login
Method:
POST
需要登录:是
需要鉴权:是
请求参数
参数 | 类型 | 说明 |
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 实时视频时序图
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 设备上传云存储时序图
云存储业务
云存储开始上传
/**
* @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查看云存储时序图
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) {
}];