阿里云物联网平台案例教程

1、定义:

​ 物联网(简称IOT)把任何物体与物联网相连接,进行消息的交换和通信,实现对物品的智能化识别。简单说是:物联网就是把所有的物体连接起来相互作用,形成一个互联互通的网络,这就是物联网。如果说互联网是我们身体的虚拟大脑,那么物联网就是我们身体的感知系统,就像眼睛和耳朵一样,让我们能够感知外部事物。物联网包括感知、网络和应用三个方面。感知是数据的获取,包括听觉(语音识别)、视觉(摄像头、人脸识别)、感觉(气体、烟雾、红外传感器)、运动(振动、加速度传感器)等识别感知系统和芯片;网络是平台 / 运营商等存储和分析数据;应用即落地实现,如:智能家居、共享单车等。

2、区别:

物联网和互联网区别:

​ 物联网(IoT)和互联网(Internet)之间的主要区别在于它们所连接的对象和目的。互联网是指全球范围内通过网络相互连接的计算机系统。它主要用于人们之间的通信、信息共享和在线服务。

​ 而物联网是指各种物理设备和物体通过互联网进行连接,使它们能够相互通信和交换数据。这些物理设备可以是家用电器、工业机器、汽车、传感器等,它们可以通过物联网实现远程监控、智能控制、数据采集和分析等功能。

​ 简单来说,互联网是连接人与人之间的网络,而物联网则是连接物与物之间的网络。两者的连接对象和应用场景不同,但都是通过网络实现信息传输和交流。

3、阿里云优势

1、设备接入:

由于应用软件开发人员往往不懂底层硬件通讯协议和机制,所以这样的沟通环节会令人头痛。如果使用物联网平台,硬件研发人员可以使用设备端SDK,快速连接设备上云,效率高,此时阿里云物联网平台就开始接入了。提供了很多种Link SDK并具备详细文档,相关技术也很成熟。硬件研发人员可以直接使用SDK接入,软件开发人员也只需要面向物联网平台编程,双方都可以实现快速开发。
文档链接:
https://help.aliyun.com/zh/iot/use-cases/i-am-a-developer?spm=a2c4g.11186623.0.0.34f6f495tdPkMj
如下图:
在这里插入图片描述

2、可用性:

一些物联网使用场景,例如消防设备报警,是要求极高的可用性的。
阿里云物联网平台采用去中心化,无单点依赖,拥有多数据中心支持。承诺服务可用性达到99.95%以上,未达到可按标准理赔。故障处理1分钟发现、5分钟定位、30分钟解决。所以采用物联网平台,可用性这块也是相当放心了。

3、安全性:

设备认证:每个设备都有唯一的身份认证,确保只有合法的设备才能接入平台,防止假冒设备的侵入。
TLS加密传输:设备与平台之间的数据传输使用TLS协议加密,这就像为数据传输戴上了“防盗锁”,确保数据在传输过程中不会被篡改或窃取。
核心密钥和数据加密存储:重要的数据和密钥在存储时也会被加密,类似于将贵重物品存放在保险箱中,防止数据被盗取。
云盾护航和权限校验:阿里云提供的云盾服务会不断监控云端的安全,并且进行权限校验,确保只有授权用户才能访问数据和功能,保障云端的安全性。
阿里云安全团队守护:阿里云有专业的安全团队全天候守护平台的安全,及时发现并应对各种潜在威胁,保证系统的稳定运行。
通过这些多重防护措施,阿里云物联网平台能够有效保障设备和数据的安全,让企业不用花费大量精力和资源去自己实现复杂的安全机制。

4、案例开发:

接下来以温度报警器为例,介绍使用阿里云物联网平台开发该产品的全流程。

1、开通物联网平台

进入物联网平台进行开通
在这里插入图片描述
开通后可以看到一个公共实例,这个目前是免费的,我们就用公共实例进行温度报警器开发。(大约等好几分钟)使的试用资源。免费
在这里插入图片描述

2、创建产品

进入公共实例------>设备管理------>产品----->创建产品
在这里插入图片描述
按下图创建温度报警器产品即可,可以看出我们的设备是通过wifi连网的,然后通过设备密钥进行认证。
在这里插入图片描述

3、添加设备

在这里插入图片描述
在这里插入图片描述
增加设备名称
在这里插入图片描述
添加完成后,点击【一键复制设备证书】。
在这里插入图片描述
证书需要保存:具体内容:
ProductKey:产品标识符
DeviceName:设备名称
DeviceSecret:设备密钥

