概述
最近在帮着同学做一个物联网比赛的项目,硬件设备数据都是上传到OneNET平台上的,而平台也提供了用于提取数据的http协议api。于是我索性根据这个api做了一个比较简便的框架。目前已经实现了两块功能,接下来准备增加一个获取数据显示为图表的组件,这也是当时做这个框架最主要的目的。
框架项目地址:https://github.com/Hydri0n/OneNETHelper
以下是项目文档:
本工具实现的功能:
1. 一个简易的框架,只需设置设备id、数据流id,就能通过http协议从OneNET平台上同步获取相关的数据。
2. 一个用于显示历史数据点列表的ListView,自动异步加载数据,并支持上拉加载下一页。
使用方法
添加依赖
方法一:下载本项目源码,导入module。
方法二:从jitpack上下载依赖:
在项目build.gradle中添加:allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
在module的build.gradle中添加依赖(项目依赖了retrofit2框架,需要一同导入):
dependencies { implementation 'com.github.Hydri0n:OneNETHelper:0.3' implemnetation 'com.squareup.retrofit2:retrofit:2.3.0' implemnetation 'com.squareup.retrofit2:converter-gson:2.3.0' }
使用框架同步获取数据
实例化一个Device类,设置设备的相关信息:
Device device = new Device("设备的id",
"设备的api-key");
得到一个Device实例后,调用它的相应方法同步获取你需要的数据:- 获取设备的名称:
device.getDeviceTitle()
- 查询设备是否在线,返回一个布尔值:
device.isOnline()
- 获取数据流的一个最新的数据,返回一个DeviceDataPoint的实例:
device.getCurrentDataPoint("数据流id")
你可以通过DeviceDataPoint的getValue()方法和getTime()方法来得到该数据点的值与更新时间。 - 获取数据流在两个时间区间内的所有数据点:
device.getDataPointsWithinLimit(数据流id,开始时间,结束时间)
你也可以通过getDataPoints()方法,设置任意的参数组合来获取需要的数据。该方法的具体参数及含义如下:
limit 返回的数据点个数上限, startTime 提取数据点的开始时间, endTime 提取数据点的结束时间, duration 查询时间区间,单位为s, cursor 指定本次请求继续从cursor位置开始提取数据, sort 升序(ASC)/倒序(DESC)
使用示例:
//获取并遍历两个时间点间所有的数据点 Device device = new Device("设备id","设备apikey"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date2 = format.parse("2018-05-12 21:41:02"); Date date1 = format.parse("2018-05-13 21:40:48"); List dataPoints = device.getDataPointsBetweenTwoTimes( "temp",date1,date2); for (DeviceDataPoint p:dataPoints) { System.out.println(p.getValue() + " " +p.getTime()); }
*另外需要注意的是,以上方法都是同步加载数据,所以不能在安卓应用的主线程中运行。
- 获取设备的名称:
创建一个显示数据流历史数据的列表组件
该ListView组件用于倒序显示一个数据流的所有历史数据,上拉至底部时加载更多数据。
使用时,直接在activity的布局文件中添加一个DataPointsListView:<xyz.hydrion.onenethelper.DataPointsListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"/>
在获取该组件的实例后,调用
setDataStream(String devId,String apiKey,String dataStreamId)
方法,组件即会自动设置adapter并异步加载数据。
此后你也可以通过调用changeDataStream()方法来更改列表加载的数据流。
最后
以上就是飞快秋天为你收集整理的一个适用于Android,方便从OneNET平台获取数据、显示为列表的工具的全部内容,希望文章能够帮你解决一个适用于Android,方便从OneNET平台获取数据、显示为列表的工具所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复