GizWifiDevice 类

机智云 Wifi 的设备类。GizWifiDevice 类为 APP 开发者提供设备订阅、设备数据通知、设备实时状态通知,例如热水器的水温等功能。该设备实例是通过 GizWifiDevice 类分配出来的,不能自行创建。

目录

属性访问

[setListener]

设置设备的监听器

定义

public void setListener(GizWifiDeviceListener Listener);

参数

属性名 描述
listener 设备监听器

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(new GizWifiDeviceListener() {});

[getMacAddress]

获取设备的Mac地址。如果是 VIRTUAL:SITE,则是虚拟设备

定义

public String getMacAddress();

[getDid]

设备云端身份标识DID

定义

public String getDid()

[getIPAddress]

获取设备的ip地址。大循环设备的ip地址为云端服务器域名

定义

public String getIpAddress()

[getProductKey]

获取设备的产品类型识别码

定义

public String getProductKey()

[getProductName]

获取设备的产品名称

定义

public String getProductName()

[getRemark]

获取设备的备注信息。设备绑定后可以修改,默认为空

定义

public String getRemark()

[getAlias]

获取设备的别名。设备绑定后可以修改,默认为空

定义

public String getAlias()

[isLAN]

判断设备是小循环还是大循环

定义

public boolean isLAN()

[isBind]

判断设备是否已绑定

定义

public boolean isBind()

[isDisabled]

判断设备是否已在云端注销

定义

public boolean isDisabled()

[getProductType]

GizWifiDeviceType类型。设备分类,是轻网关子设备还是普通设备

定义

public GizWifiDeviceType getProductType()

[getNetStatus]

获取设备的网络状态,详见GizWifiDeviceNetStatus枚举定义

定义

public GizWifiDeviceNetStatus getNetStatus()

[isSubscribed]

判断设备是否已订阅

定义

public boolean isSubscribed()

[isProductDefined]

判断设备是否定义了产品数据点

定义

public boolean isProductDefined()

[isLowPower]

判断设备是否低功耗设备

定义

public boolean isLowPower();

[isDormant]

判断设备是否休眠

定义

public boolean isDormant();

[getStateLastTimestamp]

获取设备最后的活跃时间

定义

public int getStateLastTimestamp();

[sleepDuration]

获取设备休眠时长

定义

public int getSleepDuration();

[getAttrStatus]

获取缓存的最新设备状态

定义

public ConcurrentHashMap<String, Object> getAttrStatus()

[getRootDevice]

获取根设备。子设备的根设备为网关,单品没有根设备为null

定义

public GizWifiDevice getRootDevice()

[getNetType]

获取设备的网络类型,详见GizDeviceNetType枚举定义

定义

public GizDeviceNetType getNetType();

回调接口

以下是GizWifiDevice类提供的所有回调接口,将在在后续API定义中详细介绍:

  • didGetHardwareInfo:设备硬件信息的回调
  • didSetCustomInfo:设置设备绑定信息的回调
  • didExitProductionTesting:设备退出产测的回调
  • didSetSubscribe:设备订阅或解除订阅的回调
  • didUpdateNetStatus:设备网络状态变化通知
  • didReceiveData:控制指令回复或设备状态上报的回调
  • didReceiveAppToDevAttrStatus: 接收非本机发出的设备控制指令(仅支持低功耗设备)

[didUpdateNetStatus]

该回调主动上报设备的网络状态变化,当设备重上电、断电或可控时会触发该回调

回调

public void didUpdateNetStatus(GizWifiDevice device, GizWifiDeviceNetStatus netStatus)

回调参数

属性名 描述
device 回调的 GizWifiDevice 对象
netStatus 设备是离线、在线还是可控状态

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(mListener); 

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
@override
public void didUpdateNetStatus(GizWifiDevice device, GizWifiDeviceNetStatus netStatus) {
}
};

[didReceiveData]

接收到设备状态上报的回调

回调

public void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn);

回调参数

属性名 描述
device 回调的 GizWifiDevice 对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,dataMap为空字典
dataMap 设备上报的数据内容,字典格式: { "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.setListener(mListener); 

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
@Override
public  void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
    }
};

[didReceiveAppToDevAttrStatus]

接收非本机发出的设备控制指令(仅支持低功耗设备)

回调

public void didReceiveAppToDevAttrStatus(GizWifiErrorCode result, GizWifiDevice device,
            ConcurrentHashMap<String, Object> attrStatus, ConcurrentHashMap<String, Object> adapterAttrStatus, int sn);

