更新时间:2024-05-15 08:07:45下载pdf
本文介绍设备信息的获取和管理能力等安卓版接口信息。包含设备初始化、设备监听、设备控制、查询设备信息、修改设备名称、移除设备、设备恢复出厂设置、查询 Wi-Fi 信号强度、回收设备资源等。
设备相关的返回数据都采用异步消息的方式通知接收者。
同时,也提供了控制指令下发,设备固件升级的接口。
IThingDevice
类提供了设备状态通知能力,通过注册回调函数,您可以方便地获取设备数据接收、设备移除、设备上下线、手机网络变化的通知。
DeviceBean
设备信息数据类型:
属性 | 类型 | 说明 |
---|---|---|
devId | String | 设备 ID。 |
name | String | 设备名称。 |
iconUrl | String | 图标地址。 |
schema | String | 设备控制数据点的类型信息。 |
productId | String | 产品 ID,同一个产品 ID 的设备的 schema 信息一致。 |
timezoneId | String | 设备所在的时区。 |
category | String | (已弃用)设备类型。如果您需要获取设备类型,请使用产品信息的category字段。 |
pv | String | 网关协议版本。 |
bv | String | 网关通用固件版本。 |
time | Long | 设备激活时间。 |
schemaMap | Map | schema 的缓存数据。 |
dps | Map | 设备当前数据信息。key 是 DP ID,value 是取值。详情请参考 设备功能点 章节。 |
getIsOnline | Boolean | 设备是否在线,指局域网或者云端在线。 |
isLocalOnline | Boolean | 设备的局域网在线状态。 |
supportGroup | Boolean | 设备是否支持群组,如果不支持请到 涂鸦开发者平台 开启此功能。 |
isShare | Boolean | 是否是分享的设备。 |
virtual | Boolean | 是否是虚拟设备。 |
isZigBeeWifi | Boolean | 是否是 Zigbee 网关设备。 |
hasZigBee | Boolean | 是否有 Zigbee 设备。 |
nodeId | String | 用于网关和子设备类型的设备。属于子设备的一个属性,标识其短地址 ID,一个网关的子设备的 nodeId 都是唯一的。 |
meshId | String | 用于网关和子设备类型的设备。属于子设备的一个属性,标识其网关 ID。 |
lon | String | 设备所在经度信息。 |
lat | String | 设备所在纬度信息。 |
productBean | ProductBean | 产品信息。 |
accessType | NSInteger | 0: Tuya Device, 1: Matter Device, 2: TuyaLink Device |
thingModel | ThingSmartThingModel | 物模型,当accessType == 2 时需要用到Before using it, retrieve it through -getThingModelWithProductId:(String pid,IThingDataCallback<ThingSmartThingModel> callback) or getThingModelWithProductId(String pid, String productVersion,IThingDataCallback<ThingSmartThingModel> callback); 拉取 |
设备控制时,如果涉及到经纬度 lon
和 lat
,请在配网前调用 setLatAndLong
设置经纬度:
ThingSdk.setLatAndLong(String latitude, String longitude)
ProductBean
产品信息数据类型:
属性 | 类型 | 说明 |
---|---|---|
category | String | 设备类型缩写,用于标注该产品是什么设备。例:kg 表示开关、cz 表示插座。详情请参考 标准指令集。 |
capability | int | 联网通信能力标位:
|
resptime | long | 查询的服务端数据相应时间。 |
supportSGroup | boolean | 是否支持标准群组。 |
控制设备前必须初始家庭化数据,调用下面的方法获取家庭下的设备信息。
每次 App 活跃期间,初始化一次即可。
此外,切换家庭也需要进行初始化。
ThingHomeSdk.newHomeInstance(homeId).getHomeDetail(new IThingHomeResultCallback() {
@Override
public void onSuccess(HomeBean homeBean) {
}
@Override
public void onError(String errorCode, String errorMsg) {
}
});
该接口的 onSuccess
方法中将返回 HomeBean
。
然后调用 HomeBean
的 getDeviceList
即可获得设备列表。
List<DeviceBean> deviceList = homeBean.getDeviceList();
根据设备 ID 初始化设备控制类 IThingDevice
。
接口说明
ThingHomeSdk.newDeviceInstance(String devId);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID。 |
Java 示例
IThingDevice mDevice = ThingHomeSdk.newDeviceInstance(deviceBean.getDevId());
IThingDevice
提供设备相关信息的监听,包含:
接口说明
IThingDevice.registerDevListener(IDevListener listener)
参数说明
参数 | 说明 |
---|---|
listener | 设备状态监听 |
IDevListener
接口
public interface IDevListener {
/**
* DP 数据更新
*
* @param devId 设备 ID
* @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true}
*/
void onDpUpdate(String devId, String dpStr);
/**
* 设备移除回调
*
* @param devId 设备id
*/
void onRemoved(String devId);
/**
* 设备上下线回调。如果设备断电或断网,服务端将会在3分钟后回调到此方法。
*
* @param devId 设备 ID
* @param online 是否在线,在线为 true
*/
void onStatusChanged(String devId, boolean online);
/**
* 网络状态发生变动时的回调
*
* @param devId 设备 ID
* @param status 网络状态是否可用,可用为 true
*/
void onNetworkStatusChanged(String devId, boolean status);
/**
* 设备信息更新回调
*
* @param devId 设备 ID
*/
void onDevInfoUpdate(String devId);
}
其中,设备功能点说明请参考 设备功能点 章节。
Java 示例
mDevice.registerDevListener(new IDevListener() {
@Override
public void onDpUpdate(String devId, String dpStr) {
}
@Override
public void onRemoved(String devId) {
}
@Override
public void onStatusChanged(String devId, boolean online) {
}
@Override
public void onNetworkStatusChanged(String devId, boolean status) {
}
@Override
public void onDevInfoUpdate(String devId) {
}
});
请勿使用 void registerDeviceListener(IDeviceListener listener)
方法,此方法需要配合标准设备使用,该方法暂未开放使用。
当不需要监听设备时,取消设备监听。
接口说明
IThingDevice.unRegisterDevListener()
Java 示例
mDevice.unRegisterDevListener();
查询单个 DP 数据,查询后的数据会通过 IDevListener.onDpUpdate()
接口进行异步回调。
该接口主要是针对不主动发送数据的设备 DP,例如倒计时信息查询。常规查询 DP 数据值时,可通过 DeviceBean
中的 getDps()
获取。
接口说明
mDevice.getDp(String dpId, IResultCallback callback);
Java 示例
mDevice.getDp(dpId, new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
重命名设备,并支持多设备同步。
接口说明
// 修改设备名称
mDevice.renameDevice(String name,IResultCallback callback);
Java 示例
mDevice.renameDevice("设备名称", new IResultCallback() {
@Override
public void onError(String code, String error) {
// 修改设备名称失败
}
@Override
public void onSuccess() {
// 修改设备名称成功
}
});
后续步骤
重命名成功后,IDevListener.onDevInfoUpdate()
会收到通知。调用以下方法可以获取最新数据,然后刷新设备信息即可。
ThingHomeSdk.getDataInstance().getDeviceBean(String devId);
从用户设备列表中移除设备。
接口说明
void removeDevice(IResultCallback callback);
Java 示例
mDevice.removeDevice(new IResultCallback() {
@Override
public void onError(String errorCode, String errorMsg) {
}
@Override
public void onSuccess() {
}
});
设备恢复出厂设置后,设备的相关数据会被清除掉,并重新进入待配网状态。如果是 Wi-Fi 设备,默认进入 Wi-Fi 快连模式。
接口说明
void resetFactory(IResultCallback callback);
Java 示例
mDevice.resetFactory(new IResultCallback() {
@Override
public void onError(String errorCode, String errorMsg) {
}
@Override
public void onSuccess() {
}
});
查询设备 Wi-Fi 的信号强度。
接口说明
void requestWifiSignal(WifiSignalListener listener);
Java 示例
mDevice.requestWifiSignal(new WifiSignalListener() {
@Override
public void onSignalValueFind(String signal) {
}
@Override
public void onError(String errorCode, String errorMsg) {
}
});;
应用或者 Activity 关闭时,可以调用此接口,回收设备占用的资源。
接口说明
void onDestroy()
Java 示例
mDevice.onDestroy();
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