// /** @file GWP2PClient+DeviceInfomation.h @brief 该文件为P2PClient获取和设置设备状态信息的分类 */ // P2PSDK // // Created by apple on 17/2/24. // Copyright © 2017年 gwell. All rights reserved. // #import "GWP2PClient.h" /** 设备网络连接类型 */ typedef NS_ENUM(NSUInteger, GWDeviceNetworkType) { GWDeviceNetworkTypeWired,/**< 有线 */ GWDeviceNetworkTypeWifi, /**< wifi */ }; /** 设备的RTSP密码模式 */ typedef NS_ENUM(NSUInteger, GWDeviceRTSPPasswordMode) { GWDeviceRTSPPasswordModeClosed = 0, /**< RTSP功能关闭 */ GWDeviceRTSPPasswordModeOpenAndPasswordNeedless = 1, /**< RTSP功能打开,但不需要密码 */ GWDeviceRTSPPasswordModeOpenAndPasswordNeeded = 2, /**< RTSP功能打开,并需要密码 */ GWDeviceRTSPPasswordModeUnSetted = 3, /**< 设备支持RTSP功能,但没有设置过模式,设备初始化后会返回此值,如果设备返回此值,要调确认RTSP接口,再进行RTSP密码的设置,模式的修改等操作 */ GWDeviceRTSPPasswordModeNOSuchFile = 4, /**< 设备支持RTSP功能,但没有支持文件,也要判断为不支持 */ GWDeviceRTSPPasswordModeUnSurpurted = 999, /**< 设备不支持RTSP功能,设备模型初始化时附此值,方便后面判断 */ }; /** @brief 该分类可获取和设置设备各种状态信息 */ @interface GWP2PClient (DeviceInfomation) #pragma mark - 获取设备状态 /** 获取多项设备状态:以下key返回结果里没有时表示设备不支持该功能 completionBlock返回: @"defence state" (布防状态): 类型:BOOL (YES 布防 , NO 撤防) @"buzzer state" (蜂鸣器蜂鸣时长): 0 off , 1 2 3 min 蜂鸣时长 类型:NSNumber @"motion detect state"(移动侦测状态): 类型:BOOL (NO off; YES on) @"record type" (录像类型) : manual; alarm; schedule 返回字典, record type 键对应 GWP2PRecordType 枚举 @"manually record state" (手动录像开关) : 类型:BOOL (NO off; YES on) @"planed record time" (计划录像时间):返回字典,对应的值为 NSNumber类型,保存开始时间的时分,结束时间的时分四个键值对(24小时制) @"video format" (视频格式) 返回字符串 : NTSC , PAL 返回字典: @"alarm record time" (报警录像时间)0 表示1分钟, 1 表示2分钟 2 表示3分钟 @"net type" (网络类型) : 0 有线; 1 wifi; @"volume" (音量): 0-9整数 @"auto update" (自动升级): NO off; YES on @"body infrared state" (人体红外状态) : NO off; YES on @"wired alarm input" (有线报警输入状态) : NO off; YES on @"wired alarm output" (有线报警输出状态) : NO off; YES on @"time zone" (时区) : @(0-24) @"password" (用户密码) @"image reverse state" (图像倒转状态)返回BOOL值 : @(NO) 非倒转; @(YES) 是倒转 @"prerecord state" (预录像状态) : NO off YES on @"motion detect sensityvity" (移动侦测灵敏度) : 0-6 数值越大,灵敏度越高 -1表示返回数值有误 @"lamp state" (灯光控制状态) : NO off YES on @"visitor password" (访客密码) : 由非0开头的数字组成 @"focus zoom" (变焦 变倍) : 0 都没有; 1 只有变倍; 2 只有变焦; 3 变倍变焦都有 @"AP Mode" (AP模式) : 0 不支持; 1 支持(mode!=ap); 2 支持(mode=ap) @"type" (设备主类型): GWDeviceType 类型,(如IPC、NPC...) (设备返回的主类型不准) @"device subtype" (设备子类型): GWDeviceSubtype 类型,(如30只支持868;31支持868+情景模式;32支持868+情景模式+分享) @"preset position suppurted" (是否支持预置位): @(BOOL) NO 不支持; YES 支持 @"RTSP password mode" (RTSP密码模式,此项有值说明支持RTSP模式,没有值说明设备不支持) @(GWDeviceRTSPPasswordMode) @"confirm RTSP password mode" (需不需要确认RTSP密码模式,需要时,调确认RTSP密码模式接口后才能正常配置RTSP密码) @"white light suppurted" (是否支持白光灯功能) @(BOOL) @"white light on" (白光灯灯关是否打开) @(BOOL) @"sound control suppurted" (是否支持声音控制功能) @(BOOL) @"white light brightness" (白光灯亮度) @(int) @"433 doorbell suppurted" (是否支持433门铃传感器) @(BOOL) @"object tracking" (物件追踪,字典里没有表示不支持) @(BOOL) @param deviceID 设备ID @param password 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getMultipleDeviceStatusWithDeviceID:(NSString *)deviceID password:(NSString *)password completionBlock:(CompletionBlock)completionBlock; /** 获取设备信息 completionBlock 返回字典对应的key: @"firmware version" 固件版本 @"uBoot uersion" uBoot版本 @"kernel version" 内核版本 @"system version" 系统版本 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getDeviceInfomationWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 下载文件 /** 从设备下载文件,下载结果在 GWP2PClientProtocol 的方法 client:didDownloadFile:withFilePath:deviceID: 中 @param deviceID 设备ID @param devicePassword 设备密码 @param remoteFilePath 远程文件路径,一般由设备返回 @param localFilePath 下载后文件在本地的保存路径,文件在沙盒中的保存路径(包括文件名及文件扩展名),下载成功后文件直接保存在此路径 @return 下载是否开始 */ - (BOOL)downloadFileWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword remoteFilePath:(NSString *)remoteFilePath localFilePath:(NSString *)localFilePath; /** 从设备下载报警时的截图, 下载结果在 GWP2PClientProtocol 的 client:didDownloadFile:withFilePath:deviceID:result: 方法中回调 @param deviceID 设备ID @param devicePassword 设备密码 @param pictureNumber 报警时截图的数量,设备推送报警时,会推送此数据 @param toDownloadIndex 要下载的图片索引, <= (pictureNumber - 1) @param remoteFilePath 图片的路径,设备推送报警时,会推送此数据 @param localFilePath 下载后图片在本地的保存路径,图片在沙盒中的保存路径(包括图片名及图片扩展名),下载成功后文件直接保存在此路径 @return 下载是否开始 */ - (BOOL)downloadAlarmPictureWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword pictureNumber:(NSUInteger)pictureNumber toDownloadIndex:(NSUInteger)toDownloadIndex remoteFilePath:(NSString *)remoteFilePath localFilePath:(NSString *)localFilePath; #pragma mark - 网络 /** 获取设备搜索到的Wifi列表 获取网络类型请调 getMultipledeviceStatusWithDeviceID:password:completionBlock: completionBlock返回字典: @"wifi count" : wifi数目 @"current wifi index" : 正在使用的wifi索引值 索引值从0开始 @"wifi list" : wifi列表数组,数组内一个字典对应一个wifi的信息(wifi名,是否加密,wifi强度,加密类型) @[@{@"wifi name" : @"wifi名", @"has encrypted" : @(YES), @"wifi strength" : @"wifi强度"}, @"encrypted type" : @(0)];] @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getDeviceWifiListWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 设置设备网络连接类型,即在有线和wifi之间切换 @param networkType 网络类型 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceNetworkType:(GWDeviceNetworkType)networkType withDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 不再使用 连网模式下设置设备当前Wifi,设置后设备会连接到设置的wifi,此接口只支持WPA加密的wifi @param deviceID 设备ID @param devicePassword 设备密码 @param encrypted wifi是否加密(可由获取到的wifi列表得到),传获取wifi列表字典中的@"has encrypted"对应的值 @param wifiName wifi名 @param wifiPassword wifi密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceWifiInNetworkModeWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword wifiHasBeEncrypted:(BOOL)encrypted wifiName:(NSString *)wifiName wifiPassword:(NSString *)wifiPassword completionBlock:(CompletionBlock)completionBlock DEPRECATED_ATTRIBUTE; /** 连网模式下设置设备当前Wifi,设置后设备会连接到设置的wifi,新的接口,老的接口只支持WPA加密的wifi,此接口支持WEP加密和WPA加密的wifi @param deviceID 设备ID @param devicePassword 设备密码 @param encryptedType wifi加密类型(可由获取到的wifi列表得到),传获取wifi列表字典中的@"encrypted type"对应的值 @param wifiName wifi名 @param wifiPassword wifi密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceWifiInNetworkModeWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword wifiEncryptedType:(NSInteger)encryptedType wifiName:(NSString *)wifiName wifiPassword:(NSString *)wifiPassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 时间时区 /** 获取设备时间 : 返回 年 月 日 时 分 的数值, 不是NSDate,避免时区出错 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getDeviceTimeWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 设置设备时间 @param date 要设置的时间 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceTime:(NSDate *)date withDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 设置设备时区 获取时区请调 getMultipledeviceStatusWithDeviceID:password:completionBlock: @param timeZone 要设置的时区,可设置如下数字:-11, -10, -9, -8, -7, -6, -5, -4, -3.5, -3, -2, -1, 0, 1, 2, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 8, 9, 9.5, 10, 11, 12 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceTimeZone:(float)timeZone withDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 安全 #pragma mark 密码 /** 设置初始密码,重置设备后,设备没有密码(管理员)时调用,如果有密码,密码一般为123,具体请查看设备说明书 必须保证手机与设备在同一局域网中,否则回调只会收到参数错误. 这一接口在发指令时一定要确保手机与设备在同一局域网中,指令将deviceID转成4位设备IP的最后一位,若不在同一局域网,获取不到设备IP,指令不会成功 @param initialPassword 初始密码,必须为包含字母、数字、其它字符中两种的6~30位的字符串 @param deviceID 设备ID,直接传设备ID,内部处理成IP地址,也可以传4位IP的最后一位数字 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceInitialPassword:(NSString *)initialPassword withDeviceID:(NSString *)deviceID completionBlock:(CompletionBlock)completionBlock; /** 设置管理员密码,设备已经有密码(管理员)时调用 @param oldPassword 老的管理员密码,可能为简单的初始密码,如123 @param newPassword 新的管理员密码,必须为包含字母、数字、其它字符中两种的6~30位的字符串,否则会返回参数错误 @param deviceID 设备ID @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceAdministratorPasswordWithOldPassword:(NSString *)oldPassword newPassword:(NSString *)newPassword deviceID:(NSString *)deviceID completionBlock:(CompletionBlock)completionBlock; /** 设置访客密码,有管理员密码时调用 @param newVisitorPassword 新的访客密码(必须为非零开头的小于等于9位的数字) @param administratorPassword 管理员密码 @param deviceID 设备ID @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceVisitorPassword:(NSString *)newVisitorPassword withAdministratorPassword:(NSString *)administratorPassword deviceID:(NSString *)deviceID completionBlock:(CompletionBlock)completionBlock; #pragma mark RTSP密码 /** 设置RTSP密码 不能获取密码 @param rtspPassword 要设置的RTSP密码 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceRTSPPassword:(NSString *)rtspPassword withDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 设置RTSP密码模式 获取RTSP模式请调 getMultipledeviceStatusWithDeviceID:password:completionBlock: @param rtspPasswordMode rtsp密码模式 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceRTSPPasswordMode:(GWDeviceRTSPPasswordMode)rtspPasswordMode withDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 确认RTSP密码模式 新设备或查询RTSP密码模式为 GWDeviceRTSPPasswordModeUnSetted == 3 时,需要向设备发此指令,告诉设备开启RTSP密码的配置功能,之后才能正常设置RTSP密码 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)confirmDeviceRTSPPasswordModeWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 更新 /** 设置自动更新状态 如果获取不到设备的自动更新状态,表明设备不支持,调此方法是收不到回调数据,只会超时 获取自动更新状态请调 getMultipledeviceStatusWithDeviceID:password:completionBlock: @param isAutoUpdate 是否自动更新 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceAutoUpdateState:(BOOL)isAutoUpdate withDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 检查设备是否可更新 completionBlock返回字典对应的键值: @"current version" 当前固件版本 @"update version" 待更新的版本 @"can update" (是否可更新):对应值为 NSNumber 包装的 BOOL 类型 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)checkDeviceUpdateWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 执行设备更新 执行更新后下载进度在 GWP2PClientProtocol 协议的 [GWP2PClientProtocol client:updateProgress:resultCode:ofDeviceID:]方法中进行监听 completionBlock返回字典对应的键值: @"has begin update" (是否开始更新):对应值为 NSNumber 包装的 BOOL 类型 @"update progress" (更新进度):对应值为 NSNumber 包装的 int 类型 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)performUpdateWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; /** 取消设备更新(此命令收不到设备回调) @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)cancelUpdateWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 获取设备分辨率,IP地址,MAC(网卡)地址 /** 获取设备分辨率,IP地址,MAC(网卡)地址 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getDeviceResolutionAndIpAndMacAddressWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 获取设备DNS,网关,子网,ip /** 获取设备获取设备DNS,网关,子网,ip @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getDeviceDNSAndIpAndGetWayAndSubNetMaskWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 设置设备DNS,网关,子网,ip /** 设置设备DNS,网关,子网,ip @param deviceID 设备ID @param devicePassword 设备密码 @param isAuto 0为静态,1为动态,为动态时后面的参数都为无效 @param dNS 设置静态 DNS 值时填255.255.255.255 .动态时填 0 @param IP 设置静态 ip 值时填192.168.1.1。动态时填 0 @param subNetMask 设置静态子网掩码值时填255.255.255.0 动态时填 0 @param getWay 设置静态网关值时填。动态时填255.255.255.255 动态时填 0 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceDNSAndIpAndGetWayAndSubNetMaskWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword isAuto:(NSInteger)isAuto deviceDNS:(NSString*)dNS deviceIP:(NSString*)IP deviceSubNetMask:(NSString*)subNetMask deviceGetWay:(NSString *)getWay completionBlock:(CompletionBlock)completionBlock; #pragma mark - 获取用户及设备列表在线状态等信息 /** 获取好友用户及设备列表在线状态等信息,此指令不能同时发两条,第二条要等第一条回调后再发,网络超时为25s completionBlock返回字典数据结构: @{ @"result" : @(NO), @"description" : @"success", @"操作描述" : @"获取好友用户及设备列表在线状态等信息", @"status" : @[ @{//一个字典对应一个设备或一个好友用户信息 @"deviceID" : @"设备ID或好友用户ID", @"defence flag" : @(-1),//布防状态获取的时间标识,此值越大,表示获取的时间越晚,用于判断是否要刷新布防状态. -1表示不支持或设备不在线 @"defence state" : @(-1),//-1表示不支持或设备不在线 @"online state" : @(YES),//接口一定支持 @"subtype" : @(-1)//-1表示不支持或设备不在线 } ] } @param deviceIDsArray 设备ID数组,如果是用户(GWNet登陆的用户)ID,请在数字前加0,用于区分是设备ID还是用户ID @param completionBlock 与设备交互完成后的回调Block */ - (void)getDevicesOrUersStatusWithDeviceIDs:(NSArray *)deviceIDsArray completionBlock:(CompletionBlock)completionBlock; #pragma mark - NVR设备 /** 获取设备NVR信息 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)getDeviceNVRInfomationWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 更新设备id /** 更新设备id @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)updateDeviceIdWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 获取当前全景相机的配置信息 /** 获取当前全景相机的配置信息 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ -(void)getFisheyeDeviceInfoWithDeviceId:(NSString*)deviceID devicePassword:(NSString*)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark - 恢复出厂设置 /** 恢复出厂设置 @param deviceID 设备ID @param devicePassword 设备密码 @param completionBlock 与设备交互完成后的回调Block */ - (void)setDeviceRestoreFactorySettingsWithDeviceID:(NSString *)deviceID devicePassword:(NSString *)devicePassword completionBlock:(CompletionBlock)completionBlock; #pragma mark -自动变焦 /** 自动变焦 设置(set)变焦镜头马达当前位置的方法声明 @param deviceID 设备ID @param password 设备密码 @param params 对接参数 @param completionBlock 与设备交互完成后的回调Block */ -(void)setAutoZoomWithId:(NSString*)deviceID password:(NSString*)password params:(int)params completionBlock:(CompletionBlock)completionBlock; /** 自动变焦 获取变焦镜头马达当前位置方法声明 @param deviceID 设备ID @param password 设备密码 @param completionBlock 与设备交互完成后的回调Block */ -(void)getAutoZoomWithId:(NSString*)deviceID password:(NSString*)password completionBlock:(CompletionBlock)completionBlock; @end