文章目录
前言
上个专栏介绍了很多关于FlexManager设备云端数据的各种操作,相信大家都有看了。本专栏将就怎么使用设备云数据库的数据进行自主客户端APP开发的一些知识点做一下细致讲解。当然,自始至终,我只讲自己擅长的领域,只分享某一块自己真实应用的体验和经验。本篇讲解使用okhttp通过apiBaseUrl获取FlexManager监控点数据。
提示:以下是本篇文章正文内容,下面案例可供参考

一、获取监控点值
1、接口功能
【apiBaseUrl】该接口可用于用户获取监控点值。
2、请求地址:
[apiBaseUrl]v2/dmon/value/get?boxNo={boxNo}
3、地址参数说明
| 参数名 | 数据类型 | 参数详情 |
|---|---|---|
| apiBaseUrl | string | 公有云地址为:http://fbcs101.fbox360.com/api/,若私有云的话改为对应的私有云配置域名。 |
| boxNo | string | FBox的序列号 |
4、请求方式
请求方式为POST。
请求Headers如下所示:
| 参数名 | 数据类型 | 参数详情 |
|---|---|---|
| Authorization | string | Bearer+ 空格+登录接口中获得的access_token |
请求的Body为:
JSON对象
| 字段名 | 类型 | 描述 |
|---|---|---|
| ids | jarray | 监控点id集合,与names二选一,使用名称优先,少于100个元素。(优先使用ids参数传参) |
| timeOut | int | 最大读取超时,null为取服务器默认值(6000ms) |
| groupnames | jarray | 用于不同组下存在同名监控点的情况。与监控点名称集合联合使用,组名与监控点名称一 一对应 |
| names | jarray | 监控点名称集合,与ids二选一,使用名称优先,少于100个元素。 |
5、响应成功
响应成功后返回JSON数组:
| 字段名 | 类型 | 描述 |
|---|---|---|
| id | string | 监控点Id |
| timestamp | datetime | 时间戳,由于从缓存里拉的数据,所以需要时间戳来判断是否已经过期,UTC时间 |
| dataType | int | 数据类型,见附录二 |
| value | string/int | 值,根据数据类型返回值类型。 |
| name | string | 监控点名称 |
| boxId | long | 盒子Id |
| status | int | 监控点状态,0:正常,1:无数据,2:超时,3:错误,4:Socket异常,5:FDS错误,16:未完成 |
| connState | int | 盒子连接状态, 0:未知 , 1:已连接 ,2:超时, 3:断开 |
| connStateTimestamp | datatime | 盒子的上线时间 |
7、返回码
| 参数名 | 参数描述 |
|---|---|
| 200 | 执行成功 |
| 401 | accessToken过期 |
| 400 | 错误信息在HTTP Header里[X-FBox-Code],详细见附录三 |
| 404 | 接口不存在,请检查URL |
| 429 | 访问接口频率过快,详情见429状态码 |
二、通讯测试
1、ApiPost7调试
使用请求地址URL:[apiBaseUrl]v2/dmon/value/get?boxNo={boxNo},加入apiBaseUrl、boxNo后,最终请求地址为http://fbcs101.fbox360.com/api/v2/dmon/value/get?boxNo=300222032522,如图所示:

然后请求Headers为Bearer+ 空格+登录接口中获得的access_token,如图所示:
access_token要去登录请求里边获取,前面一篇已经讲过了,如图所示来操作:

请求一波获取最新access_token,然后粘贴或者替换到分组下所有数据监控点请求中的Authorization,然后就可以执行请求了。
最后请求的body设置,其json数据如下:
{
"names":["输送手动状态","输送自动状态","输送EDI水箱液位","混床前压力1","超滤前压力1","超滤后压力1","混床前压力2","超滤前压力2","超滤后压力2","回水电阻1","回水电阻2","回水流量1","回水流量2","输送泵1-1报警","输送泵1-2报警","输送泵2-1报警","输送泵2-2报警"],
"graoupnames":["输送运行参数"],
"timeout":null
}
2、响应成功讲解
我们先来看看FlexManager中的数据点位实时数据情况,如图所示:

响应成功后接口返回的这个设备输送运行参数监控点数据如下所示:

[
{
"id": "251608640135372207",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 0,
"name": "输送手动状态",
"value": 1,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251608640135372209",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 0,
"name": "输送自动状态",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251622487291336316",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "输送EDI水箱液位",
"value": 78.48456,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "256050870111706871",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "混床前压力1",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "256050892302720783",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "超滤前压力1",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702200437316933",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "超滤后压力1",
"value": -0.004557168,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702241141988995",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "混床前压力2",
"value": 0.0028211041,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702256326418153",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "超滤前压力2",
"value": 0.006799584,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702270205370103",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "超滤后压力2",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251608640122789225",
"timestamp": "2022-10-22T23:24:58.0129216Z",
"dataType": 16,
"name": "回水电阻1",
"value": 9.616957,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251622955687091526",
"timestamp": "2022-10-22T23:24:58.0129216Z",
"dataType": 16,
"name": "回水电阻2",
"value": 4.9705615,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251700808990594345",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "回水流量1",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251700891185321401",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 16,
"name": "回水流量2",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251608640129080713",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 0,
"name": "输送泵1-1报警",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702372229714657",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 0,
"name": "输送泵1-2报警",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702389355057912",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 0,
"name": "输送泵2-1报警",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
},
{
"id": "251702403323138824",
"timestamp": "2022-10-22T23:23:57.9728361Z",
"dataType": 0,
"name": "输送泵2-2报警",
"value": 0,
"boxId": "4969255108963659325",
"status": 0,
"connState": 1,
"connStateTimestamp": "2022-10-22T09:16:26.1114341Z"
}
]
三、okhttp通讯代码编写
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"names\":[\"输送手动状态\",\"输送自动状态\",\"输送EDI水箱液位\",\"混床前压力1\",\"超滤前压力1\",\"超滤后压力1\",\"混床前压力2\",\"超滤前压力2\",\"超滤后压力2\",\"回水电阻1\",\"回水电阻2\",\"回水流量1\",\"回水流量2\",\"输送泵1-1报警\",\"输送泵1-2报警\",\"输送泵2-1报警\",\"输送泵2-2报警\"],\r\n \"graoupnames\":[\"输送运行参数\"],\r\n \"timeout\":null\r\n}");
Request request = new Request.Builder()
.url("http://fbcs101.fbox360.com/api/v2/dmon/value/get?boxNo=300222032522")
.post(body)
.addHeader("Authorization", "Bearer 空格后+你的登录access_token ")
.build();
Response response = client.newCall(request).execute();
四、andriod studio实战应用
1、获取access_token

获取access_token后封装进CCC2。
2、通过access_token获取监控点数据
然后是利用CCC2获取监控点数据的代码,如下图所示:

3、实战最终效果

总结
以上就是今天要讲的内容,本文仅仅介绍了通过apiBaseUrl获取FlexManager监控点数据,而FlexManager提供了大量的API调用,同学们可以再继续深入了解一下本篇以后的内容。










