本文说明如何使用Sensecap Java SDK

概述部分


获取证书

1.登录SenseCAP云平台:

2.前往“安全/API访问密钥”。

3.点击“Create access key”会产生一条密钥ID,点击密钥ID并输入账号密码后,可获取对应的API访问密钥(Password)。

Maven坐标

<dependency>
    <groupId>cc.seeed.sensecap-sdk</groupId>
    <artifactId>sensecap-java-sdk</artifactId>
    <version>1.0-RELEASE</version>
</dependency>

配置SenseCAPClient

//配置client参数
{
    String accessId = " ";
    String accessKey = "";
    int region = RegionType.SENSECAP_CC.getRegion();
  //SenseCAPClient senseCAPClient = new SenseCAPClientBuilder().buildConfig(accessId, accessKey, region);
    OpenApiConfig openApiConfig = new OpenApiConfig(accessId, accessKey, region);
    SenseCAPClient senseCAPClient = new SenseCAPClientBuilder().buildConfig(openApiConfig);
}

组织


获取组织ID

public long getOrganizationId() throws BaseException;

请求参数

返回值

参数类型 描述
long 组织id

请求示例

public static void getOrganizationId() throws BaseException{
    long organizationId = senseCAPClient.getOrganizationManager()
            .getOrganizationId();
    System.out.println(organizationId);
}

分组


创建分组

 public GroupInfo create(String groupName) throws BaseException;

请求参数

参数名 参数类型 描述
groupName String 分组名称

返回值

参数类型 描述
GroupInfo 分组信息

请求示例

public static void createGroup() throws BaseException {
    GroupInfo result = senseCAPClient.getGroupManager().create("SDk-TEST");
    System.out.println(result);
}

更新分组

 public void rename(String groupUUID, String groupName) throws BaseException;

请求参数

参数名 参数类型 描述
groupUUID String 分组UUID
groupName String 分组名称

返回值

请求示例

public static void renameGroup() throws BaseException {
        senseCAPClient.getGroupManager().rename("groupUUID", "SDk-TEST");
    }

删除分组

public void remove(String groupUUID) throws BaseException;

请求参数

参数名 参数类型 描述
groupUUID String 分组UUID

返回值

请求示例

public static void renameGroup() throws BaseException {
        senseCAPClient.getGroupManager().remove("GroupUUID");
    }

获取分组列表

public List<GroupInfo> getGroupList() throws BaseException;

请求参数

参数名 参数类型 描述
groupUUID String 分组UUID

返回值

参数类型 描述
list 分组信息列表

请求示例

public static void getGroupList() throws BaseException {
    GroupResult groupResult = senseCAPClient.getGroupManager().createGroupQuery()
            .build()
            .execute();
    List<GroupInfo> groupInfos = groupResult.toList();
    System.out.println(groupInfos.toString());
}

设备


移动设备

public  void moveDevices(String groupUUID, List<String> deviceEuis) throws BaseException;

请求参数

参数名 参数类型 描述
groupUUID String 分组UUID
deviceEuis array 设备eui集合

返回值

请求示例

public static void moveDeivces() throws BaseException {
    List<String> deviceEuis = Lists.newArrayList();
    deviceEuis.add(deviceEui);
    senseCAPClient.getDeviceManager().moveDevices("groupUUID", deviceEuis);
}

获取分组设备列表

public List<DeviceBaseInfo> getDeviceList(int deviceType, String groupUUID) throws BaseException;

请求参数

参数名 参数类型 描述
groupUUID String 分组UUID
deviceType int 设备类型 1:gateway ,2:node(默认)

返回值

参数类型 描述
list 设备基础信息列表

请求示例

public static void getDeviceList() throws BaseException {
    DeviceResult deviceResult = senseCAPClient.getDeviceManager().createDeviceQuery()
            .deviceType(2)
            .groupUUID("")
            .build()
            .execute();
    List list = deviceResult.deviceList();
    System.out.println(list.toString());
}

获取设备详情列表

public List<DeviceInfo> getDeviceInfo(List<String> deviceEuis, int deviceType)  throws BaseException;

