物联网数据分析服务之数据开发API使用说明

作者:三烽

简介

物联网数据分析,又称Link Analytics,是阿里云为物联网开发者提供的设备智能分析服务,全链路覆盖了设备数据生成、管理(存储)、清洗、分析及可视化等环节。有效降低数据分析门槛,助力物联网开发工作。

数据开发提供云上交互式查询服务,无需数据预处理过程,直接使用标准的SQL语句对设备进行数据分析。
可以对以下三个数据来源中的设备数据进行分析。

  1. 物联网平台的系统数据
  2. 基于产品能力定义的设备数据
  3. 用户授权的业务数据

使用场景

无需实时处理数据的场景均可使用。但是如果对实时性有要求,请使用数据分析服务的实时数据分析功能,因为数据从设备上报到物联网平台,再完成SQL数据分析,有大约5分钟左右的延迟。

  1. 设备监控
  2. 报表统计
  3. 设备行为分析

架构图

物联网数据分析服务之数据开发API使用说明

API服务

前提:已创建好物联网平台上的产品及设备

一、添加新的API
物联网数据分析服务之数据开发API使用说明

二、编写SQL语句
本文中的示例为统计产品表中去重设备数
物联网数据分析服务之数据开发API使用说明

三、测试与发布
物联网数据分析服务之数据开发API使用说明

物联网数据分析服务之数据开发API使用说明

物联网数据分析服务之数据开发API使用说明

物联网数据分析服务之数据开发API使用说明

JAVA调用示例

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>数据开发API-Demo</groupId>
    <artifactId>数据开发API-Demo</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-iot</artifactId>
            <version>6.10.0</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.3.5</version>
        </dependency>
    </dependencies>

</project>

Demo.java

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.iot.model.v20180120.InvokeDataAPIServiceRequest;
import com.aliyuncs.iot.model.v20180120.InvokeDataAPIServiceResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

public class Demo {

    public static void main(String args[]) throws ClientException {
        String accessKey = "*****";
        String accessSecret = "*****";
        DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
        IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
        DefaultAcsClient client = new DefaultAcsClient(profile); //初始化SDK客户端

        //在控制台的属性参数设置里截取API Path的一部分
        String apiSrn = "acs:iot:*:{uid}:serveapi/devicecount";

        //如果有请求参数,则需要设置
        InvokeDataAPIServiceRequest.Param param = new InvokeDataAPIServiceRequest.Param();
        // 请求参数名称
        //param.setParamName("$device_name");
        // 在线状态
        //param.setParamValue("***");

        InvokeDataAPIServiceRequest request = new InvokeDataAPIServiceRequest();
        request.setApiSrn(apiSrn);
        //request.setParams(Arrays.asList(param));
        // 当param为空时用请求方式用GET,如果不为空是用POST
        request.setSysMethod(MethodType.GET);

        try {
            InvokeDataAPIServiceResponse response = client.getAcsResponse(request);

            System.out.println(response.getSuccess());
            System.out.println(response.getErrorMessage());

            // 服务API指定的SQL查询结果
            List<Map<Object, Object>> result = response.getData().getResultList();
            System.out.println(result);

        } catch (ClientException ce) {
            ce.printStackTrace();
        }
    }
}

运行结果

物联网数据分析服务之数据开发API使用说明

上一篇:使用CSS 3创建不规则图形


下一篇:Logic-算法-三个灯泡与三个开关