阿里云AliYun物联网平台使用-客户端API获取设备传感数据

一、前言

        上一篇文章中,已经实现了虚拟数据上云,本文我们将进行上位机客户端的开发,即通过调用阿里云IOT物联网云平台的SDK,开发能获取传感器的遥感数据。

二、云平台操作

        调用API需要用户的AccessKey Secret,这意味着客户端将取得主体账号的所有权限。为了防止恶意用户通过客户端软件获取到全部权限对已部署的系统造成损害,因此建议创建子账号,并对其授予相关的设备的权限。

        通过子账号的AccessKey ID以及AccessKey Secret连接云平台,对云平台设备进行操作等。可以点击下面的链接进入。

        Token管理:AccessKey管理页面
        或者点击左侧菜单栏中的访问控制,随后再进入子菜单中的 "身份管理" - "用户" 页面。

        至此,两种方式均进入本页面。

        随后,点击创建用户,并勾选 "OpenApi调用访问" 选项,随后点击确认完成创建。

        选中该用户,点击 "添加权限",由于本账号只需要读取传感器数据,为了安全起见,我们只需要给他授予对物联网云平台的只读权限。

        点击确认,即授权完成。

        值得注意的是,由于我们对账号开启OpenApi的调用权限,而开启此权限的账号其相关信息在网页关闭后不再显示,因此我们需要将本页面上显示出的AccessKey ID以及AccessKey Secret保存下来,便于复用。

        随后,我们使用阿里云物联网平台的SDK创建自己的应用程序,亦或者使用官方发布的Demo,并在其工程内新建我们的程序类,完成下面的开发。

三、程序设计

        首先,打开上次博客中的数据上报程序,上报虚拟数据,并可以在云平台进行数据查看。

        程序开始运行。此时,在阿里云平台,可以看到随机上传的数据。

        打开从云平台获取数据的程序,下述文件是程序运行需要引入的类:

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.iot.model.v20180120.QueryDevicePropertyStatusRequest;
import com.aliyuncs.iot.model.v20180120.QueryDevicePropertyStatusResponse;

        在程序中声明我们需要用到的参数:

        第一步,初始化客户端连接对象。

IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, secret);
// 初始化client
client = new DefaultAcsClient(profile); //初始化SDK客户端

        第二步,构建数据查询请求。 

QueryDevicePropertyStatusRequest request = new QueryDevicePropertyStatusRequest();
request.setRegionId(regionId);
request.setIotInstanceId(iotid);
request.setDeviceName(deviceName);
request.setProductKey(deviceProductkey);

        第三步,获取返回值,并对数据进行解析输出。

try {
    // 发起查询设备属性请求
    QueryDevicePropertyStatusResponse response = client.getAcsResponse(request);
    // 处理查询结果
    // 可以从response中获取传感器的数据
    // 获取传感器数据
    String string=JSON.toJSONString(response);
    // 解析JSON数据
    JsonParser parser = new JsonParser();
    JsonObject jsonObject = (JsonObject) parser.parse(string);
    // 获取数据字段
    JsonObject data = (JsonObject) jsonObject.get("data");
    JsonArray list = (JsonArray) data.get("list");
    //将传感器数据输出
    System.out.println("传感器数据:" + list.get(0).getAsJsonObject().get("value"));
} catch (ClientException e) {
    // 处理异常
    e.printStackTrace();
}

        关于上述Json数据的解析思路,可以参照阿里云的API文档:

        QueryDevicePropertyStatus接口使用说明

        随后,我们将上述代码封装成一个方法,在主函数中创建子线程并持续调用该方法,以达到持续获取数据。

         可以看到,上述代码已经能够实时获取设备数据,在此基础上,我们可以通过变成来自定义一些策略,以完成对数据变化的实时响应,完善一个物联网系统。

四、源代码

        本栏目关于阿里云的全部源代码已上传GitHub,Csdn可以提供GitHub免费加速下载。

        西西菜鸟-阿里云物联网相关源码

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西菜鸟

打赏支持获得问题解答机会

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值