当前位置: 首页 > news >正文

【嵌入式数据库】一文带你吃透通过apiBaseUrl获取FlexManager监控点数据

文章目录

  • 前言
  • 一、获取监控点值
    • 1、接口功能
    • 2、请求地址:
    • 3、地址参数说明
    • 4、请求方式
    • 5、响应成功
    • 7、返回码
  • 二、通讯测试
    • 1、ApiPost7调试
    • 2、响应成功讲解
  • 三、okhttp通讯代码编写
  • 四、andriod studio实战应用
    • 1、获取access_token
    • 2、通过access_token获取监控点数据
    • 3、实战最终效果
  • 总结

前言

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


提示:以下是本篇文章正文内容,下面案例可供参考
在这里插入图片描述

一、获取监控点值

1、接口功能

【apiBaseUrl】该接口可用于用户获取监控点值。

2、请求地址:

[apiBaseUrl]v2/dmon/value/get?boxNo={boxNo}

3、地址参数说明

参数名数据类型参数详情
apiBaseUrlstring公有云地址为:http://fbcs101.fbox360.com/api/,若私有云的话改为对应的私有云配置域名。
boxNostringFBox的序列号

4、请求方式

请求方式为POST。

请求Headers如下所示:

参数名数据类型参数详情
AuthorizationstringBearer+ 空格+登录接口中获得的access_token

请求的Body为:
JSON对象

字段名类型描述
idsjarray监控点id集合,与names二选一,使用名称优先,少于100个元素。(优先使用ids参数传参)
timeOutint最大读取超时,null为取服务器默认值(6000ms)
groupnamesjarray用于不同组下存在同名监控点的情况。与监控点名称集合联合使用,组名与监控点名称一 一对应
namesjarray监控点名称集合,与ids二选一,使用名称优先,少于100个元素。

5、响应成功

响应成功后返回JSON数组:

字段名类型描述
idstring监控点Id
timestampdatetime时间戳,由于从缓存里拉的数据,所以需要时间戳来判断是否已经过期,UTC时间
dataTypeint数据类型,见附录二
valuestring/int值,根据数据类型返回值类型。
namestring监控点名称
boxIdlong盒子Id
statusint监控点状态,0:正常,1:无数据,2:超时,3:错误,4:Socket异常,5:FDS错误,16:未完成
connStateint盒子连接状态, 0:未知 , 1:已连接 ,2:超时, 3:断开
connStateTimestampdatatime盒子的上线时间

7、返回码

参数名参数描述
200执行成功
401accessToken过期
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调用,同学们可以再继续深入了解一下本篇以后的内容。

相关文章:

  • XTTS基于rman全量迁移Oracle
  • [LeetCode]-使用特殊算法的题目-2
  • 比较CPU和GPU中的矩阵计算
  • 【数据结构】树形结构——线索二叉树
  • 突如其来的第一个1024要笑着过
  • 2022年都快结束了,Java的这些新技术、热门技术,你不会还不知道吧?
  • 【Linux】Linux文件权限的理解
  • 力扣(LeetCode)2008. 出租车的最大盈利(C语言)
  • 【正点原子I.MX6U-MINI应用篇】5、嵌入式Linux在LCD上显示BMP、JPG、PNG图片
  • 四非到保研厦大,我们还有多少路要走----技术人的保研之路
  • 美团Leaf分布式ID源码启动部署
  • 归一化小程序
  • 走过岁月我才发现——云IDE真方便(Python3.8环境测试)
  • SpringBoot核心技术 之 基础入门
  • Linux下编译工具:gcc/g++ の最全使用教程
  • JAVA_NIO系列——Channel和Buffer详解
  • JS笔记四:作用域、变量(函数)提升
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • React16时代,该用什么姿势写 React ?
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue.js-Day01
  • 大快搜索数据爬虫技术实例安装教学篇
  • 动态魔术使用DBMS_SQL
  • 利用DataURL技术在网页上显示图片
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 算法-图和图算法
  • 移动端解决方案学习记录
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 数据库巡检项
  • #pragma multi_compile #pragma shader_feature
  • $(function(){})与(function($){....})(jQuery)的区别
  • (1)bark-ml
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .Net 8.0 新的变化
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @html.ActionLink的几种参数格式
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [20150629]简单的加密连接.txt
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [C++]C++基础知识概述
  • [Codeforces1137D]Cooperative Game
  • [FUNC]判断窗口在哪一个屏幕上
  • [J2ME]如何替换Google Map静态地图自带的Marker