请求参数

参数名 参数类型 描述
deviceEuis String 设备eui集合
deviceType int 设备类型 1:gateway ,2:node(默认)

返回值

参数类型 描述
list 设备详细信息列表

请求示例

public static void getDeviceInfoList() throws BaseException {
    List<String> deviceEuis = Lists.newArrayList();
    deviceEuis.add(deviceEui);
    DeviceResult deviceResult = senseCAPClient.getDeviceManager().createDeviceQuery()
            .deviceEuis(deviceEuis)
            .deviceType(2)
            .build()
            .execute();
    List<DeviceInfo> deviceInfos = deviceResult.deviceInfos();
    System.out.println(deviceInfos.toString());

}

获取设备通道列表

public List<DeviceChannelInfo> getDeviceChannelList(List<String> deviceEuis)  throws BaseException;

请求参数

参数名 参数类型 描述
deviceEuis String 设备eui集合

返回值

参数类型 描述
list 设备通道信息列表

请求示例

public static void getDeviceChannelList() throws BaseException {
    List<String> deviceEuis = Lists.newArrayList();
    deviceEuis.add(deviceEui);
    DeviceResult deviceResult = senseCAPClient.getDeviceManager().createDeviceQuery()
            .deviceEuis(deviceEuis)
            .build()
            .execute();
    List<DeviceChannelInfo> deviceChannelInfos = deviceResult.channelList();
    System.out.println(deviceChannelInfos.toString());
}

获取设备运行状态信息列表

public List<DeviceStatusInfo> getDeviceRunningStatusList(List<String> deviceEuis)  throws BaseException;

请求参数

参数名 参数类型 描述
deviceEuis String 设备eui集合

返回值

参数类型 描述
list 设备运行状态信息列表

请求示例

public static void getDeviceRunningStatusList() throws BaseException {
    List<String> deviceEuis = Lists.newArrayList();
    deviceEuis.add(deviceEui);
    DeviceResult deviceResult = senseCAPClient.getDeviceManager().createDeviceQuery()
            .deviceEuis(deviceEuis)
            .build()
            .execute();
    List<DeviceStatusInfo> deviceStatusInfos = deviceResult.runningStatusList();
    System.out.println(deviceStatusInfos);
}

绑定设备

public boolean bindDevice(String eui, String code, String deviceName, String groupUUID, String longitude, String latitude) throws BaseException;

请求参数

参数名 参数类型 描述
eui String 设备eui
code String 设备code
deviceName String 设备名
groupUUID String 分组UUID
longitude String 纬度
latitude String 经度

返回值

请求示例

public static void bindDevice() throws BaseException {
    senseCAPClient.getDeviceManager().createBinder()
            .eui("")
            .code("")
            .deviceName("")
            .groupUUID("")
            .longitude("")
            .latitude("")
            .build()
            .bind();
}

删除设备

public boolean deleteDevices(List<String> deviceEuis) throws BaseException;

请求参数

参数名 参数类型 描述
deviceEuis String 设备eui集合

返回值

参数类型 描述
boolean 删除是否成功

请求示例

public static void deleteDevices() throws BaseException {
    List<String> deviceEuis = Lists.newArrayList();
    deviceEuis.add(deviceEui);
    boolean b = senseCAPClient.getDeviceManager().deleteDevices(deviceEuis);
}

遥测数据


获取设备最近遥测数据

List<LatestTelemetryDataInfo> getLatestTelemetryData(String deviceEui, int channelIndex, int measurementId) throws BaseException;

请求参数

参数名 参数类型 描述
deviceEui String 设备eui
channelIndex int 通道
measurementId int 测量值id

返回值

参数类型 描述
list 设备最近遥测数据集合

请求示例

public static void getLatestTelemetryData() throws BaseException {
    DataResult dataResult = senseCAPClient.getDataManager().createDataQuery()
            .deviceEui(deviceEui)
            .channelIndex(1)
            .measurementId(4099)
            .build()
            .execute();
    List<LatestTelemetryDataInfo> latestTelemetryDataInfos = dataResult.latestData();
    System.out.println(latestTelemetryDataInfos.toString());
}