4、定义产品模型

虽然我们创建了产品,但是产品能干啥,有什么属性和功能,目前都不明确。我们可以通过定义产品模型来明确。
进入公共实例的【产品】菜单,点击【查看】:
在这里插入图片描述
进入功能定义,在【功能定义】中,点击【编辑草稿】
在这里插入图片描述
然后点击【添加自定义功能】。选择温度
在这里插入图片描述
最后别忘了点击【发布上线】,否则新增的功能不会生效
在这里插入图片描述

5、开发硬件设备:

此时可以让硬件研发人员,使用阿里云设备端SDK,开发硬件设备。在此期间如果业务平台软件开发人员需要测试,可以用物联网平台提供的【设备模拟器】先行测试,后面会演示如何使用模拟器。

6、订阅设备消息

阿里云物联网平台提供了订阅设备消息的功能,如下图,通过AMQP通道将消息传送到我们自己开发的业务系统。
在这里插入图片描述
进入公共实例,依次点击【消息转发 】-【 服务端订阅】-【消费组】-【创建消费组】。创建温度报警器消费组
在这里插入图片描述
然后依次点击【消息转发】-【 服务端订阅】-【订阅列表】-【创建订阅】。如下图所示,完成温度报警器产品的设备上报消息订阅。
在这里插入图片描述

7、开发业务平台

接下来就是我们平台端进行开发,接收设备上报的消息了。
下载阿里云的实例代码包:
链接如下:
https://iot-demos.oss-cn-shanghai.aliyuncs.com/amqp/amqp-demo.zip?spm=a2c4g.11186623.0.0.7981574dLGysdZ&file=amqp-demo.zip
该示例是一个maven工程,将工程导入到开发环境如IDEA或Eclipse。
打开AmqpClient.java,修改如下参数:
在这里插入图片描述
具体参数说明如下:
参数 说明
accessKey: 登录物联网平台控制台,将鼠标指针移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。
accessSecret: 同上
consumerGroupId: 消费组ID
iotInstanceId: 实例ID,只需传入空值。
clientId: 客户端ID,需您自定义,长度不可超过64个字符。可以使用AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识。
connectionCount: 启动AMQP客户端的连接数,最大不超过64个。用于实时消息推送的扩容。
host: AMQP接入域名。{uid}.iot-amqp.{YourRegionId}.aliyuncs.com,其中{uid}:您的阿里云账号ID。可登录物联网平台控制台,将鼠标指针移动到账号头像,查看账号ID。{YourRegionId}:请替换为您的物联网平台设备所在地域的Region ID。

5、测试:

项目参数配置完成后,运行AmqpClient类。此时在消费组详情中可以看到,客户端已经在线了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/621816455e984b1a8450f3f6c1bfa182.png
此处的客户端ID,即配置的clientId参数,说明订阅已经生效。Client等于:1234567890
在这里插入图片描述
进入【设备管理】-【设备模拟器】-【启动设备模拟器】
在这里插入图片描述
启动项目。看一下结果返回
在这里插入图片描述
可以看到,设备上报的温度计对应的时间信息,已经发送到我们的客户端程序了。
对于业务平台而言,我们只需要构建一个maven工程,然后引入阿里云Demo项目中的依赖,并将AmqpClient客户端加入到我们的业务平台即可。
重要的JSON如下:
在这里插入图片描述
deviceType: 设备类型,值为 CustomCategory,表示自定义类别的设备。

1iotId: 设备 ID,值为 1frNGTZoAEGdtL4zliMnk1fos0,用于唯一标识这个设备。

requestId: 请求 ID,用于唯一标识该请求。值为 1718161337237。

checkFailedData: 检查失败的数据,这里为空对象 {},表示没有检查失败的数据。

productKey: 产品 Key,值为 k1foskKQXqo,用于区分不同的产品。

gmtCreate: 设备创建时间,使用 Unix 时间戳格式。值为 1718161339839,表示设备记录创建的时间。

deviceName: 设备名称,值为 alarmDevice,表示设备的名称是 alarmDevice。

items: 设备的具体数据项,这是一个对象,包含了多个键值对,每个键值对代表一个数据项及其属性。

temperature: 表示温度数据项。
value: 温度的值,值为 100。
time: 记录温度的时间戳,值为 1718161339797。
具体解释如下:
temperature: 这是一个数据项,表示温度。
value: 100,这个值代表当前温度为 100(单位应该根据具体应用场景确定,可能是摄氏度)。
time: 1718161339797,这是一个 Unix 时间戳,表示记录这个温度值的时间。

