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类。此时在消费组详情中可以看到,客户端已经在线了。
此处的客户端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,下达控制指令到设备端