回调参数

属性名 描述
device 回调的 GizWifiDevice 对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,attrStatus为空字典
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.setListener(mListener); 

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
@Override
public void didReceiveAppToDevAttrStatus(GizWifiErrorCode result, GizWifiDevice device,
            ConcurrentHashMap<String, Object> attrStatus, ConcurrentHashMap<String, Object> adapterAttrStatus, int sn) {
    }
};

API 定义

[setSubscribe]

设备订阅或解除订阅。订阅了设备,表示使用者关心这个设备的消息推送。解除订阅,表示使用者不关心这个设备的消息推送。订阅设备后,SDK将自动登录和自动绑定设备。解除订阅后,设备连接将自动断开,但不会自动解绑。一般来说,设备订阅都会成功的,SDK会记住设备是否被订阅了

定义

public void setSubscribe(boolean subscribed, boolean autoGetDeviceStatus);

参数

属性名 描述
subscribed 订阅或者解除订阅。true表示订阅,false表示解除订阅
autoGetDeviceStatus 是否自动去获取一次设备状态。true表示在与设备建立连接成功之后,SDK会主动去获取一次设备状态; false表示SDK不会主动获取设备状态

回调

public void didSetSubscribe(GizWifiErrorCode result, GizWifiDevice device, boolean isSubscribed)

回调参数

属性名 描述
device 回调的 GizWifiDevice 对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,订阅状态无变化
isSubscribed 设备是被订阅了还是被解除订阅了。true表示被订阅,false表示被解除订阅

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(mListener);
mDevice.setSubscribe(true, true); // 订阅设备,自动获取设备状态
mDevice.setSubscribe(false, false); // 解除订阅

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
@Override
public  void didSetSubscribe(GizWifiErrorCode result, GizWifiDevice device, boolean isSubscribed) {
    if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
        // 订阅或解除订阅成功
    } else {
        // 失败
    }
}
};

[getDeviceStatus]

获取设备状态。已订阅的设备变为可控状态后才能获取到状态。如果设备是变长数据点类型,则可查询指定的数据点状态

定义

public void getDeviceStatus(List<String> attrs)

参数

属性名 描述
attrs 要查询状态的数据点名称,为String类型数组。此参数默认值为null。SDK默认返回设备的所有数据点状态。若要查询某些数据点的状态,参数应指定为要查询的数据点名称数组

回调

设备回复或上报的数据中,当 SDK 遇到无法解析的数据时,会作为透传数据处理,此时错误码为 GIZ_SDK_SUCCESS

public  void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn)

回调参数

属性名 描述
device 回复状态的设备对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,dataMap为空字典
dataMap 设备上报的数据内容,字典格式: { "data": [value], // value为ConcurrentHashMap类型,内容为设备状态键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "alerts": [value], // value为ConcurrentHashMap类型,内容为设备报警键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "faults": [value], // value为ConcurrentHashMap类型,内容为设备故障键值对,[数据点标识名:数据点值],数据点值的类型与site上的定义一致 "binary": [value], // value为Byte[]类型,内容为二进制数据,指没有在site上定义数据点的需要透传的数据 }
sn 控制指令的应答序号,此应答序号与 APP 发送控制指令的序号一致。设备主动上报数据和回复状态查询时,序号为0

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(mListener);
mDevice.getDeviceStatus(null);

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
@Override
public  void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
        if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
            // 查询成功
        } else {
            // 查询失败
        }
    }
};

[write]

给设备发送控制指令。已订阅的设备变为可控状态后才能发送控制指令

定义

public void write(ConcurrentHashMap<String, Object> data, int sn)

参数

属性名 描述
data 该参数为要发给设备的操作指令。为字典格式,字典键值对可按以下方式填充:1、如果设备有数据点定义,操作指令一次可以下发多个数据点。字典中的key为数据点名称,value为数据点的值。value类型要与数据点定义一致:(1)如果数据点为布尔类型,则value为boolean类型;(2)如果数据点为数值类型,则value为int或float类型;(3)如果数据点为枚举类型,则value为枚举序号(int类型)或者枚举字符串 (String类型);(4)如果数据点为扩展类型,则value为Byte[]类型;2、如果设备操作采用透传方式,透传指令一次只能下发一条。字典中的key填充为”binary”,value为Byte[]类型。
sn 控制指令序号,用于对应控制指令应答数据。控制确认回调时会返回这个sn

回调

设备回复或上报的数据中,当 SDK 遇到无法解析的数据时,会作为透传数据处理,此时错误码为 GIZ_SDK_SUCCESS

