阿里云物联网平台测评:以温度报警器开发为例

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

1. 物联网平台概述

我曾在一家智能仪表公司担任软件研发部负责人,对物联网相关业务还是比较熟悉的。在公司的3年期间,主持或参与了多个物联网相关项目的开发工作。

一般来说,物联网项目可以划分为设备--物联网平台--业务平台,如下图:
在这里插入图片描述
具体解释下:

  • 设备即真实硬件设备,可以通过各种网络协议与物联网平台通讯,最容易理解的就是通过2G/3G/4G进行通讯。当然,由于物联网设备往往要求耗电量低(长续航)、通讯流量低(低成本),所以会采用COAP/MQTT等专门设计的协议进行通信。
  • 物联网平台可以与设备进行通信,包括接收设备上报的数据,以及对设备下发命令。
  • 业务平台一般意义上就是我们开发的应用系统了,我们的业务平台无需直接跟设备协议对接,而是通过物联网平台处理。

    上图中,我使用了阿里云物联网平台的示意图。实际上,设备与物联网平台之间的对接协议是多样化的(包括MQTT/COAP等),物联网平台与业务平台的对接也是多样化的(包括消息队列/HTTP消息推送等)。

2. 阿里云物联网平台的优势

物联网平台的搭建,其实可以有2种路线。

第一种是企业自研。由于物联网平台的复杂性,这种方式成本高、周期长,尤其是物联网平台往往面向海量物联网设备,技术难度是相当大的。

在物联网领域,百万、千万级的设备在线,十亿、百亿级的数据流量是比较常见的。

第二种是使用成熟的物联网平台,例如运营商提供的物联网平台,再就是云厂商提供的物联网平台。

此处以阿里云物联网平台为例,介绍下其优势。

2.1 快速接入

如果是自研的话,免不了跟硬件研发人员沟通设备接入细节。由于应用软件开发人员往往不懂底层硬件通讯协议和机制,所以这样的沟通环节会令人头痛。

如果使用物联网平台,硬件研发人员可以使用设备端SDK,快速连接设备上云,效率高。

如下图,阿里云物联网平台已经提供了多种Link SDK并具备详细文档,相关技术也很成熟。硬件研发人员可以直接使用SDK接入,软件开发人员也只需要面向物联网平台编程,双方都可以实现快速开发。
在这里插入图片描述

2.2 超高负载能力

阿里云支持亿级设备规模,自动扩展,保证连接稳定性,设备消息到平台处理时长在50ms以内。

同时具备百万并发能力,架构可水平扩展。核心消息处理系统采用无状态架构,无单点依赖,消息发送失败可自动重试。

原来在开发过程中的高并发、高性能等核心痛点问题,直接就解决了。

2.3 可用性

一些物联网使用场景,例如消防设备报警,是要求极高的可用性的。

阿里云物联网平台采用去中心化,无单点依赖,拥有多数据中心支持。承诺服务可用性达到99.95%以上,未达到可按标准理赔。故障处理1分钟发现、5分钟定位、30分钟解决。

所以采用物联网平台,可用性这块也是相当放心了。

2.4 安全性

看看阿里云物联网提供的安全机制,如果企业自己实现未免有点太复杂了。

  • 等保2.0版(三级等保),提供多重防护,保障设备数据安全。
  • 接入层使用高防IP防止DDoS攻击。
  • 设备认证保障设备安全与唯一性。
  • 设备数据传输链路支持TLS加密,保障数据不被篡改。
  • 核心密钥和数据加密存储防窃取。
  • 云盾护航和权限校验保障云端安全。
  • 平台安全由阿里云安全团队守护。

2.5 性价比

除去研发成本,企业在运营阶段要维护的服务器、数据库、消息队列、缓存,无疑会产生庞大的时间和金钱成本。

使用物联网平台的话,计费方式灵活多变,而且性价比很高。

以阿里云物联网平台为例:购买设备数为1万个、消息上下行TPS为100条/秒,规则引擎TPS为100条/秒、总费用在7416元/年。

3. 温度报警器开发

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