获取设备历史遥测数据列表

List<TelemetryDataInfo> getTelemetryDataListCallback(String deviceEui, int channelIndex, int measurementId, int limit, long startTime, long endTime, TelemetryDataCallback var) throws BaseException;

请求参数

参数名 参数类型 描述
deviceEui String 设备eui
channelIndex int 通道
measurementId int 测量值id
limit int 查询条数
startTime long 开始时间
endTime long 结束时间
var TelemetryDataCallback 回调函数

参数说明

  • [startTime>0,endTime>0] 获取指定时间范围历史数据 最长[-30d,now]
  • (startTime=0,endTime>0] 获取默认一天前到endTime历史数据 [-1d,endTime]
  • [startTime>0,endTime=0) 获取开始时间的历史数据并订阅最新消息 [startTime,–]
  • (startTime=0,endTime=0) 只订阅最新消息 [now,–]
  • 服务重启需要用户自行处理重连订阅

返回值

参数类型 描述
list 遥测数据集合

请求示例

public static void getTelemetryDataListCallBack() throws BaseException {
        DataResult dataResult = senseCAPClient.getDataManager().createDataQuery()
            .deviceEui(deviceEui)
            .channelIndex(1)
            //.measurementId(4100)
            .startTime(1605385871000L)
            //.endTime(1605496271000L)
            .limit(100)
            .callback(new TelemetryDataCallback() {
                @Override
                public void messageArrived(TelemetryDataResult var) throws BaseException {
                    System.out.println("Test获取消息: " + var.toString());
                }
            })
            .build()
            .execute();
    List<TelemetryDataInfo> list = dataResult.dataList();
    System.out.println(JSON.toJSONString(list));


}

获取设备折线图数据(openAPI版本)

List<ChartPointDataInfo> getChartPointData(String deviceEui, int channelIndex, int measurementId, int interval, long startTime, long endTime) throws BaseException;

说明

  • 将庞大的数据段分成小数据段,然后输出每个小段的平均值,最长返回一年的数据,
  • 每个测量量最多返回250个点,超过250个点将自动重新划分时间段返回250个点

请求参数

参数名 参数类型 描述
deviceEui String 设备eui
channelIndex int 通道
measurementId int 测量值id
interval int 间隔分钟
startTime long 开始时间 时间戳 毫秒
endTime long 结束时间 时间戳 毫秒

返回值

参数类型 描述
list 设备折线图数据点集合

请求示例

public static void getLatestTelemetryData() throws BaseException {
    DataResult dataResult = senseCAPClient.getDataManager().createDataQuery()
            .startTime(1605600000000L)
            .deviceEui(deviceEui)
            .build()
            .execute();
    List<ChartPointDataInfo> chartPointDataInfos = dataResult.chartPointData();
    System.out.println(JSON.toJSONString(chartPointDataInfos));
}

获取设备折线图数据

List<ChartDataListInfo> getChartDataList(String deviceEui, int channelIndex, int measurementId, int interval, long startTime, long endTime) throws BaseException;

说明

  • 一天内(含),返回所有数据点
  • 时间大于一天,返回interval范围数据点平均值
  • interval勿小于数据上报最小间隔

请求参数

参数名 参数类型 描述
deviceEui String 设备eui
channelIndex int 通道
measurementId int 测量值id
interval int 间隔分钟
startTime long 开始时间 时间戳 毫秒
endTime long 结束时间 时间戳 毫秒

返回值

参数类型 描述
list 设备折线图数据点集合

请求示例

public static void getLatestTelemetryData() throws BaseException {
    DataResult dataResult1 = senseCAPClient.getDataManager().createDataQuery()
            .startTime(1605600000000L)
            .deviceEui(deviceEui)
            .interval(30)
            .build()
            .execute();
    List<ChartDataListInfo> listInfoList = dataResult1.chartData();
    System.out.println(JSON.toJSONString(listInfoList));
}