设备相关

设备配网以及发现设备

设备配网有两种类型,1、直接调用硬件厂商的配网SDK给已知模组配网,调用本文档4.1.1方法实现,目前支持的模组:乐鑫ESP8266、汉枫LPB120、庆科WIFI模组、高通WIFI、AirKissWIFI模组。2、把设备作为热点,手机连到设备热点,把目标网络的ssid的password传给设备实现配网,调用本文档4.1.2方法实现。

配网完成后,手机需在目标局域网内进行设备的搜索发现,最后根据返回的设备信息进行绑定。

【普通模组配网,配网相关的所有功能对应IOTSmartActivator类。(单例)】

请求参数:

参数名 类型 说明 备注 必需
activatorType enum 模组类型 IOTSmartActivatorType枚举类型中的一种
password String 当前Wifi的password

例子:

- (void)start{ [[IOTSmartActivator shareInstance] IOTCloudSDK_startConfigWithActivatorType: @"your_choose_activatorType" password: @"your_wifi_password" success:^{ NSLog(@"activator success"); } failure:^{ NSLog(@"activator failure"); }]; }

【AP配网】

请求参数:

参数名 类型 说明 备注 必需
ssid String 目标Wifi的ssid
password String 目标Wifi的password

例子:

- (void)APstart{ [[IOTSmartActivator shareInstance] IOTCloudSDK_startAPConfigWithSSID: @"wifi_ssid" password: @" wifi_password" success:^{ NSLog(@"activator success"); } failure:^{ NSLog(@"activator failure"); }]; }

【停止配网】

请求参数:

参数名 类型 说明 备注 必需
activatorType enum 模组类型 IOTSmartActivatorType枚举类型中的一种

例子:

- (void)stop{ [[IOTSmartActivator shareInstance] IOTCloudSDK_stopConfigWithActivatorType: @"your_choose_activatorType"]; }

硬件正常上网后,搜索设备发现设备,采用udp发包形式,发现设备相关的所有功能对应IOTSmartFindDevices类。(单例),发现的设备有如下两种返回方式:

1、发现设备后在传入时间结束时统一返回IOTSmartFindDeviceModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
productId int 设备的产品Id 填写产品id就只能发现改产品下的设备,若填写
0则可以发现该局域网内所有正常上网的设备
timeout int 超时时间

例子:

