传输数据
public String id; 用户 id
public String email; 用户邮箱地址
public String countryCode; 国家地区区号 中国大陆 0086 public String phone; 手机号
public String name; 昵称
发送/接收数据的最大长度与 init 中的 buffer 的大小有关。
如:buffer设置为 2048,以类型为整型数据点为例,最多可以一次性发送600
个整型数据。
上传数据
开发者需明确每个数据点的 dpid、类型(通过云平台获取)。根据数据点的类型,调用不同的函数将数据点 id、对应数值添加到发送队列中。
目前支持的类型包括整数型、布尔型、枚举型、浮点型、字符型、故障型、二进制。
上传数据时,需保证在云端创建的数据点是可上报的。
构造消息并发送
new CloudMessage.Builder()
.putInt(1, 1) // 发送整型
.putBool(1, 1) // 发送 bool
.putEnum(1, 1) // 发送枚举
.putFloat(1, 1) // 发送浮点型
.putString(1, "1") // 发送字符串
.putBinary(1, new byte[3]) // 发送二进制类型
.putError(1, "1") // 发送错误类型
.setSubId("子设备 id") // 设置子设备 id(如果当前消息是子设
备发出的需要设置子设备 id)
.send(new CloudMessage.OnSendListener() {
@Override
public void onSuccess() {
// 发送成功
}
@Override
public void onError(String message) {
// 发送失败
// message 错误原因
}
});
接收数据
开发者需明确每个数据点的dpid、类型(通过云平台获取)。根据数据点的类型,调用不同的转换函数转换成需要的数值。
目前支持的类型包括整数型、布尔型、枚举型、浮点型、字符型、故障型、二进制。
接收数据时,需保证在云端创建的数据点是可下发的。
IotDeviceSDK.getInstance().setOnCommandListener(new IotDeviceSDK.OnCommandListener() {
@Override
public void onCommand(String subId, int dataId, Object value) {
subId子设备 id 可能为空,当消息对子设备发送的时候不为空
dataid 数据点的 id
value 数据的值,当前数据是什么类型可以强制转换
例如,DataPointType.getValue 工具方法中会强制转换
if (dataId == INT_ID) { // 强制转换的数据类型需要和数据点的 id 匹配 int data = DataPointType.getValue(value);
} else if (dataId == BYTE_ARRAY_ID) {
byte[] data = DataPointType.getValue(value);
} else if (data == FLOAT_ID) {
float data = DataPointType.getValue(value);
} }
});