8、总结

上行指令:

指的是设备将消息发送到物联网平台,然后物联网平台将消息传输给业务平台的过程。前面所描述的温度报警器上报温度值即为上行指令。

下行指令:

指的是业务平台主动发送命令给物联网平台(一般通过HTTP/HTTPS),然后物联网平台将命令发送给设备的过程。

简单的说

上行指令:就像你在给朋友发信息。你的设备(比如一个温度报警器)就像你,物联网平台就像是一个社交媒体平台。你(设备)测量到温度数据,然后把这个数据发到社交媒体平台(物联网平台),然后平台会把这个消息转发给需要这些信息的人(业务平台)。所以,上行指令就是设备把信息发送到互联网平台,再由互联网平台转发给其他需要这些信息的地方。
下行指令:就像你的朋友通过社交媒体平台给你发信息。朋友(业务平台)想让你做某件事,于是先通过社交媒体平台(物联网平台)给你发信息,然后你(设备)收到信息后就去执行。这就是下行指令,业务平台通过互联网平台给设备发命令,设备收到命令后执行。

业务平台功能设计:

以温度报警器来说:上面我们已经接收到报警器上传的温度值了,我们可以根据具体情况(例如温度大于50度)给用户发送报警信息。可以通过短信、电话、微信消息来通知用户。
真实设备出厂时,贴上包含设备信息的二维码,用户扫码后填入自己的手机号、住址等信息,这样用户信息就跟设备信息绑定起来了。

概述图:

在网上找到了一个概要图觉得非常不错:
一般来说,物联网项目可以划分为设备–物联网平台–业务平台,如图:
在这里插入图片描述
1、设备通过MQTT协议与您在阿里云上购买的IoT企业实例建立双向连接,设备上报采集的数据,监听云端下达的指令;
2、通过规则引擎配置把上报的数据实时存储到指定数据库,无需编写代码
3、通过规则引擎配置把上报的数据实时流转到业务服务器,需要使用AMQP协议SDK
4、业务服务器调用IoT平台的API,下达控制指令到设备端

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

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

相关文章

[发布]嵌入式系统远程测控软件-基于Qt

目录 一. 引言二. 软件功能2.1 原理2.2 软件功能2.3 运行环境 三. 软件操作使用3.1 软件界面3.2 软件功能使用详解3.2.1 连接3.2.2 数据监测(串口示波器)3.2.3 数据修改3.2.4 数据保存 3.3 软件的硬件连接 四. 通信协议——STM32移植篇4.1 通信协议4.2 S…

提升易用性,OceanBase生态管控产品的“从小到大”

2022年,OceanBase发布4.0版本“小鱼”,并首次公开提出了单机分布式一体化这一理念,旨在适应大小不同规模的工作负载,全面满足用户数据库“从小到大”全生命周期的需求。当时,我们所说的“从小到大”主要聚焦于数据库的…

JVM产生FullGC的原因有哪些?

JVM产生FullGC的原因有哪些? 在Java虚拟机(JVM)中,垃圾回收(Garbage Collection,简称GC)是一个非常重要的机制。GC的目的是自动管理内存,回收不再使用的对象,防止内存泄…

数据合规怎么做?哪些机构可以做数据合规

企业将数据资源入表的工作是一项复杂而全面的任务 财务部门负责统计数据资源的成本、销售数据等信息,并确保数据资源的会计处理符合会计要求; 数据部门则负责统计数据成本来源、价值实现路径等信息; 法务部门需要确认数据的收集和使用遵循相关的合规要求…

UE5 Sequencer 使用指导 - 学习笔记

https://www.bilibili.com/video/BV1jG411L7r7/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer 01 1.1 调整视口 调整窗口数量 调整视口类型为Cinematic视口 视口显示网格,或者条件参考线 1.2 关卡动画与…

Redis链表

