更新时间:2024-06-05 02:46:38下载pdf
涂鸦通过 DP(设备功能)来控制设备,并且通过标准化的设备功能实现设备与 App 之间的交互。IPC SDK 基于 Cube App SDK 封装了一套智能摄像机的扩展功能。
有关常规智能设备的控制,请参考 设备控制。
App 和云端通过设备功能来控制智能设备,并且通过标准化的设备功能实现设备与 App 之间的交互。有关 IPC SDK 中定义的所有设备功能,请参考下文 设备功能常量。
IPC 设备功能控制涉及到的额外的类如下所示:
类名(协议名) | 说明 |
---|---|
ThingSmartCameraDPManager |
提供通过设备功能与设备通信的能力 |
ThingSmartCameraDPObserver |
提供监听设备功能状态变化的能力 |
接口说明
- (instancetype)initWithDeviceId:(NSString *)devId;
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
接口说明
/// 添加设备状态变化监听
- (void)addObserver:(id<ThingSmartCameraDPObserver>)observer;
/// 移除设备状态变化监听
- (void)removeObserver:(id<ThingSmartCameraDPObserver>)observer;
参数说明
参数 | 说明 |
---|---|
observer | 接口监听,需要实现 ThingSmartCameraDPObserver 协议 |
接口说明
- (BOOL)isSupportDP:(ThingSmartCameraDPKey)dpName;
参数说明
参数 | 说明 |
---|---|
dpName | 设备功能 ID |
返回值
类型 | 说明 |
---|---|
BOOL | 是否支持指定的设备功能 |
接口说明
查询设备功能的值,直接获取缓存中的值。如果不支持此设备功能,返回 nil
。
- (id)valueForDP:(ThingSmartCameraDPKey)dpName;
参数说明
参数 | 说明 |
---|---|
dpName | 设备功能的 ID |
返回值
参数 | 说明 |
---|---|
id | 需要根据对应的设备点类型,转换成对应类型的值,详情可以参考下文 设备功能常量 |
除了存储卡相关功能外,不建议使用该接口。
接口说明
- (void)valueForDP:(ThingSmartCameraDPKey)dpName success:(TYSuccessID)success failure:(TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
dpName | 设备功能的 ID |
success | 成功回调,返回指定设备功能的当前值 |
failure | 失败回调,error 表示错误信息 |
接口说明
设置设备功能的值。
- (void)setValue:(id)value forDP:(ThingSmartCameraDPKey)dpName success:(TYSuccessID)success failure:(TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
value | 设备功能的值,数值型或者布尔型的值,需要包装成 NSNumber |
dpName | 设备功能的 ID |
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];
self.osdSwitch = [[self.dpManager valueForDP:ThingSmartCameraBasicOSDDPName] boolValue];
}
- (void)openOSD {
if ([self.dpManager isSupportDP:ThingSmartCameraBasicOSDDPName]) {
[self.dpManager setValue:@(YES) forDP:ThingSmartCameraBasicOSDDPName success:^(id result) {
self.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.isSupportDP(.basicOSDDPName) {
self.osdSwitch = self.dpManager.value(forDP: .basicOSDDPName) as! Bool
}
}
func openOSD() {
// 判断设备是否支持此设备功能
guard self.dpManager.isSupportDP(.basicOSDDPName) else {
return
}
self.dpManager.setValue(true, forDP: .basicOSDDPName, 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
}
}
目前已开放的摄像机标准设备功能,都以字符串常量的形式定义在 ThingSmartCameraDPManager.h
中,类型重定义为 ThingSmartCameraDPKey
。常量名以 ThingSmartCamera
+功能
+DPName
的形式组成。本小节介绍 IPC SDK 中定义的所有设备功能。
设备功能 | 数据类型 | 取值范围 | 说明 |
---|---|---|---|
BasicIndicator | Boolean |
|
正常状态下的指示灯开关 |
BasicFlip | Boolean |
|
视频画面翻转 |
BasicOSD | Boolean |
|
视频时间水印 |
BasicPrivate | Boolean |
|
隐私模式,打开后,摄像机不采集音视频 |
BasicNightvision | String |
|
摄像机夜视功能 |
设备功能 | 数据类型 | 取值范围 | 说明 |
---|---|---|---|
BasicPIR | String |
|
人体红外线感应 |
MotionDetect | Boolean |
|
移动侦测报警开关 |
MotionSensitivity | String |
|
移动侦测灵敏度 |
设备功能 | 数据类型 | 取值范围 | 说明 |
---|---|---|---|
DecibelDetect | Boolean |
|
声音侦测报警开关 |
DecibelSensitivity | String |
|
声音侦测灵敏度 |
设备功能 | 数据类型 | 取值范围 | 说明 |
---|---|---|---|
SDCardStatus | Enum |
|
存储卡状态,只能读取 |
SDCardStorage | String | - | 存储卡容量,只能读取 |
SDCardFormat | Boolean | YES :开始格式化 |
格式化存储卡,只能下发 |
SDCardFormatState | Integer |
|
存储卡格式化状态或者进度,只能读取 |
SDCardRecord | Boolean |
|
设备视频录制开关,视频录像保存在存储卡中 |
RecordMode | String |
|
设备存储卡录像模式 |
SDCardStorage
的值是一个由总容量、已使用容量、空闲容量、间隔符(|
)拼接起来的字符串,单位是 kb
。例如,16777216|1048576|15728640
表示总容量是 16Gb,已经使用 1Gb,剩余空闲容量为 15Gb。
设备功能 | 数据类型 | 取值范围 | 说明 |
---|---|---|---|
PTZControl | String |
|
控制云台摄像机向指定方向转动,只能下发 |
PTZStop | Boolean | YES :停止转动 |
停止云台摄像机的转动 |
设备功能 | 数据类型 | 取值范围 | 说明 |
---|---|---|---|
WirelessAwake | Boolean |
|
设备是否休眠,下发时,只能下发 YES 唤醒设备 |
WirelessPowerMode | String |
|
设备供电模式 |
WirelessElectricity | Integer | 1 -100 :电量 |
设备当前电量百分比,只能读取 |
WirelessLowpower | Integer | 1 -100 :低电量阈值 |
当设备电量低于这个数值时,触发通知报警 |
WirelessBatteryLock | Boolean |
|
设备电池锁,关闭时不可以直接拆卸电池 |
字符串枚举类型设备功能的取值范围,在 IPC SDK 中定义相应的字符串枚举常量。存储卡状态是整型枚举,可在 ThingSmartCameraDPManager.h
中查看具体的定义。
设备功能 | 值常量类型 |
---|---|
BasicNightvision | ThingSmartCameraNightvision |
BasicPIR | ThingSmartCameraPIR |
MotionSensitivity | ThingSmartCameraMotion |
DecibelSensitivity | ThingSmartCameraDecibel |
RecordMode | ThingSmartCameraRecordMode |
PTZControl | ThingSmartCameraPTZDirection |
WirelessPowerMode | ThingSmartCameraPowerMode |
SDCardStatus | ThingSmartCameraSDCardStatus |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