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

news2024/11/23 22:28:47

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.coloradmin.cn/o/1814493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iFlyCode:AI智能编程助手引领未来软件开发新趋势

体验地址 在当前软件行业飞速发展的背景下,开发效率和代码质量成为了衡量软件工程师工作效能的两大关键指标。为了应对日益增长的市场需求和紧迫的发布时间,科大讯飞推出了iFlyCode2.0——一款集AI技术于一身的智能编程助手,旨在引领未来软件…

如何将JPG/PNG位图免费快速一键转换成SVG格式的矢量图

环境: JPG/PNG位图 问题描述: 如何将JPG/PNG位图快速一键转换成SVG格式的矢量图 解决方案: 是一个人工智能驱动的图片转换工具,可以帮助用户将」JPG/PNG位图快速转换成SVG格式的矢量图,方便设计人员对图片进行二次…

Java面试八股之super()和this()的区别

super()和this()的区别 super() 目的:super()用于从子类的构造方法中调用父类(超类)的构造方法。这是为了确保父类的初始化操作得以执行,因为子类继承了父类的属性和方法,可能需要先设置好父类的状态。 位置&#x…

桌面记事软件除了记事本还有什么

在忙碌的工作日,我的桌面总是堆满了各种文件、资料,还有贴满便签的记事本。每次需要查找某个信息或者确认接下来的计划时,我都要在杂乱的桌面上翻找好一会儿,这让我感到非常烦恼。 有一天,我急着找一个之前记录的重要…

WPF/C#:程序关闭的三种模式

ShutdownMode枚举类型介绍 ShutdownMode是一个枚举类型,它定义了WPF应用程序的关闭方式。这个枚举类型有三个成员: OnLastWindowClose:当最后一个窗口关闭或者调用System.Windows.Application.Shutdown方法时,应用程序会关闭。O…

HarmonyOS(33) @LocalStorageProp使用指南

LocalStorageProp使用指南 说明使用示例参考资料 说明 不同于LocalStorageLink与LocalStorage建立的双向同步关系,LocalStorageProp装饰的变量与LocalStorage中给定属性建立单向同步关系。LocalStorageProp(key)是和LocalStorage中key对应的属性建立单向数据同步&a…

SD3303A 大功率高亮度LED驱动芯片IC

一般描述 SD3303A是一款大功率高亮度LED驱动芯片,可以提供1A的电流驱动3W的LED。具有高效率,低功耗等特点,适用于电池供电的LED照明设备。 SD3303A具有开路保护和过温保护。 SD3303A需要使用两颗10uF(或者更大)的瓷片电容,来保…

如何理解质量

早年写过一篇未发表的论文《质量的相对性》,就是为了寻求到底什么才是质量这个问题的答案。现在,在准备了诸多超越以往的认知的概念之后,关于质量是什么的想法,也逐渐有了眉目。 质量有两种,一种叫做惯性质量&#xff…

Docker大学生看了都会系列(九、Docker使用Buildx构建不同CPU架构镜像)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 第三章 Docker常用命令 第四章 常用命令实战 第五章 Docker镜像详解 第六章 Docker容器数据卷 第七章 Dockerfile详解 第八章 Dokcerfile部署go项目 第九章 Docker使用Build…

【云岚到家】-day02-4-我的账户-实名认证

【云岚到家】-day02-4-我的账户-实名认证 1 我的账户设置-实战1.1 配置OSS1.2 需求分析1.2.1 服务端设置银行账户1.2.2 机构端设置银行账户1.2.3 表结构设计1.2.4 表结构相关的controller、service、mapper、entity 1.3 服务端设置银行账户接口设计1.3.1 新增或更新银行账号信息…

【WWDC 2024 发表会懒人包】iOS 18、iPadOS 18、macOS 15、Apple Intelligence 重点一次看

苹果今天(6/11)发布了全新iOS 18、iPadOS 18、macOS 15、watchOS 11以及visionOS 2,这次的WWDC大会首场发表会久违的快要2 个小时,下面就带大家来看看最新的iOS 18、iPadOS 18、macOS 15、watchOS 11、visionOS 2 特色功能懒人包。…

【FreeRTOS】源码概述

FreeRTOS源码概述 参考《FreeRTOS入门与工程实践(基于DshanMCU-103)》里《第7章 FreeRTOS源码概述》 相关文章:http://t.csdnimg.cn/QK0aO 1 FreeRTOS目录结构 使用 STM32CubeMX 创建的 FreeRTOS 工程中, FreeRTOS 相关的源码如下: 主要设计两个目录 C…

第2章 Rust初体验2/8:变量值绑定:默认不可变增强代码安全性:猜骰子冷热游戏

讲动人的故事,写懂人的代码 2.3.6 变量值绑定:默认不可变增强代码安全性 赵可菲:“那句给 guess 赋值的,没特别写出类型来,看起来Rust是自动帮我们搞定类型判断的吧。” let mut guess = String::new();贾克强:“对啊,Rust会自动帮我们做类型推断(type inference),这…

Linux 基本指令1

ls指令 ls【-选项】【目录或文件】当不指定目录或文件时指令能列出当前目录下所有文件除隐藏文件 选项: -a 列出所有包括隐藏的文件-隐藏文件以.开头。 -d 将目录如文件般显示-一般用ls显示目录是显示其目录中所有文件,加-d则显示目录的信息 -r 以反…

【数据结构】单链表(C语言)

在数据结构和算法中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,我们可以使用指针来实现单向链表。下面将详细讲述如何利用C语言实现单向链表。 1.单链表的概念和结构 概…

C++发送邮件的性能如何优化?有哪些方法?

C发送邮件怎么配置SMTP服务器?如何使用C库发信? 在现代应用程序中,电子邮件发送是一个常见的功能。尤其对于需要发送大量邮件的企业级应用,优化邮件发送性能变得尤为重要。AokSend将探讨在使用C发送邮件时,如何通过各…

电脑想加个WIFI功能,怎么选!

在快速发展的物联网和智能家居时代,Wi-Fi模块作为连接各类智能设备与互联网的桥梁,其重要性不言而喻。而为了让这些模块能够适应各式各样的应用场景,不同的接口技术应运而生。今天,我们就来深入浅出地探讨几种常见的Wi-Fi模块接口,包括它们的工作原理、特点以及适用场景,…

Docker以挂载方式安装RocketMQ

Docker 挂载安装RocketMQ Docker 挂载安装RocketMQ安装 Docker安装NameServer1.拉取容器2.创建NameServer容器3.查看容器状态 安装 broker创建 broker.conf 文件启动容器 安装RocketMQ-console构建镜像启动容器开通安全组策略访问控制台 Docker 挂载安装RocketMQ 在 Docker 中…

LangChain入门学习笔记(二)——LangChain表达式语言(LCEL)

基于LangChain框架编写大模型应用的过程就像垒积木,其中的积木就是Prompts,LLMs和各种OutputParser等。如何将这些积木组织起来,除了使用基本Python语法调用对应类的方法,一种更灵活的方法就是使用位于LangChain-Core层中的LCEL&a…

python的四个进度条

哈喽,我是快乐吗喽,今天简单的给大家介绍一下python的四个进度条工具,希望各位喜欢。 第一个进度条工具tqdm,好记点我叫她淘气大妈 安装tqdm库 pip install tqdm 基本用法 from tqdm import tqdm import timefor i in tqdm(ran…