3.1 开通物联网平台

阿里云产品较多,按下图选择【物联网平台】
在这里插入图片描述
进入物联网平台后,点击【立即开通】。
在这里插入图片描述
开通后可以看到一个公共实例,这个目前是免费的,我们就用公共实例进行温度报警器开发。
在这里插入图片描述

3.2 创建产品

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

3.3 添加设备

接下来,我们添加一个温度报警器产品类型的设备,此处的设备就是与现实中的硬件设备对应的。
在这里插入图片描述
点击【添加设备】后,按下图示例添加一台设备。
在这里插入图片描述
添加完成后,点击【一键复制设备证书】。
在这里插入图片描述
证书信息建议保存备用,具体内容如下:
在这里插入图片描述

3.4 定义产品模型

虽然我们创建了产品,但是产品能干啥,有什么属性和功能,目前都不明确。我们可以通过定义产品模型来明确。

进入公共实例的【产品】菜单,点击【查看】:
在这里插入图片描述
在【功能定义】中,点击【编辑草稿】。
在这里插入图片描述
然后点击【添加自定义功能】。
在这里插入图片描述
按下图添加温度属性,对应设备上报的温度。
在这里插入图片描述
最后别忘了点击【发布上线】,否则新增的功能不会生效。
在这里插入图片描述

3.5 开发硬件设备

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

3.6 订阅设备消息

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

3.7 开发业务平台

接下来可以开发业务平台,接收设备上报的消息了。

首先下载阿里提供的示例代码包

该示例是一个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。

4. 温度报警器测试

项目参数配置完成后,运行AmqpClient类。此时在消费组详情中可以看到,客户端已经在线了。
在这里插入图片描述
此处的客户端ID,即配置的clientId参数,说明订阅已经生效。
在这里插入图片描述
依次点击【监控运维】-【设备模拟器】-【启动设备模拟器】。
在这里插入图片描述
然后上报一个温度值100,如下图
在这里插入图片描述
点击【发送指令】后,控制台日志输出如下:
在这里插入图片描述
由于内容太长,截图不好展示,我提取关键信息如下:

{"deviceType":"CustomCategory","requestId":"1657767675834","gmtCreate":1657767676363,"deviceName":"alarmDevice1","items":{"temperature":{"value":100,"time":1657767676360}}}

可以看到,设备上报的温度计对应的时间信息,已经发送到我们的客户端程序了。

对于业务平台而言,我们只需要构建一个maven工程,然后引入阿里云Demo项目中的依赖,并将AmqpClient客户端加入到我们的业务平台即可。

5. 小结

第一,说一下真实设备接入问题,上面的测试我使用了设备模拟器,这个比较简单快速。如果企业具有硬件研发人员,则可以使用阿里云物联网平台的Link SDK实现硬件的快速接入。

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

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

第三,说一下业务平台的功能设计。上面我们已经接收到报警器上传的温度值了,我们可以根据具体情况(例如温度大于50度)给用户发送报警信息。可以通过短信、电话、微信消息来通知用户。

真实设备出厂时,贴上包含设备信息的二维码,用户扫码后填入自己的手机号、住址等信息,这样用户信息就跟设备信息绑定起来了。

最后总结:使用阿里云物联网平台,软硬件研发人员都只需要跟物联网平台对接,阿里云物联网平台具备完善的SDK和文档,十分方便。另外,基于阿里云的技术基石,企业可以轻易的享受高性能、高并发、高可用、高度安全、高性价比,非常有意义。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
6月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
421 1
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
1月前
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
149 5
|
2月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
2月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
4月前
|
存储 运维 监控
阿里云物联网平台的优势
【7月更文挑战第19天】阿里云物联网平台的优势
75 1
|
6月前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
371 1
|
6月前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
225 6
阿里云IOC物联网异步处理基础概念
|
6月前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
49 2
|
6月前
|
传感器 机器学习/深度学习 算法
LabVIEW开发工业物联网状态监测
LabVIEW开发工业物联网状态监测
70 2

相关产品

  • 物联网平台