中国移动OneNET Studio物联网平台客户端
OneNET Studio 是新一代物联网中台,向下接入设备,向上承载应用,为用户提供一站式“终端-平台-应用”整体解决方案,帮助企业实现海量设备的快速上云。设备侧提供物联网设备接入、设备管理、数据解析、数据转发、设备运维监控等服务;应用侧提供丰富的API接口、数据推送、消息队列、规则引擎场景联动等功能;同时提供语音通话、LBS定位、数据分析及可视化等增值服务。 详情请参考 https://open.iot.10086.cn/studio/summary
OneNET Studio支持多种方式接入,包括MQTT, CoAP, LWM2M等等, 钛极OS(TiJOS)对MQTT进行了封装方便用户使用, CoAP和LWM2M用户基于标准CoAP,LWM2M接口使用即可。
Java包
tijos.framework.networkcenter.onenet
OneNET Studio MQTT客户端 - OneNetMqttClient类
OneNetMqttClient类中包含了OnetNET MQTT客户端相关的操作,支持OneNET提供的各种设备能力, 包括物模型、基站定位能力等等。 OneNET通过属性、事件、服务构成的物模型描述设备,在设备接入前需要先在OneNET平台中建立相应的产品、物模型,以及对应的设备等等信息, 并获得产品和设备的名称及认证信息, 具体请参考相关的帮助文档。
基础方法
方法 | 说明 |
---|---|
OneNetMqttClient(String productId, String deviceName, String accessKey) | 构造函数, 参数分别为:产品ID,设备名称及设备密钥或产品密钥 |
void connect(IOneNetEventListener listener) | 启动并连接物联网平台 |
void disconnect() | 断开连接并释放 |
注: accessKey可以使用产品密钥,也可使用设备密钥, 为方便管理可使用产品密钥
物模型相关方法
方法 | 说明 |
---|---|
String propertyReport(JSONObject property) | 设备属性上报, params为属性和值的JSON格式数据 |
String eventReport(String eventId, JSONObject params) | 设备事件上报 eventId -事件ID params对应的JSON格式属性值 |
void lbsCellLocationReport() | 基于基站的设备位置信息上报 仅适用于4G系列产品 |
void propertySetReply(String msgId, int code, String msg) | 对于云端属性控制onPropertySetArrived指令回复,code=200成功 |
void serviceInvokeReply(String msgId, String serviceId, int code, String message, JSONObject respParams) | 对于云端异步服务调用onServiceInvokeArrived指令回复,code=200成功 |
IOneNetMqttEventListener物模型事件监听
IOneNetMqttEventListener提供了数据模型相关事件处理接口, 不应在事件中进行长时间的处理从而阻塞其它事件 | 方法 | 说明 | | ---------------------------------------- | ---------- | | void onPropertyReportReply(String msgId, int code, String message); | 属性上报云端回复 | | void onEventReportReply(String msgId, int code, String message); | 事件上报云端回复 | | void onPropertySetArrived(String msgId, JSONObject params); | 收到云端属性控制指令 | | void onServiceInvokeArrived(String msgId, String serviceId, JSONObject params); | 收到云端服务调用事件 |
使用说明
在开发之间请先在平台上建立相应的产品及物模型
调用流程如下
...
// 设备密钥 由平台生成
String productId = "i7uXSShSHQ";
//设备名称建议与模组IMEI关联
String deviceName = "DEV867435057486946";
String accessKey = "//vl4/m7HRehDSt/QfW7x63RZZtvh+PpayOZBZUxf3k=";
// 启动并连接云平台
OneNetMqttClient onenet = new OneNetMqttClient(productId, deviceName, accessKey);
onenet.connect(new OnenetMqttEventListner());
// 物模型中的属性上报
JSONObject speed = new JSONObject();
JSONObject properties = new JSONObject();
//时间戳time UTC时间
properties.put("Speed", speed.put("value", 10.0).put("time", TimeZone.currentUTCTimeMillis()));
//上报属性
onenet.propertyReport(properties);
// 物模型中的事件上报
JSONObject eventValue = new JSONObject();
eventValue.put("code", 10);
JSONObject paramId = new JSONObject();
paramId.put("value", eventValue).put("time", TimeZone.currentUTCTimeMillis());
onenet.eventReport("error",paramId);
...
事件回调,物模型相关事件通过IOneNetMqttEventListener事件监听器回调进行处理
class OnenetMqttEventListner implements IOneNetMqttEventListener {
@Override
public void onMqttConnected() {
System.out.println("onMqttConnected ");
}
@Override
public void onMqttDisconnected(int error) {
System.out.println("onMqttDisconnected " + error);
}
@Override
public void onPropertyReportReply(String msgId, int code, String message) {
System.out.println("onPropertyReportReply " + msgId + " " + code + " " + message);
}
@Override
public void onEventReportReply(String msgId, int code, String message) {
System.out.println("onEventReportReply " + msgId + " " + code + " " + message);
}
@Override
public void onPropertySetArrived(String msgId, JSONObject params) {
System.out.println("msgId " + msgId + " " + params.toString());
}
@Override
public void onServiceInvokeArrived(String msgId, String serviceId, JSONObject params) {
System.out.println("onServiceInvokeArrived " + "msgId " + msgId + " serviceId " + serviceId + " " + params.toString());
}
}