public void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn)

回调参数

属性名 描述
device 回复状态的设备对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,dataMap为空字典
dataMap 设备上报的数据内容,字典格式: { "data": [value], // value为ConcurrentHashMap类型,内容为设备状态键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "alerts": [value], // value为ConcurrentHashMap类型,内容为设备报警键值对,[数据点标识名:数据点值],数据点值的类型与 site 上的定义一致 "faults": [value], // value为ConcurrentHashMap类型,内容为设备故障键值对,[数据点标识名:数据点值],数据点值的类型与site上的定义一致 "binary": [value], // value为Byte[]类型,内容为二进制数据,指没有在site上定义数据点的需要透传的数据 }
sn 控制指令的应答序号,此应答序号与 APP 发送控制指令的序号一致。设备主动上报数据和回复状态查询时,序号为0

代码示例

// mDevice是从设备列表中获取到的设备实体对象,设置监听
mDevice.setListener(mListener);

/*
 * 此代码为使用sn的示例。如果App使用命令序号sn,sn可设为相应的值
 */
// 订阅设备并变为可控状态后,执行开灯动作
int sn = 0;
ConcurrentHashMap command = new ConcurrentHashMap<String, boolean> ();
command.put("LED_OnOff", true);
mDevice.write(command, sn);

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
@Override
public  void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
        if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
            // 开灯成功
        } else {
            // 开灯失败
        }
    }
};

[setCustomInfo]

修改设备的备注和别名。设备绑定后才能修改。 请注意,remark和alias内容中若有以下左边的5个字符,将被转义为右边的内容: & --> & < --> < --> > " --> " ' --> &#39

定义

public void setCustomInfo(String remark, String alias)

参数

属性名 描述
remark 待修改的备注信息。传 null表示不修改,传””则会覆盖为空串
alias 待修改的设备别名。传 null表示不修改,传””则会覆盖为空串

回调

public void didSetCustomInfo(GizWifiErrorCode result, GizWifiDevice device)

回调参数

属性名 描述
device 修改备注和别名的设备对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(mListener);
mDevice.setCustomInfo("your_remark", "your_alias");

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
  @Override
  public void didSetCustomInfo(GizWifiErrorCode result, GizWifiDevice device) {
    if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
    // 修改成功
    } else {
    // 修改失败
    }
  }
};

[getHardwareInfo]

获取硬件信息。不订阅设备也可以使用此接口,只要设备连入正常工作模式即可

定义

public void getHardwareInfo()

回调

public  void didGetHardwareInfo(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, String> hardwareInfo)

回调参数

属性名 描述
device 返回硬件信息的设备对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败。失败时,hardwareInfo为null
hardwareInfo 硬件信息。对应的硬件信息键值对有:{"wifiHardVersion": [value], // value为String 类型,设备的 Wifi 模组硬件版本号"wifiSoftVersion": [value], // value为String 类型,设备的 Wifi 模组软件版本号"wifiFirmwareId": [value], // value为String 类型,设备的 Wifi 固件 ID"wifiFirmwareVer": [value], // value为String 类型,设备的 Wifi 固件版本"mcuHardVersion": [value], // value为String 类型,设备的硬件版本号"mcuSoftVersion": [value], // value为String 类型,设备的软件版本号"productKey": [value], // value为String 类型,设备的产品唯一标识码}

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(mListener);
mDevice.getHardwareInfo();

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
  @Override
  public  void didGetHardwareInfo(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, String> hardwareInfo) {
    if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
    // 获取成功
    } else {
    // 获取失败
    }
  }
};

[exitProductionTesting]

让设备退出产测模式。不订阅设备就可以调用此接口,设备进入产测模式后会响应

定义

public void exitProductionTesting()

回调

public  void didExitProductionTesting (GizWifiErrorCode result, GizWifiDevice device)

回调参数

属性名 描述
device 返回硬件信息的设备对象
result 详细见 GizWifiErrorCode 枚举定义。GIZ_SDK_SUCCESS 表示成功,其他为失败

代码示例

// mDevice是从设备列表中获取到的设备实体对象
mDevice.setListener(mListener);
mDevice.exitProductionTesting();

// 实现回调
GizWifiDeviceListener mListener = new GizWifiDeviceListener() {
  @Override
  public  void didExitProductionTesting(GizWifiErrorCode result, GizWifiDevice device) {
    if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
    // 执行成功
    } else {
    // 执行失败
    }
  }
};

results matching ""

    No results matching ""