更新时间:2024-06-27 03:26:17下载pdf
App SDK 通过 DP(Data Point)控制设备,并且通过标准化的 DP 实现设备与 App 之间的交互。IPC SDK 基于智能生活 App SDK,封装了一套智能摄像机的特有 DP。
ThingSmartCameraDPManager
提供与设备信息通信(下发控制指令、查询当前 DP 数据)的能力。ThingSmartCameraDPObserver
提供监听设备功能状态变化的能力。接口说明
- (instancetype)initWithDeviceId:(NSString *)devId;
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
接口说明
/// 添加设备状态变化监听
- (void)addObserver:(id<ThingSmartCameraDPObserver>)observer;
/// 移除设备状态变化监听
- (void)removeObserver:(id<ThingSmartCameraDPObserver>)observer;
参数说明
参数 | 说明 |
---|---|
observer | 接口监听,需要实现 ThingSmartCameraDPObserver 协议 |
接口说明
该方法可以查询到 DP ID 对应的 DP Code。
- (NSString *)dpCodeWithDpId:(NSString *)dpId;
示例代码
#import <ThingSmartCameraKit/ThingSmartCameraKit.h>
NSString *dpCode = [deviceModel dpCodeWithDpId:dpId];
接口说明
该方法可以查询到 DP Code 对应的 DP ID。
- (NSString *)dpIdWithDpCode:(NSString *)dpCode;
示例代码
#import <ThingSmartCameraKit/ThingSmartCameraKit.h>
NSString *dpId = [deviceModel dpIdWithDpCode:dpCode];
接口说明
- (BOOL)isSupportDPCode:(ThingSmartCameraDPKey)DPCode;
参数说明
参数 | 说明 |
---|---|
DPCode | 设备功能 code |
返回值
类型 | 说明 |
---|---|
BOOL | 是否支持指定的DP Code |
接口说明
查询设备功能的值,直接获取缓存中的值,如果不支持此设备功能,返回 nil。
- (id)valueForDPCode:(ThingSmartCameraDPKey)DPCode;
参数说明
参数 | 说明 |
---|---|
DPCode | 设备功能 code |
返回值
参数 | 说明 |
---|---|
id | 需要根据对应的设备点类型,转换成对应类型的值,详情可以参考下文 常用 DP |
除了存储卡相关功能外,不建议使用该接口。
接口说明
- (void)valueForDPCode:(ThingSmartCameraDPKey)DPCode success:(ThingSuccessID)success failure:(ThingFailureError)failure;
参数说明
参数 | 说明 |
---|---|
DPCode | 设备功能 code |
success | 成功回调,返回指定设备功能的当前值 |
failure | 失败回调,error 表示错误信息 |
接口说明
设置设备功能的值。
- (void)setValue:(id)value forDPCode:(ThingSmartCameraDPKey)DPCode success:(ThingSuccessID)success failure:(ThingFailureError)failure;
参数说明
参数 | 说明 |
---|---|
value | 设备功能的值,数值型或者布尔型的值,需要包装成 NSNumber |
DPCode | 设备功能 code |
success | 成功回调,并返回指定设备功能当前的值 |
failure | 失败回调,error 表示错误信息 |
NULL
到设备端,正常情况下,设备端收到 NULL
的设备功能数据后,会主动上报一次对应设备功能的值。但是这个行为是由摄像机制造商实现的。如果制造商没有实现这个逻辑,下发 NULL
后会导致摄像机固件程序崩溃。所以在使用此接口时,请向制造商确定他们是否对这些设备功能正确处理了 NULL
的逻辑。ThingSmartCameraDPObserver
协议提供监听设备主动上报的设备功能状态变化的能力。下发设置设备功能的值以后,设备也会再主动上报一次更新后的值。
接口说明
设备功能状态变化代理回调。
- (void)cameraDPDidUpdate:(ThingSmartCameraDPManager *)manager dps:(NSDictionary *)dpsData;
参数说明
参数 | 说明 |
---|---|
manager | 触发回调的 ThingSmartCameraDPManager 对象 |
dpsData | 发生变化的设备功能的 ID 和当前的值,格式为 { dpName: value } |
示例代码
Objective-C:
- (void)viewDidLoad {
[super viewDidLoad];
self.dpManager = [[ThingSmartCameraDPManager alloc] initWithDeviceId:self.devId];
[self.dpManager addObserver:self];
if ([self.dpManager isSupportDPCode:@"basic_osd"]){
self.osdSwitch = [[self.dpManager valueForDPCode:@"basic_osd"] boolValue];
}
}
- (void)openOSD {
if ([self.dpManager isSupportDPCode:@"basic_osd"]) {
__weak typeof(self) weakSelf = self;
[self.dpManager setValue:@(YES) forDPCode:@"basic_osd" success:^(id result) {
weakSelf.osdSwitch = [result boolValue];
} failure:^(NSError *error) {
// 网络错误
}];
}
}
#pragma mark - ThingSmartCameraDPObserver
- (void)cameraDPDidUpdate:(ThingSmartCameraDPManager *)manager dps:(NSDictionary *)dpsData {
// 如果变化的设备功能中包含时间水印开关的设备功能
if ([dpsData objectForKey:ThingSmartCameraBasicOSDDPName]) {
self.osdSwitch = [[dpsData objectForKey:ThingSmartCameraBasicOSDDPName] boolValue];
}
}
Swift:
override func viewDidLoad() {
super.viewDidLoad()
self.dpManager = ThingSmartCameraDPManager(deviceId: self.devId)
self.dpManager.addObserver(self)
if self.dpManager.isSupportDPCode("basic_osd") {
self.osdSwitch = self.dpManager.value(forDPCode: "basic_osd") as! Bool
}
}
func openOSD() {
// 判断设备是否支持此设备功能
guard self.dpManager.isSupportDPCode("basic_osd") else {
return
}
self.dpManager.setValue(true, forDPCode: "basic_osd", success: { result in
self.osdSwitch = result as! Bool
}) { _ in
// 网络错误
}
}
func cameraDPDidUpdate(_ manager: ThingSmartCameraDPManager!, dps dpsData: [AnyHashable : Any]!) {
// 如果变化的设备功能中包含时间水印开关的功能
if let osdValue = dpsData[ThingSmartCameraDPKey.basicOSDDPName] {
self.osdSwitch = osdValue as! Bool
}
}
您可以在 涂鸦 IoT 开发平台 上,查看摄像机类产品的标准 DP 功能定义。
也可以参考这篇文档:常用 DP
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