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个字符,将被转义为右边的内容: & --> & < --> < --> > " --> " ' --> &#39

定义

- (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 {
        // 失败
    }
}

results matching ""

    No results matching ""