- (void)startFind{ [[IOTSmartFindDevices shareInstance] IOTCloudSDK_getDeviceListWithProductId: @"your_choose_productId" timeout:@"your_choose_timeout" success:^(NSArray reaultArr){ NSLog(@"findDevices success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"findDevices failure: %@", errMessage); }]; }

2、发现设备后立即逐个返回IOTSmartFindDeviceModel实体类对象,多次成功回调。用户可参照以下4.1.4随时停止搜索,如果传入时间结束时还未停止,则返回错误回调超时。

请求参数:

参数名 类型 说明 备注 必需
productId int 设备的产品Id 填写产品id就只能发现改产品下的设备,
若填写0则可以发现该局域网内所有正常上网的设备
timeout int 超时时间

例子:

- (void)startFind{ [[IOTSmartFindDevices shareInstance] IOTCloudSDK_getDeviceWithProductId: @"your_choose_productId" timeout:@"your_choose_timeout" success:^( IOTSmartFindDeviceModel findDeviceModel){ NSLog(@"findDevices success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"findDevices failure: %@", errMessage); }]; }

【停止发现设备】

请求参数:无

例子:

- (void)stopfind{ [[IOTSmartFindDevices shareInstance] IOTCloudSDK_stopUDP]; }

SDK实现了直接发送和接收udpsocket数据的方法

1、发UDP包到任意的ip地址和端口

请求参数:

参数名 类型 说明 备注 必需
data NSData 要发送的数据包内容
host String 目标地址
port int 目标端口

例子:

- (void)startSend{ [[IOTSmartFindDevices shareInstance] IOTCloudSDK_sendData: @"your_data" toHost:@"your_host" port :@"your_port"]; }

1、 接收UDP包

手机端要监听接收到的UDP数据包。请遵循IOTSmartFindDevicesDelegate代理协议,并将自身设置为IOTSmartFindDevices对象的代理,最后实现以下协议方法监听数据。

- (void) IOTCloudSDK_reciveData:(NSData )data fromHost:(NSString )host port:(int)port{ NSLog(@"recive udpdate: %@", data); }

用户绑定设备

一个设备只能被一个用户绑定,不允许多个用户绑定一个设备。设备相关的所有功能对应IOTSmartDevice类。绑定成功返回IOTSmartDeviceListModel实体类对象。用户绑定设备有以下两种方式,互不干涉:

用户与快联发现的设备进行绑定。

请求参数:

参数名 类型 说明 备注 必需
iotId String 绑定设备的iotId
iotToken String 绑定设备的token

例子:

- (void)bindDevice{ [IOTSmartDevice IOTCloudSDKbindDeviceWithIotId: @"your_findDevice_iotId" iotToken:@"your findDevice_iotToken" success:^(IOTSmartDeviceListModel deviceModel){ NSLog(@"bindDevice success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"bindDevice failure: %@", errMessage); }]; }

用户通过mac与设备进行快速绑定。此方式需要设备端提前在云平台上注册激活设备。绑定失败返回错误信息,当errNo为-231时,表示该设备已被绑定,会返回绑定用户的账号信息。

请求参数:

参数名 类型 说明 备注 必需
mac String 绑定设备的mac或IMEI

例子:

- (void)bindDevice{ [IOTSmartDevice IOTCloudSDK_ easyBindGetmodelWithMac: @"your_device_mac" success:^(IOTSmartDeviceListModel deviceModel){ NSLog(@"bindDevice success"); } failure:^( int errNo,NSString errMessage ,NSString displayName,NSString bindUser) { NSLog(@"bindDevice failure: %@", errMessage); }]; }

用户通过mac与设备进行快速绑定。此方式需要设备端提前在云平台上注册激活设备。绑定成功只返回该设备名称。

请求参数:

参数名 类型 说明 备注 必需
mac String 绑定设备的mac或IMEI ~~~~

例子:

- (void)bindDevice{ [IOTSmartDevice IOTCloudSDK_ easyBindGetmodelWithMac: @"your_device_mac" success:^( NSString * displayName){ NSLog(@"bindDevice success"); } failure:^( int errNo,NSString errMessage ,NSString displayName,NSString * bindUser) { NSLog(@"bindDevice failure: %@", errMessage); }]; }

获取绑定设备列表


通过调用该接口获取所有设备列表。返回IOTSmartDevice类对象数组。

请求参数:

参数名 类型 说明 备注 必需
dataFlag Bool 数据点数据标识 0:不返回数据点最新数据; 1:返回

例子:

- (void)getDeviceList{
    [IOTSmartDevice IOTCloudSDK_getDeviceListWithDataFlag: @"your_dataFlag"  success: ^(NSArray<IOTSmartDevice *> * deviceLisArr) {
    NSLog(@"getDeviceList success");
} failure:^( int errNo,NSString *errMessage) {
    NSLog(@"getDeviceList failure: %@", errMessage);
}];
}

获取绑定设备列表

通过调用该接口获取所有设备列表。返回IOTSmartDeviceListModel类对象数组。

请求参数:无

例子:

- (void)getDeviceList{ [IOTSmartDevice IOTCloudSDK_getDeviceModelListSuccess: ^(NSArray * deviceLisArr) { NSLog(@"getDeviceList success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"getDeviceList failure: %@", errMessage); }]; }

获取设备实体类对象

获取设备实体类对象,覆盖alloc创建对象,以下self.device均表示已经创建了的设备类对象。API请求,保证实时性可用性。

请求参数:

参数名 类型 说明 备注 必需
iotId NSString 设备id
subIotId NSString 子设备id 不是子设备填空串

例子:

- (void)getDeviceObj{ [IOTSmartDevice IOTCloudSDK_deviceWithIotId: @"your_Device_iotId" subIotId:@"your_Device_subIotId" success:^( IOTSmartDevice device) { NSLog(@"getDevice success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDevice failure: %@", errMessage); }]; }

获取设备实体类对象

获取设备实体类对象,覆盖alloc创建对象,以下self.device均表示已经创建了的设备类对象。属于内存维护,因接口调用顺序不确定,所以不保证实时性和可用性。

请求参数:

参数名 类型 说明 备注 必需
deviceId NSString 设备id
subIotId NSString 子设备id 不是子设备填空串

例子:

- (void)getDeviceObj{ self.device =[ IOTSmartDevice IOTCloudSDK_deviceWithDeviceId: @"your_Device_iotId" subIotId:@"your_Device_subIotId"]; }

获取设备实体类对象

获取设备实体类对象,覆盖alloc创建对象,以下self.device均表示已经创建了的设备类对象。不支持子设备。属于内存维护,因接口调用顺序不确定,所以不保证实时性和可用性。

请求参数:

参数名 类型 说明 备注 必需
deviceId NSString 设备id

例子:

- (void)getDeviceObj{ self.device =[ IOTSmartDevice IOTCloudSDK_deviceWithDeviceId: @"your_Device_iotId"]; }

解绑设备

请求参数:无

例子:

- (void)unbindDevice{ [self.device IOTCloudSDK_unbindDeviceSuccess: ^{ NSLog(@"unbindDevice success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"unbindDevice failure: %@", errMessage); }]; }

获取单个设备的详细信息

手机端获取指定设备的详细信息。请求成功返回IOTSmartDeviceInfoModel实体类对象。

请求参数:无

例子:

- (void)getDeviceInfo{ [self.device IOTCloudSDK_getDeviceInfoSuccess: ^(IOTSmartDeviceInfoModel deviceModel){ NSLog(@"getDeviceInfo success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDeviceInfo failure: %@", errMessage); }]; }

修改设备名称

手机修改已经绑定的某设备的显示名称。

请求参数:

参数名 类型 说明 备注 必需
deviceName String 设备显示名 修改后的显示名

例子:

- (void)editDeviceName{ [self.device IOTCloudSDK_modifyDeviceNameByName: @"your_Device_Name" success:^{ NSLog(@"editDeviceName success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"editDeviceName failure: %@", errMessage); }]; }

修改设备图标

手机修改已经绑定的某设备的显示图标。有以下两种方式:

根据传入的图片二进制数据更改设备图标。

请求参数:

参数名 类型 说明 备注 必需
deviceImgData NSData 图片二进制数据

例子:

- (void)editDeviceImg{ [self.device IOTCloudSDK_modifyDeviceImgByDeviceImageData: @"your_Device_ImgData" success:^{ NSLog(@"editDeviceImg success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"editDeviceImg failure: %@", errMessage); }]; }

根据传入的图片url更改设备图标。

请求参数:

参数名 类型 说明 备注 必需
deviceImgURL NSString 图片url

例子:

- (void)editDeviceImg{ [self.device IOTCloudSDK_modifyDeviceImgByDeviceImageURL: @"your_Device_ImgUrl" success:^{ NSLog(@"editDeviceImg success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"editDeviceImg failure: %@", errMessage); }]; }

检测设备固件是否有新版本

检测已经绑定的某设备是否有新的固件版本。如果有没有新版本,则isHaveNewVersion为NO,newVersion为nil,newVersionDescription为nil。如果有新版本,isHaveNewVersion为YES,newVersion为新版本号,newVersionDescription为新版本描述。

请求参数:无

例子:

- (void)checkDeviceOTA{ [self.device IOTCloudSDK_checkDeviceOTAVersionAndDescriptionSuccess: ^(BOOL isHaveNewVersion,NSString newVersion, NSString newVersionDescription){ NSLog(@"checkDeviceOTA success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"checkDeviceOTA failure: %@", errMessage); }]; }

检测设备固件是否有新版本

检测已经绑定的某设备是否有新的固件版本。如果有没有新版本,则isHaveNewVersion为NO,newVersion为nil,如果有新版本,isHaveNewVersion为YES,newVersion为新版本号。

请求参数:无

例子:

- (void)checkDeviceOTA{ [self.device IOTCloudSDK_checkDeviceOTASuccess: ^(BOOL isHaveNewVersion,NSString * newVersion){ NSLog(@"checkDeviceOTA success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"checkDeviceOTA failure: %@", errMessage); }]; }

获取设备上传单条数据

手机端查询某设备的某数据点下最新一条数据(自当天零点开始)。如:用于获取计量插座的电量。获取成功返回IOTSmartDPDataModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量 如:计量插座的电量数据点key为plug_Ep

例子:

- (void)getSingleData{ [self.device IOTCloudSDK_getSingleDataByKey: @"your_dp_key" success:^(NSArray dpDataModelArr){ NSLog(@"getSingleData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getSingleData failure: %@", errMessage); }]; }

获取设备上传多条数据

手机端查询某设备的某数据点下当天指定数目的多条数据(自当天零点开始)。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量
count Int 要获取数据的条数

例子:

- (void)getMoreData{ [self.device IOTCloudSDK_getMoreDataByKey: @"your_dp_key" count: @"your_choose_count" success:^(NSArray dpDataModelArr){ NSLog(@"getMoreData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getMoreData failure: %@", errMessage); }]; }

获取设备某时间段内上传所有历史数据

手机端查询某设备的某数据点下所有历史上报数据(最近90天)。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量
startTime String 开始时间 十位时间戳(秒级)
endtime String 结束时间 十位时间戳(秒级)

例子:

- (void)getSometimeAllData{ [self.device IOTCloudSDK_getSomeTimeDataDataByKey: @"your_dp_key" startTime:@"your_startTime" endTime:@"your_endTime" success:^(NSArray dpDataModelArr){ NSLog(@"getSomeTimeData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getSomeTimeData failure: %@", errMessage); }]; }

获取设备上传所有历史数据

手机端查询某设备的某数据点下所有历史上报数据(最近90天)。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量

例子:

- (void)getAllData{ [self.device IOTCloudSDK_getAllDataByKey: @"your_dp_key" success:^(NSArray dpDataModelArr){ NSLog(@"getAllData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getAllData failure: %@", errMessage); }]; }

获取设备所有数据点最新数据

手机端查询某设备的所有数据点的最近一条上报数据(不限时间)。获取成功后返回IOTSmartDP实体类对象数组。

请求参数:无

例子:

- (void)getAllSingleData{ [self.device IOTCloudSDK_getAllSingleDataBSuccess:^( NSArray dpArr){ NSLog(@"getAllSingleData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getAllSingleData failure: %@", errMessage); }]; }

获取设备某数据点APP操作数据

手机端查询某设备的某数据点的App操作数据。获取成功后返回IOTSmartDPOperatorDataModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量
count int 请求的条数

例子:

- (void)getUserOperatorData{ [self.device IOTCloudSDK_getUserOperatorDataByKey : @"your_dp_key" count: @"your_count" success:^( NSArray dpOperatorDataModelArr){ NSLog(@"getUserOperatorData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getUserOperatorData failure: %@", errMessage); }]; }

获取设备某数据点物理按键操作数据

手机端查询某设备的某数据点的物理按键操作数据。获取成功后返回IOTSmartDPOperatorDataModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量
count int 请求的条数

例子:

- (void)getDeviceOperatorData{ [self.device IOTCloudSDK_getDeviceOperatorDataByKey : @"your_dp_key" count: @"your_count" success:^( NSArray dpOperatorDataModelArr){ NSLog(@"getDeviceOperatorData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDeviceOperatorData failure: %@", errMessage); }]; }

获取设备多个数据点多条汇总数据

手机端查询某设备多个数据点的多条汇总数据。获取成功后返回IOTSmartDeviceRecordModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
keyArr NSArray 数组元素为数据点变量key
count int 请求的条数

例子:

- (void)getDeviceRecordData{ [self.device IOTCloudSDK_getDeviceRecordWithDPKeyArr : @"your_dp_keyArr" count: @"your_count" success:^( NSArray deviceRecordArr){ NSLog(@"getDeviceRecordData success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDeviceRecordData failure: %@", errMessage); }]; }

获取设备多个数据点按天统计数据

手机端查询某设备多个数据点的按天统计数据。获取成功后返回IOTSmartDeviceRecordDailyModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
keyArr NSArray 数组元素为数据点变量key
startTime NSString 开始时间时间戳
endTime NSString 结束时间时间戳

例子:

- (void)getDeviceRecordDailyData{ [self.device IOTCloudSDK_getDeviceRecordDailyWithDPKeyArr: @"your_dp_keyArr" startTime: @"your_startTime" endTime: @"your_endTime" success:^( NSArray< IOTSmartDeviceRecordDailyModel> deviceRecordDailyArr){ NSLog(@"getDeviceRecordDailyData success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"getDeviceRecordDailyData failure: %@", errMessage); }]; }

获取设备多个数据点按月统计数据

手机端查询某设备多个数据点的按天统计数据。获取成功后返回IOTSmartDeviceRecordDailyModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
keyArr NSArray 数组元素为数据点变量key
startTime NSString 开始时间时间戳
endTime NSString 结束时间时间戳

例子:

- (void)getDeviceRecordMonthData{ [self.device IOTCloudSDK_getDeviceRecordMonthWithDPKeyArr: @"your_dp_keyArr" startTime: @"your_startTime" endTime: @"your_endTime" success:^( NSArray< IOTSmartDeviceRecordDailyModel> deviceRecordDailyArr){ NSLog(@"getDeviceRecordMonthData success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"getDeviceRecordMonthData failure: %@", errMessage); }]; }

获取设备所有定时规则列表

手机端查询某设备所有数据点的定时规则列表。获取成功后返回IOTSmartTimingListModel实体类对象数组。

请求参数:无

例子:

- (void)getTimingList{ [self.device IOTCloudSDK_getTimingListSuccess:^(NSArray timingListModelArr){ NSLog(@"getTimingList success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getTimingList failure: %@", errMessage); }]; }

获取设备某数据点定时规则列表

手机端查询某设备某数据点的定时规则列表。获取成功后返回IOTSmartTimingListModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量

例子:

- (void) getDPTimingList{ [self.device IOTCloudSDK_getTimingListWithDPKey: @"your_dp_key" success:^ (NSArray timingListModelArr){ NSLog(@"getTimingList success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getTimingList failure: %@", errMessage); }]; }

设备添加定时规则

手机端添加定时规则。

请求参数:

参数名 类型 说明 备注 必需
timingSetModel IOTSmartTimingSetModel

例子:

- (void) addTimingRule{ [self.device IOTCloudSDK_saveTimingRuleWithTimingSaveModel: @"your_timingSetModel " success:^ { NSLog(@"addTimingRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"addTimingRule failure: %@", errMessage); }]; }

设备修改定时规则

手机端修改定时规则。

请求参数:

参数名 类型 说明 备注 必需
timingId Int 定时规则id
timingSetModel IOTSmartTimingSetModel

例子:

- (void) editTimingRule{ [self.device IOTCloudSDK_editTimingRuleWithTimingId: @"your_timingId" timingEditModel:@"your_timingSetModel " success:^ { NSLog(@"editTimingRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"editTimingRule failure: %@", errMessage); }]; }

设备关闭定时规则

手机端关闭定时规则。

请求参数:

参数名 类型 说明 备注 必需
timingId Int 定时规则id

例子:

- (void) colseTimingRule{ [self.device IOTCloudSDK_colseTimingRuleWithTimingRuleId: @"your_timingId" success:^ { NSLog(@"colseTimingRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"colseTimingRule failure: %@", errMessage); }]; }

设备打开定时规则

手机端打开定时规则。

请求参数:

参数名 类型 说明 备注 必需
timingId Int 定时规则id

例子:

- (void) openTimingRule{ [self.device IOTCloudSDK_openTimingRuleWithTimingRuleId: @"your_timingId" success:^ { NSLog(@"openTimingRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"openTimingRule failure: %@", errMessage); }]; }

设备删除定时规则

手机端删除定时规则。

请求参数:

参数名 类型 说明 备注 必需
timingId Int 定时规则id

例子:

- (void) deleteTimingRule{ [self.device IOTCloudSDK_deleteTimingRuleWithTimingRuleId: @"your_timingId" success:^ { NSLog(@"deleteTimingRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"deleteTimingRule failure: %@", errMessage); }]; }

获取设备所有延时规则列表

手机端查询某设备所有数据点的延时规则列表。获取成功后返回IOTSmartDelayListModel实体类对象数组。

请求参数:无

例子:

- (void)getDelayList{ [self.device IOTCloudSDK_getDelayListSuccess:^(NSArray delayListModelArr){ NSLog(@"getDelayList success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDelayList failure: %@", errMessage); }]; }

获取设备某数据点延时规则列表

手机端查询某设备某数据点的延时规则列表。获取成功后返回IOTSmartDelayListModel实体类对象数组。

请求参数:

参数名 类型 说明 备注 必需
key String 数据点变量

例子:

- (void) getDPDelayList{ [self.device IOTCloudSDK_getDelayListWithDPKey: @"your_dp_key" success:^ (NSArray delayListModelArr){ NSLog(@"getDelayList success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDelayList failure: %@", errMessage); }]; }

设备添加延时规则

手机端添加延时规则。

请求参数:

参数名 类型 说明 备注 必需
delaySetModel IOTSmartDelaySetModel

例子:

- (void) addDelayRule{ [self.device IOTCloudSDK_saveDelayRuleWithTimingSaveModel: @"your_delaySetModel " success:^ { NSLog(@"addDelayRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"addDelayRule failure: %@", errMessage); }]; }

设备修改延时规则

手机端修改延时规则。

请求参数:

参数名 类型 说明 备注 必需
delayId Int 延时规则id
delaySetModel IOTSmartDelaySetModel

例子:

- (void) editdelayRule{ [self.device IOTCloudSDK_editDelayRuleWithDelayRuleId: @"your_delayId" delayEditModel:@"your_delaySetModel " success:^ { NSLog(@"editDelayRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"editDelayRule failure: %@", errMessage); }]; }

设备关闭延时规则

手机端关闭延时规则。

请求参数:

参数名 类型 说明 备注 必需
delayId Int 延时规则id

例子:

- (void) colseDelayRule{ [self.device IOTCloudSDK_colseDelayRuleWithDelayRuleId: @"your_delayId" success:^ { NSLog(@"colseDelayRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"colseDelayRule failure: %@", errMessage); }]; }

设备删除延时规则

手机端删除延时规则。

请求参数:

参数名 类型 说明 备注 必需
delayId Int 延时规则id

例子:

- (void) deleteDelayRule{ [self.device IOTCloudSDK_deleteDelayRuleWithDelayRuleId: @"your_delayId" success:^ { NSLog(@"deleteDelayRule success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"deleteDelayRule failure: %@", errMessage); }]; }

获取用户所有有新版本的设备列表

查询用户所有有新版本的设备,返回IOTSmartDeviceOTAStatuaListModel对象的数组。

请求参数:无

例子:

- (void) getOTADeviceList{ [QLYSmartDevice IOTCloudSDK_checkUserDeviceOTASuccess:^ (NSArray otaDeviceListModelArr){ NSLog(@"getOTADeviceList success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getOTADeviceList failure: %@", errMessage); }]; }

下发设备开始下载新固件指令

当以上接口中返回有有新版本的设备,可以调用此接口开始下载新固件。

请求参数:无

例子:

- (void) startDeviceOTADownload{ [self.device IOTCloudSDK_startDeviceOTADownloadSuccess:^{ NSLog(@"startDeviceOTADownload success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"startDeviceOTADownload failure: %@", errMessage); }]; }

查询固件下载进度及升级状态

当调用以上接口开始下载固件后,可以使用定时器调用此接口查询固件的下载进度及设备的升级状态,查询返回IOTSmartDeviceOTADownloadProgressModel类对象,注意,如果是通过主动调用以上开始下载固件接口进行设备升级的情况,不用额外下发设备升级命令(本文档5.4),固件下载完成后会自动升级。

请求参数:

参数名 类型 说明 备注 必需
versionNum String 要升级的版本号

例子:

- (void) checkDeviceDownloadStatus{ [self.device IOTCloudSDK_checkDeviceOTADownloadStatusWithVersionNum:@"your_newVeisionNum" success:^(IOTSmartDeviceOTADownloadProgressModel otaDeviceDownloadProgressModel){ NSLog(@"checkDeviceDownloadStatus success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"checkDeviceDownloadStatus failure: %@", errMessage); }]; }

根据mac和subsetId获得设备信息及当前绑定状态,支持子设备

用户可以通过设备的mac和subsetId(只有子设备才有),查询设备的基本信息和设备当前的绑定状况,请求成功返回IOTSmartDeviceBindStatusModel类对象数组。

请求参数:

参数名 类型 说明 备注 必需
macAndSubsetIdModelArr NSArray 要查询的设备mac和subsetId信息 数组元素为IOTSmartDeviceMacAndSubsetIdModel对象

例子:

- (void) getDeviceBindStatus{ [IOTSmartDevice IOTCloudSDKgetBindStatusWithMacAndSubSetIdModelArr:@"your macAndSubsetIdModelArr " success:^( NSArray deviceBindStatusModelArr){ NSLog(@"getDeviceBindStatus success"); } failure:^( int errNo,NSString errMessage) { NSLog(@"getDeviceBindStatus failure: %@", errMessage); }]; }

根据UUID删除设备在第三方平台注册的相应设备

请求参数:

参数名 类型 说明 备注 必需
UUID NSString 设备在第三方平台上注册的唯一标识 如:亚马逊的endpointId、天猫
的skill_id、谷歌的agentUserId

例子:

-(void) IOTCloudSDKunbindThirdDevice { [self.device IOTCloudSDK_unbindThirdDeviceWithUUID:@"your UUID " success:^ { NSLog(@"IOTCloudSDK_unbindThirdDevice success"); } failure:^( int errNo,NSString *errMessage) { NSLog(@"IOTCloudSDK_unbindThirdDevice failure: %@", errMessage); }]; }

设备控制功能SDK使用

数据点对象

数据点对象相关的所有功能对应IOTSmartDP类。注意:数据点对象有普通数据点和二进制数据点之分,请根据在云平台上创建的数据点类型相应调接口。

根据数据点变量(key),数据点值(value),获得一个普通数据点类对象。(覆盖alloc创建对象)

请求参数:

参数名 类型 说明 备注 必需
dpKey String 数据点变量
dpValue String 数据点值

例子:

- (void)getDP{ IOTSmartDP * dp=[IOTSmartDP IOTCloudSDK_dpWithDpKey: @"your_dpKey" dpValue: @"your_dpValue"]; }

根据数据点变量(key),数据点值(value),获得一个二进制数据点类对象。(覆盖alloc创建对象)

请求参数:

参数名 类型 说明 备注 必需
dpKey String 数据点变量
dpValue Byte 数据点值
byteLength Int 字节数组的长度

例子:

- (void)getByteDP{ IOTSmartDP * dp=[IOTSmartDP IOTCloudSDK_dpByteWithDpKey: @"your_dpKey" dpValue: @"your_dpValue" byteLength: @"your_byteLength"]; }

根据某个数据点对象(IOTSmartDP),获取该数据点的变量(key)。

请求参数:

参数名 类型 说明 备注 必需
dp IOTSmartDP 数据点对象

例子:

- (void)getDPKey{ NSString * dpKey=[IOTSmartDP IOTCloudSDK_getDPKeyWithDP: @"your_dpObj"]; }

根据某个普通数据点对象(IOTSmartDP),获取该数据点的值(value)。

请求参数:

参数名 类型 说明 备注 必需
dp IOTSmartDP 数据点对象

例子:

- (void)getDPValue{ NSString * dpValue=[IOTSmartDP IOTCloudSDK_getDPValueWithDP: @"your_dpObj"]; }

根据某个二进制数据点对象(IOTSmartDP),获取该数据点的值(value)。

请求参数:

参数名 类型 说明 备注 必需
dp IOTSmartDP 数据点对象

例子:

- (void)getByteDPValue{ Byte* myByte=[IOTSmartDP IOTCloudSDK_getDPByteValueWithDP: @"your_dpObj"]; }

根据某个二进制数据点对象(IOTSmartDP),获取该数据点的值(value),此value为不定长二进制数据。(返回NSData类型数据,可通过(Byte )[data bytes]得到Byte 字节数组)

请求参数:

参数名 类型 说明 备注 必需
dp IOTSmartDP 数据点对象

例子:

- (void)getByteDPValue{ NSData* myByte=[IOTSmartDP IOTCloudSDK_getDPDataValueWithDP: @"your_dpObj"]; }

向某设备下发数据控制设备

手机端向设备下发命令。

请求参数:

参数名 类型 说明 备注 必需
dps NSArray 要控制的数据点数组 数组元素为IOTSmartDP实体类对象

例子:

- (void)cmdDps{ [self.device IOTCloudSDK_publishDps:@"your_dps_Arr" sucess:^{ NSLog(@"cmdDps success"); } failure:^(NSString *errMessage) { NSLog(@"cmdDps failure: %@", errMessage); }]; }

向某设备下发push消息

手机端向设备下发消息。

请求参数:

参数名 类型 说明 备注 必需
massage String 下发的消息内容

例子:

- (void)pushMsg{ [self.device IOTCloudSDK_publishMsg:@"your_push_Msg" sucess:^{ NSLog(@"pushMsg success"); } failure:^(NSString *errMessage) { NSLog(@"pushMsg failure: %@", errMessage); }]; }

向某设备下发升级命令并查询升级状态

手机端向设备下发升级命令。默认发送cmd=ota_update

请求参数:

参数名 类型 说明 备注 必需
versionNum String 要升级的版本号
timeOut Int 升级自定义超时时间

例子:

- (void)cmdOTA{ [self.device IOTCloudSDK_publishOTACmdWithVersionNum:@"your_new_versionNum" timeOut: @"your_timeOut" sucess:^{ NSLog(@"cmdOTA success"); } failure:^(NSString *errMessage) { NSLog(@"cmdOTA failure: %@", errMessage); }]; }

监听设备数据点更新

监听数据点更新有以下两种方式,方式一是对单个设备进行监听,方式二是对该用户下的所有设备进行监听。

对单个设备进行监听

手机端要监听单个设备的数据点更新。请遵循IOTSmartDeviceDelegate代理协议,并将自身设置为IOTSmartDevice对象的代理(如:self.device.delegate=self),最后实现以下协议方法监听数据。

- (void) IOTCloudSDK_device:(IOTSmartDevice )device dpsUpdate:(NSArray<IOTSmartDP > *)dps{ NSLog(@"recive updateDps: %@", dps); }

对该用户下的所有设备进行监听

手机端要监听该用户下的所有设备的数据点更新,需要将自身作为IOTSmartNotificationDeviceNewDPsUpdateArr通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[notice.userInfo objectForKey:@"iotId"]和[notice.userInfo objectForKey:@"subid"],判断哪个设备或哪个子设备有数据点更新。

监听设备push消息

监听设备push消息有以下两种方式,方式一是对单个设备进行监听,方式二是对该用户下的所有设备进行监听。

对单个设备进行监听

手机端要监听某个设备的push消息。同上遵循IOTSmartDeviceDelegate代理协议,实现以下协议方法监听数据。

- (void)IOTCloudSDK_device:(IOTSmartDevice )device pushStr:(NSString )pushStr { NSLog(@"recive pushStr: %@", pushStr); }

对该用户下的所有设备进行监听

手机端要监听该用户下的所有设备的push消息,需要将自身作为IOTSmartNotificationDeviceNewPushMessage通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[notice.userInfo objectForKey:@"iotId"]和[notice.userInfo objectForKey:@"subid"],判断哪个设备或哪个子设备有push消息。

监听设备升级消息

手机端要监听设备升级提示消息。需要将自身作为IOTSmartNotificationDeviceNewOTAPushMessage通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[notice.userInfo objectForKey:@"iotId"],判断哪个设备有新版本。

监听设备分享消息

手机端要监听设备分享提示消息。需要将自身作为IOTSmartNotificationDeviceNewSharePushMessage通知的观察者。在相应的通知方法里,提示用户有分享新消息,拉取分享消息列表查看最新分享消息内容(见本文档8.8)。

监听设备或子设备上下线的消息

手机端要监听设备或子设备上下线提示消息。需要将自身作为IOTSmartNotificationDeviceOnlineChangeMessage通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[notice.userInfo objectForKey:@"iotId"]和[notice.userInfo objectForKey:@"subIotid"],判断哪个设备或哪个子设备上线或下线([notice.userInfo objectForKey:@"status"]为1表示上线,为0表示下线)。

监听子设备新增消息

手机端要监听子设备新增提示消息。需要将自身作为IOTSmartNotificationDeviceAddSubDeviceMessage通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[notice.userInfo objectForKey:@"iotId"]和[notice.userInfo objectForKey:@"subIotid"],判断新增了哪个子设备。

向某设备下发二进制透传消息

手机端向设备下发透传消息。

请求参数:

参数名 类型 说明 备注 必需
byteMsg Byte * 下发的二进制字节数组
byteLen Int 字节数组的字节数

例子:

- (void)pushByteMsg{ [self.device IOTCloudSDK_publishByte:@"your_push_Byte" byteLen:@"your_byte_Len" sucess:^{ NSLog(@"pushByteMsg success"); } failure:^(NSString *errMessage) { NSLog(@"pushByteMsg failure: %@", errMessage); }]; }

监听设备二进制透传消息

监听设备二进制透传消息有以下两种方式,方式一是对单个设备进行监听,方式二是对该用户下的所有设备进行监听。

对单个设备进行监听

手机端要监听某个设备的透传消息。同上遵循IOTSmartDeviceDelegate代理协议,实现以下协议方法监听数据。

- (void)IOTCloudSDK_device:(IOTSmartDevice )device byteMsg:(NSData )byteMsg { NSLog(@"recive byteMsg: %@", byteMsg); }

对该用户下的所有设备进行监听

手机端要监听设备二进制透传消息。需要将自身作为IOTSmartNotificationDeviceNewPushByteMessage通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[notice.userInfo objectForKey:@"iotId"]和[notice.userInfo objectForKey:@"subIotid"],判断是设备或者子设备的透传消息,消息内容通过[notice.userInfo objectForKey:@" byteMsg"]获取,数据类型为NSData,可以通过(Byte )[data bytes]得到Byte 字节数组。

监听长连接连接状态变化

手机端要监听长连接连接状态的变化。需要将自身作为IOTSmartNotificationSocketStatusChangeMessage通知的观察者。在相应的通知方法里,取出notice.userInfo,根据[[notice.userInfo objectForKey:@"socketStatus"] boolValue],结果为YES表示长连接连接成功,结果为NO表示长连接断开。(注意,程序启动时默认长连接是断开的)

监听家庭分享消息

手机端要监听家庭分享提示消息。需要将自身作为IOTSmartNotificationDeviceNewFamilySharePushMessage通知的观察者。在相应的通知方法里,提示用户有家庭分享新消息,拉取分享消息列表查看最新分享消息内容(见本文档8.8)。

Copyright & copy qinglianyun all right reserved,powered by Gitbook该文件修订时间: 2021-04-22 18:53:48

results matching ""

    No results matching ""