GizWifiDevice 类
机智云 Wifi 的设备类。GizWifiDevice 类为 APP 开发者提供设备订阅、设备数据通知、设备实时状态通知,例如热水器的水温等功能。该设备实例是通过 GizWifiDevice 类分配出来的,不能自行创建。
目录
属性访问
[delegate]
使用委托获取对应事件。GizWifiDevice 对应的回调接口在 GizWifiDeviceDelegate 定义。需要用到哪个接口,回调即可。
定义
@property (weak, nonatomic) id <GizWifiDeviceDelegate> _Nullable delegate;
[macAddress]
NSString类型。设备的物理地址,如果是 VIRTUAL:SITE,则是虚拟设备
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull macAddress;
[did]
NSString类型。设备云端身份标识 DID
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull did;
[ipAddress]
NSString类型。设备的ip 地址,大循环设备的ip地址为云端服务器域名
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull ipAddress;
[productKey]
NSString类型。设备的产品类型识别码
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull productKey;
[productName]
NSString类型。设备的产品名称
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull productName;
[remark]
NSString类型。设备的备注信息,设备绑定后可以修改,默认为空
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull remark;
[alias]
NSString类型。设备的别名,设备绑定后可以修改,默认为空
定义
@property (strong, nonatomic, readonly) NSString * _Nonnull alias;
[isLAN]
BOOL类型。设备是否为小循环
定义
@property (assign, nonatomic, readonly) BOOL isLAN;
[isBind]
BOOL类型。设备是否已绑定
定义
@property (assign, nonatomic, readonly) BOOL isBind;
[isDisabled]
BOOL类型。判断设备是否已在云端注销
定义
@property (assign, nonatomic, readonly) BOOL isDisabled;
[productType]
GizWifiDeviceType类型。设备分类,是轻网关子设备还是普通设备
定义
@property (assign, nonatomic, readonly) GizWifiDeviceType productType;
[netStatus]
GizWifiDeviceNetStatus类型。设备的网络状态
定义
@property (assign, nonatomic, readonly) GizWifiDeviceNetStatus netStatus;
[isSubscribed]
BOOL类型。设备是否已订阅
定义
@property (assign, nonatomic, readonly) BOOL isSubscribed;
[isProductDefined]
BOOL类型。设备是否定义了产品数据点
定义
@property (assign, nonatomic, readonly) BOOL isProductDefined;
[isLowPower]
BOOL类型。低功耗
定义
@property (assign, nonatomic, readonly) BOOL isLowPower;
[isDormant]
BOOL类型。是否休眠
定义
@property (assign, nonatomic, readonly) BOOL isDormant;
[stateLastTimestamp]
number state_last_timestamp 最后活跃时间
定义
@property (assign, nonatomic, readonly) int stateLastTimestamp;
[sleepDuration]
number sleep_duration 休眠时长
定义
@property (assign, nonatomic, readonly) int sleepDuration;
[attrStatus]
NSDictionary类型。缓存最新的设备状态
定义
@property (strong, nonatomic, readonly) NSDictionary <NSString *, id>* _Nullable attrStatus;
[rootDevice]
GizWifiDevice类型。当前设备所属的网关设备
定义
@property (weak, nonatomic, readonly) GizWifiDevice * _Nullable rootDevice;
[netType]
GizWifiDeviceNetType类型。设备网络类型
定义
@property (assign, nonatomic, readonly) GizWifiDeviceNetType netType;
API定义
[setSubscribe:autoGetDeviceStatus:]
设备订阅或解除订阅。订阅了设备,表示使用者关心这个设备的消息推送。解除订阅,表示使用者不关心这个设备的消息推送。订阅设备后,SDK将自动登录和自动绑定设备。解除订阅后,设备连接将自动断开,但不会自动解绑。一般来说,设备订阅都会成功的,SDK会记住设备是否被订阅了
定义
- (void)setSubscribe:(BOOL)subscribed autoGetDeviceStatus:(BOOL)autoGetDeviceStatus;
参数
属性名 | 描述 |
---|---|
subscribed | 订阅或者解除订阅。YES表示订阅,NO表示解除订阅 |
autoGetDeviceStatus | 是否自动去获取一次设备状态。YES表示在与设备建立连接成功之后,SDK会主动去获取一次设备状态; NO表示SDK不会主动获取设备状态 |
回调
- (void)device:(GizWifiDevice * _Nonnull)device didSetSubscribe:(GizError * _Nonnull)result isSubscribed:(BOOL)isSubscribed;
回调参数
属性名 | 描述 |
---|---|
device | 回调的 GizWifiDevice 对象 |
result | 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,设备的订阅状态无变化 |
isSubscribed | 设备是被订阅了还是被取消订阅了。YES表示被订阅,NO表示被解除订阅 |
代码示例
// mDevice为从设备列表中取到的设备对象
mDevice.delegate = self;
// 订阅设备并自动获取一次设备状态
[mDevice setSubscribe:YES autoGetDeviceStatus:YES];
// 订阅设备不自动获取状态
[mDevice setSubscribe:YES autoGetDeviceStatus:NO];
// 解除订阅
[mDevice setSubscribe:NO autoGetDeviceStatus:NO];
// 实现回调
- (void)device:(GizWifiDevice *)device didSetSubscribe:(NSError *)result isSubscribed:(BOOL)isSubscribed {
if(result.code == GIZ_SDK_SUCCESS) {
// 订阅或解除订阅成功
} else {
// 操作失败
}
}
[getDeviceStatus]
获取设备状态。已订阅的设备变为可控状态后才能获取到状态。如果设备是变长数据点类型,则可查询指定的数据点状态
定义
- (void)getDeviceStatus:(NSArray <NSString *>* _Nullable)attrs;
参数
属性名 | 描述 |
---|---|
attrs | 要查询状态的数据点名称,为NSString类型数组。此参数默认值为nil。SDK默认返回设备的所有数据点状态。若要查询某些数据点的状态,参数应指定为要查询的数据点名称数组 |
回调
设备回复或上报的数据中,当 SDK 遇到无法解析的数据时,会作为透传数据处理,此时错误码为 GIZ_SDK_SUCCESS
- (void)device:(GizWifiDevice * _Nonnull)device didReceiveData:(GizError * _Nonnull)result attrStatus:(NSDictionary * _Nullable)attrStatus withSN:(NSNumber * _Nullable)sn;
回调说明
回调参数
属性名 | 描述 |
---|---|
device | 回复状态的设备对象 |
result | 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,dataMap为空字典 |
attrStatus | 设备上报的数据内容,字典格式: { "data": [value], // value 为 NSDictionary 类型,内容为设备状态键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "alerts": [value], // value 为 NSDictionary 类型,内容为设备报警键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "faults": [value], // value 为 NSDictionary 类型,内容为设备故障键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "binary": [value], // value 为 NSData 类型,内容为二进制数据,指没有在 site 上定义数据点的需要透传的数据 } |
sn | 控制指令的应答序号,此应答序号与 APP 发送控制指令的序号一致。设备主动上报数据和回复状态查询时,序号为0 |
代码示例
// mDevice为从设备列表中取到的设备对象
mDevice.delegate = self;
[mDevice getDeviceStatus:nil];
// 实现回调
- (void)device:(GizWifiDevice * _Nonnull)device didReceiveData:(GizError * _Nonnull)result attrStatus:(NSDictionary * _Nullable)attrStatus withSN:(NSNumber * _Nullable)sn {
if(result.code == GIZ_SDK_SUCCESS) {
// 查询成功
} else {
// 查询失败
}
}
[write]
给设备发送控制指令。已订阅的设备变为可控状态后才能发送控制指令
定义
- (void)write:(NSDictionary <NSString *, id>* _Nonnull)data withSN:(int)sn;
参数
属性名 | 描述 |
---|---|
data | 该参数为要发给设备的操作指令。为字典格式,字典键值对可按以下方式填充:1、如果设备有数据点定义,操作指令一次可以下发多个数据点。字典中的key为数据点名称,value为数据点的值。value类型要与数据点定义一致:(1)如果数据点为布尔类型,则value为NSNumber类型;(2)如果数据点为数值类型,则value为NSNumber类型;(3)如果数据点为枚举类型,则value为枚举序号(NSNumber类型)或者枚举字符串(NSString类型);如果数据点为扩展类型,则value为NSData类型;2、如果设备操作采用透传方式,透传指令一次只能下发一条。透传数据的key为”binary”,value为NSData类型 |
sn | 控制命令序号,用于对应控制命令应答数据。控制确认回调时会返回这个sn |
回调
设备回复或上报的数据中,当 SDK 遇到无法解析的数据时,会作为透传数据处理,此时错误码为 GIZ_SDK_SUCCESS
- (void)device:(GizWifiDevice * _Nonnull)device didReceiveData:(GizError * _Nonnull)result attrStatus:(NSDictionary * _Nullable)attrStatus withSN:(NSNumber * _Nullable)sn;
回调参数
属性名 | 描述 |
---|---|
device | 回复状态的设备对象 |
result | 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,dataMap为空字典 |
attrStatus | 设备上报的数据内容,字典格式: { "data": [value], // value 为 NSDictionary 类型,内容为设备状态键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "alerts": [value], // value 为 NSDictionary 类型,内容为设备报警键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "faults": [value], // value 为 NSDictionary 类型,内容为设备故障键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "binary": [value], // value 为 NSData 类型,内容为二进制数据,指没有在 site 上定义数据点的需要透传的数据 } |
sn | 控制指令的应答序号,此应答序号与 APP 发送控制指令的序号一致。设备主动上报数据和回复状态查询时,序号为0 |
代码示例
// mDevice为从设备列表中取到的设备对象
mDevice.delegate = self;
// 开灯
int sn = 5;
[mDevice write: @{@"LED_OnOff": @(YES)} sn:@(sn)];
// 实现回调
- (void)device:(GizWifiDevice * _Nonnull)device didReceiveData:(GizError * _Nonnull)result attrStatus:(NSDictionary * _Nullable)attrStatus withSN:(NSNumber * _Nullable)sn {
if(result.code == GIZ_SDK_SUCCESS) {
if (sn == 5) {
// 命令序号相符,开灯指令执行成功
} else {
// 其他命令的ack或者数据上报
}
} else {
// 执行失败
}
}
[setCustomInfo]
修改设备的备注和别名。设备绑定后才能修改。 请注意,remark和alias内容中若有以下左边的5个字符,将被转义为右边的内容: & --> & < --> < --> > " --> " ' --> '
定义
- (void)setCustomInfo:(NSString* _Nullable)remark alias:(NSString* _Nullable)alias;
参数
属性名 | 描述 |
---|---|
remark | 待修改的备注信息。传 nil表示不修改,传@""则会覆盖为空串 |
alias | 待修改的设备别名。传 nil表示不修改,传@""则会覆盖为空串 |
回调
- (void)device:(GizWifiDevice * _Nonnull)device didSetCustomInfo:(GizError * _Nonnull)result;
回调参数
属性名 | 描述 |
---|---|
device | 修改备注和别名的设备对象 |
result | 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败 |
代码示例
// mDevice为从设备列表中取到的设备对象
mDevice.delegate = self;
[mDevice setCustomInfo:@"your_remark" alias:@"your_alias"];
// 实现回调
- (void)device:(GizWifiDevice *)device didSetCustomInfo:(NSError *)result {
if(result.code == GIZ_SDK_SUCCESS) {
// 修改成功
} else {
// 修改失败
}
}
[getHardwareInfo]
获取硬件信息。不订阅设备也可以使用此接口,只要设备连入正常工作模式即可
定义
- (void)getHardwareInfo;
回调
- (void)device:(GizWifiDevice * _Nonnull)device didGetHardwareInfo:(GizError * _Nonnull)result hardwareInfo:(NSDictionary <NSString *, NSString *>* _Nullable)hardwareInfo;
回调参数
属性名 | 描述 |
---|---|
device | 返回硬件信息的设备对象 |
result | 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,hardwareInfo为nil |
hardwareInfo | 硬件信息。对应的硬件信息键值对有: { "wifiHardVersion": [value], // value 为 NSString 类型,设备的 Wifi 模组硬件版本号 "wifiSoftVersion": [value], // value 为 NSString 类型,设备的 Wifi 模组软件版本号 "wifiFirmwareId": [value], // value 为 NSString 类型,设备的 Wifi 固件 ID "wifiFirmwareVer": [value], // value 为 NSString 类型,设备的 Wifi 固件版本 "mcuHardVersion": [value], // value 为 NSString 类型,设备的硬件版本号 "mcuSoftVersion": [value], // value 为 NSString 类型,设备的软件版本号 "productKey": [value], // value 为 NSString 类型,设备的产品唯一标识码 } |
代码示例
// mDevice为从设备列表中取到的设备对象
mDevice.delegate = self;
[mDevice getHardwareInfo];
// 实现回调
- (void)device:(GizWifiDevice *)device didGetHardwareInfo:(NSError *)result hardwareInfo:(NSDictionary *)hardwareInfo {
if(result.code == GIZ_SDK_SUCCESS) {
// 获取成功
} else {
// 获取失败
}
}
[exitProductionTesting]
退出产测模式。不订阅设备就可以调用此接口,设备进入产测模式后会响应
定义
- (void) exitProductionTesting;
回调
- (void)device:(GizWifiDevice *)device didExitProductionTesting:(NSError *)result;
回调参数
属性名 | 描述 |
---|---|
device | 退出产测的设备对象 |
result | 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败 |
代码示例
// mDevice为从设备列表中取到的设备对象
mDevice.delegate = self;
[mDevice exitProductionTesting];
// 实现回调
- (void)device:(GizWifiDevice *)device didExitProductionTesting:(NSError *)result {
if(result.code == GIZ_SDK_SUCCESS) {
// 成功
} else {
// 失败
}
}