Redis链表 C语言没有内置链表,Redis自己构建的链表 链表在redis中的实现 typedef struct list {//表头节点listNode *head;//表尾节点listNode *tail;//节点数量unsigned long len;//节点值复制函数void *(*dup) (void *ptr);//节点值释放函数void (*free) (void …

指定cuda版本的torch包安装

文章目录 1.查看自己电脑的cuda版本2.确定安装torch的conda指令2.1进入网站[cuda对应的torch版本](https://pytorch.org/get-started/previous-versions/) 3.检验torch的cuda版本是否可用 1.查看自己电脑的cuda版本 winr输入cmd回车进行电脑终端界面 输入nvidia-smi指令 nvid…

【智能家居控制系统项目】一、项目系统镜像烧录与系统登录

前言 完成本章节将可以获得本项目的系统UI界面功能。本章节主要介绍如何烧录项目系统镜像以及进入系统。配套的视频介绍可以点击跳转到智能家居项目复刻配套视频 1.系统功能页面介绍 完成本章全部步骤,我们将可使用以下项目系统功能界面。 1.1 家居总览界面 主界面…

在自己的电脑上搭建我的世界Java版服务器

很多朋友,喜欢玩Minecraft,也希望搭建一个服务器,用于和小伙伴联机; 并且,拥有服务器后,即使所有玩家都下线,“世界”依旧在运行,玩家可以随时参与其中,说不定一上线&am…

加速下载,告别等待!揭秘IDM下载器的神奇力量!

下载速度慢、断网后重下……在网络资源丰富的今天,如何高效下载成为用户的一大痛点。 而随着互联网的快速发展,下载管理软件应运而生,成为用户高效下载网络资源的重要工具。其中,Internet Download Manager(IDM&#x…

【全开源】B2B2C多商家短视频直播种草阶梯拼团电商系统

📱直播短视频种草多用户电商系统:引领潮流购物新体验 一款基于 FastAdmin Uni-APP 开发的 多终端(H5移动端、APP、微信小程序、微信公众号)、多用户商城系统拥有多种运营模式B2B2C/B2C,内置独立商家后台、商城装修、…

RPG Maker MZ中被你忽略的干货操作——事件页优先级

文章目录 事件页优先级问题结论问题1答案 事件页优先级问题 结论 事件页2的优先级是大于事件页1的 问题1 事件页1没有条件、自动执行生成图片,效果如下 事件页2,没有条件,自动执行,效果如下 答案 只会执行事件页2&#…

关于LayUI弹出层请求一次其他网页后无法再次点击按钮问题

问题描述 使用layer弹出层去请求另一个页面,关闭弹窗后本页面按钮无法点击也不报错,如下面弹窗代码 layer.open({type: 1,area: [500px, 400px],title: 编辑信息,shade: 0.6,shadeClose: true,maxmin: false,anim: 0,success: function (layero, index) {$.ajax({u…

探索 doc 和 docx 文件格式的区别

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

Linux 防火墙 Firewall 和 Iptables 的使用

如果我们在Linux服务器的某个端口上运行了个服务,需要外网能访问到,就必须通过防火墙将服务运行端口给开启。Linux中有两种防火墙软件,CentOS7.0以上使用的是firewall,CentOS7.0以下使用的是iptables(使用较少且不建议…

算法之分治

分而治之 分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一定的程度就可以容易地解决 2) 该问题可以分解为若干个规模较小的子问题,即该问题具有最优子结构性质 3) 利用该问题分解出的子问题的解可以合并为该问题的解 4) 该问题所分…

SpringBoot整合RabbitMQ (持续更新中)

RabbitMQ 官网地址:RabbitMQ: One broker to queue them all | RabbitMQ RabbitMQ 与 Erlang 版本兼容关系​ 3.13.0 26.0 26.2.x The 3.13 release series is compatible with Erlang 26. OpenSSL 3 support in Erlang is considered to be mature and ready for…

8-1RT-Thread消息队列

8-1RT-Thread消息队列 消息队列又称队列,是一种常用于线程间通信的数据结构。 消息队列控制块里有两个链表,空闲列表用来挂接空的小几块,另一个链表是用来挂接存有消息的消息框。其中消息链表头指向消息队列当中的第一个消息框,而…

揭秘!IDM下载器如何让你的下载速度翻倍?

“下载速度慢”和“下载过程中断”,是许多用户上网时的两大痛点。 随着网络内容的日益丰富,人们获取信息、娱乐资源的主要方式,已经从线下转向了线上。然而,无论是观看高清视频,还是下载大型游戏,都对网络传…

NOSQL -- ES

第三个我们比较常用的NOSQL类型的数据库 --- ES 介绍: ES的全称(Elasticsearch) ES是一个分布式全文搜索的引擎 也就是我们平常在购物, 搜索东西的时候常用的, 就是一个ES的类型, 分布式全文搜索引擎 查询原理: 1>分词: 在查询之前, 其会将一些数据拆分开, 按照词进行拆分…