获取设备列表
IotCloudSDK.getDeviceManager().getDeviceList(new ICallback<List<CloudDevice>>() {
@Override
public void onSuccess\(List<CloudDevice> deviceList\) {
// 成功
}
@Override
public void onError\(ErrorMessage errorMessage\) {
// 失败,查看错误码和错误信息
// errorMessage.getCode\(\), errorMessage.getMessage\(\)
}
});
发现设备
// 注意,目前相关模组仅支持2.4GWIFI,5GWIFI和混合WIFI可能无法正常工作
// WIFI模组目前支持、乐鑫ESP8266、汉枫、庆科Mico、高通等
IotCloudSDK.getDeviceManager().startEspSmart("路由器名称", "路由器密码", 产品id, new DeviceFoundListener() {
@Override
public void onError\(ErrorMessage errorMessage\) {
// 一般不会支持此回调
}
@Override
public void findDevice\(CloudDevice device\) {
// 可能会多次回调,回调在主线程
// 回调了设备信息,其中iotId和iotToken可用于后续绑定设备
// iotId表示设备唯一id
// iotToken主要用于业务上的信息验证,一般不要展示该字段
String iotId = device.getIotId\(\);
String iotToken = device.getIotToken\(\);
}
@Override
public void noFindDevice\(\) {
// 在没有发现设备信息的时候或者超时后总会回调此接口
// 可以表示本次调用完成,不代表没有发现设备
}
});
绑定设备
// 绑定接口,传入设备对象
IotCloudSDK.getDeviceManager().bindDevice(CloudDevice cloudDevice,
new IBindDeviceCallback\(\) {
@Override
public void onSuccess\(BindDeviceInfo bindDeviceInfo\) {
// 绑定成功
}
@Override
public void onError\(ErrorMessage errorMessage, BindDeviceInfo bindDeviceInfo\) {
// 绑定失败
}
});
控制设备
1、控制设备之前需要为该设备所属的产品增加功能点,点击进入产品功能后,添加功能点即可。
// 从产品列表,设备列表获取的元素
// Product的productId
// CloudDevice.getIotId
// CloudDevice.getSubIotId 该字段可能为空,当CloudDevice实例是子设备的时候该字段有值
// CloudDevice.isSubDevice 判断是否是子设备
DeviceController deviceController = new DeviceController(产品id, "设备id", "子设备id如果有");
MessageData.Builder builder = new MessageData.Builder();
// key是云端产品功能页面的数据点功能键
// value可以是 二进制数据类型、int、float、String
// put方法可以多次调用,同一个key不会覆盖,会添加多次
builder.put("key", value);
builder.put("key", value);
builder.put("key", value);
// 发送命令
deviceController.sendCommand(builder, new ISDKCallback() {
@Override
public void onSuccess\(\) {
// 发送成功
}
@Override
public void onError\(ErrorMessage errorMessage\) {
// 发送失败
}
});
接收设备上报消息
deviceController.setDPUPdateListener(new DeviceController.DPUpdateListener() {
@Override
public void onDPUpdate\(List<MessageData> list\) {
// list可能为空
// MessageData.key表示数据点功能键
// 根据key来判断是哪个数据点,然后使用对应的getValue方法,强转类型即可
// getIntValue、getFloatValue、getStringValue、getByteArray
}
});