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

news/2024/4/24 17:36:06/文章来源:https://blog.csdn.net/qq_39724355/article/details/131683340

一、前言

        上一篇文章中,已经实现了虚拟数据上云,本文我们将进行上位机客户端的开发,即通过调用阿里云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免费加速下载。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_331318.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

因创始人被捕,Multichain停运!华人加密项目信任何在?

Multichain作为第四大加密货币桥梁,允许用户在八个区块链之间转移加密货币,并持有近16亿美元的投资者存款。对于运行在Fantom区块链上的DeFi而言,多链极为重要。 然而,跨链协议MultiChain5月下旬爆出“出金延迟或暂停”的灾情&…

产业大模型刚开卷,京东跑进“最后半公里”

点击关注 文|姚 悦 编|王一粟 “京东一直在探索哪些产品、技术、场景可以真正把大模型用起来,在我们内部的场景中反复验证后,才决定在7月份对外发布,现在我们在零售、健康、物流、金融等业务场景里已经积累了一些经…

Java使用JNI实现C文件的调用

1.使用IDEA新建工程 构建最基本的maven类型就行,文件结构如下: 其中最主要的类如下: package org.linx;public class TestJNI {static {/*** 加载jni库,有一个重要的点就是生成的为libnative.so,下面加载代码需要消…

【Maven三】——maven生命周期和插件

系列文章目录 Maven之POM介绍 maven命令上传jar包到nexus 【Maven二】——maven仓库 maven生命周期和插件 系列文章目录前言一、什么是生命周期&why1.三套生命周期2.clean生命周期3.default生命周期4.site生命周期5.命令行与生命周期 二、插件目标三、插件绑定1.内置绑定2…

将媒体公司资产迁移到 Amazon S3 的技术方案

随着媒体公司的发展,他们在仓库中积累了大量的旧磁带和未数字化的视频。这些资产可能很有价值,但以目前的形式很难访问和货币化。此外,将这些资产存储在仓库中既有风险又昂贵。 媒体企业可以通过将其资产迁移到云存储来解决这些问题&#xf…

【C++】面试基础搬运

c/c c三大特性 封装 最开始接触代码是C语言,那么开始写一些逻辑代码的时候会很麻烦,因为你要在函数中定义变量,然后按顺序写对应的逻辑,接着可以将逻辑封装成函数。当时会感觉很麻烦,因为很散装,知道后面…

Nacos报错Could not resolve placeholder ‘order.name‘ in value “${order.name}“怎么解决?

出现这个原因有两个: 1.首先在Nacos配置中心,写入yml配置文件的数据和后端服务在取数据的时候名称不一致 如下图,现在我的配置中心为order-service 看看其中的文件内容信息: 再看看后端是怎么取的: 看出上面错误了吗…

C# IEnumerator 用法

一、概述 IEnumerator 是所有非泛型枚举器的基接口。 其泛型等效项是 System.Collections.Generic.IEnumerator<T> 接口。 C# 语言的 foreach 语句&#xff08;在 Visual Basic 中为 for each&#xff09;隐藏了枚举数的复杂性。 因此&#xff0c;建议使用 foreach 而不…

[每周一更]-(第54期):Go的多版本管理工具

参考 https://zhuanlan.zhihu.com/p/611253641https://learnku.com/articles/78326 前文概要 Go语言从开始使用从1.13起步&#xff0c;随着泛型的支持&#xff0c;带领团队在转型Go的时候&#xff0c;做基础组件架构选型使用1.18&#xff0c;但是Go版本不断迭代想使用最新版本…

3Ds max入门教程:创建尼亚加拉大瀑布模型

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 初学者在3ds Max中为尼亚加拉大瀑布建模 这次您将学习通过几个简单的步骤在3ds max中对尼亚加拉大瀑布&#xff08;从远处看起来很逼真&#xff09;进行建模。所以&#xff0c;让我们开始吧&#xff01; …

Flutter:EasyLoading(loading加载、消息提示)

前言 官方虽然提供了内置的加载指示器和提示信息&#xff0c;但是功能比较简陋&#xff0c;这里推荐&#xff1a;flutter_easyloading CircularProgressIndicator CircularProgressIndicator()加粗样式 ScaffoldMessenger.of(context).showSnackBar(const SnackBar(// 提示…

怎么用电脑做动图?常见动图的制作方法

常见的gif图片有两种&#xff0c;一种是通过gif合成功能制作&#xff0c;另一种是由视频转gif动图&#xff0c;那么对于日常不是专业设计出身的小伙伴&#xff0c;该使用什么样的gif制作功能&#xff0c;能够满足两种动图制作呢&#xff1f;下面这款gif制作器&#xff08;https…

UE4 常用控制台命令

ue4执行控制台命令有两种方式&#xff0c;一是在运行时按~呼出控制台输入命令后回车执行&#xff0c;二是调用蓝图函数ExecuteConsoleCommand函数传入参数执行命令&#xff0c;需要注意shipping包无法执行控制台命令 常用命令&#xff1a; Stat FPS 显示帧率 Stat Slate 显示…

快速而简单的视频格式转换方法

在数字时代&#xff0c;我们经常需要将视频文件从一种格式转换为另一种格式。无论是因为兼容性问题&#xff0c;还是为了在特定设备上播放视频&#xff0c;视频格式转换是一项非常常见的任务。本文将介绍视频格式转换的基本知识和步骤。 首先&#xff0c;了解不同的视频格式非常…

【数据结构】之红黑树

红黑树 红黑树的概念红黑树的性质红黑树的插入操作&#xff08;核心&#xff09;情况一&#xff1a;uncle存在且为红情况二&#xff1a;uncle不存在/存在且为黑&#xff08;在同一侧&#xff09;情况三&#xff1a;uncle不存在/存在且为黑&#xff08;在两侧&#xff09;总结 红…

03插值与拟合

9.已知飞机下轮廓线上数据如下&#xff0c;分别用分段线性插值和三次样条插值求x每改变0.1时的y值。 x035791112131415y01.21.72.02.12.01.81.21.01.6 %9.已知飞机下轮廓线上数据如下&#xff0c;分别用分段线性插值和三次样条插值求每改变0.1时的y值。x [0 3 5 7 9 11 12 1…

简单工厂模式详解

文章目录 前言一、简单工厂模式定义二、举个例子三、简单工厂模式的缺点总结 前言 本篇我们了解一下简单工厂模式&#xff0c;它是设计模式的雏形&#xff0c;是学习设计模式的开端&#xff0c;我会结合案例说明它的设计思路。 一、简单工厂模式定义 简单工厂模式并不是GoF23…

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读&#xff1a; 9、MariaDB的配置选项10、MariaDB客户端连接1、在…

华为云子网路由表作用及价值

子网路由表 子网路由表作用云专线、VPN的配置与子网路由表强关联&#xff0c;本质是在相应的子网路由表中添加了一条路由Nat路由表问题地址变更问题snat和dnat 子网路由表作用 子网内部作为一个二层网络&#xff0c;通过mac地址互通&#xff0c;不通过路由互通。跨子网&#x…

微信小程序安装和使用 Vant Weapp 组件库

微信小程序安装和使用 Vant Weapp 组件库 1. Vant Weapp 介绍2. Vant Weapp 的 安装2.1. 通过npm安装2.2. 构建npm2.3. 修改 app.json2.4. 修改 project.congfig.json2.5. 测试一下&#xff0c;使用Vant Weapp提供的组件 1. Vant Weapp 介绍 Vant 是一个轻量、可靠的移动端组件…