物联网平台开发浅析和实战(二)

简介: 物联网平台使用教程,包括云产品流转和服务端订阅。

1、前言

内容:物联网平台消息流转,包括云产品流转和服务端订阅 官网地址
时长:建议学习时长整体50分钟,理论40分钟,实战10分钟
代码:设备端demo、服务端demo
约定:${productKey}、${deviceName}是占位符,意思是设备自己的 productKey 和 deviceName
导航:上一课 下一课待续

上节课程遗留了一些问题
• 设备通过物联网平台上报了消息,那么消息如何展示到我的网页上呢?
• 设备只能往自己的topic发送消息,那么设备A如何发送消息给设备B呢?
以上场景可以使用我们的规则引擎来解决。

2、规则引擎是什么、能干什么

规则引擎是物联网平台的一个重要功能组件,包含云产品流转和服务端订阅两个主要功能。云产品流转是物联网平台把收到的消息流转到阿里云的云产品,包括把消息流转回物联网平台(消息从一个Topic流转到另一个Topic)。服务端订阅是物联网平台把设备上报的消息直接推送到用户的业务服务器。如果说物联网平台是设备数据上云的重要门户,那么规则引擎就是数据进门后云游世界的摆渡车。
image.png

3、云产品流转

3.1、消息展示到网页

正常情况下用户有自己的业务系统,业务系统从数据库获取到数据然后展示到网页。这个过程是大家都熟悉的。那么设备上报的数据如何展示到已有的业务系统网页呢?可以通过规则引擎把设备上报的数据流转到阿里云数据库RDS,然后业务系统从数据库获取数据展示到网页。这个就是规则引擎云产品流转的能力。对业务系统而言,基本没有改变任何逻辑,就是换了个数据源。

本例将完成如下步骤,涉及的demo代码包通过课程【前言】提供的链接下载即可。开发环境的搭建不再赘述,是普通 maven 工程。
设备端代码:com.aliyun.alink.demo.devicesdk.chapter02.DeviceA
• 创建一个规则,名为:一个Hello规则
• 创建一个动作,流转到RDS
• 启动规则
• 使用设备端SDK让设备 device_0 上线并发送消息给物联网平台
• 规则引擎将消息流转到阿里云RDS存储

2.1.1、创建规则

创建规则 标清.gif

2.1.2、创建动作

本例数据库表为 tbl_rule_to_rds,已经创建好,表结构如下
image.png
创建动作,官网文档:https://help.aliyun.com/document_detail/42736.html
rds动作 标清.gif

2.1.3、启动规则

规则启动 普通.gif

2.1.4、设备上报

还记得上一节课设备消息上报的demo么,类似的,启动:com.aliyun.alink.demo.devicesdk.chapter02.DeviceA,填写设备device_0的三元组信息后直接启动。设备端调用publish接口上报消息,本例发送的topic=/${productKey}/${deviceName}/user/update,消息内容为 {"content":"hello iot"}。
几个关键的对应关系:
• 设备上报的消息格式为json,创建规则时“数据格式”选择为JSON。
• 设备上报的topic=/${productKey}/${deviceName}/user/update,创建规则时 sql 配置的 topic=/${productKey}/+/user/update。
• 数据库表格字段为messgeContent,创建动作时“键”填写为messgeContent。
• 设备上报的消息内容为{"content":"hello iot"},创建动作时“键”对应的“值”填写为${content}。

2.1.5、结果展示

日志服务能够看到数据从设备到云,再通过规则引擎到rds。
traceId=0a3027ec15993912862926564d098c
image.png
数据库查询可以看到上面发送的消息,hello iot 已经插入到数据库表中。
image.png

3.2、设备A发送消息给设备B

设备只能订阅自己的topic,也只能给自己的topic发送消息。那么设备A的消息想要发送给设备B,该怎么办?可以通过规则引擎把设备A上报的数据流转到设备B。这个也是规则引擎云产品流转的能力,只是这个流转是物联网平台流转到物联网平台,消息从一个Topic流转到另一个Topic。
本例将完成如下步骤,涉及的demo代码包通过课程【前言】提供的链接下载即可。开发环境的搭建不再赘述,是普通 maven 工程。
设备端代码:com.aliyun.alink.demo.devicesdk.chapter02.DeviceA 和 com.aliyun.alink.demo.devicesdk.chapter02.DeviceB
• 创建一个设备,名为:device_1
• 在同样的规则下,再创建一个动作,流转到另一个Topic
• 使用设备端SDK让设备 device_1 上线
• 使用设备端SDK让设备 device_0 上线并发送消息给物联网平台

3.2.1、创建动作

沿用上面的规则,我们增加一个动作。规则不用重新启动。
repub动作 普通.gif

3.2.2、设备B准备

启动:com.aliyun.alink.demo.devicesdk.chapter02.DeviceB,填写设备 device_1 的三元组信息后直接启动。
设备需要订阅/${productKey}/${deviceName}/user/get。

3.2.3、设备A上报

启动:com.aliyun.alink.demo.devicesdk.chapter02.DeviceA,填写设备 device_0 的三元组信息后直接启动。设备上报的topic是 /${productKey}/${deviceName}/user/update,设备上报的消息是 {"content":"hello iot"}。
几个关键的对应关系:
• 设备上报的消息格式为json,创建规则时“数据格式”选择为JSON。
• 设备上报的topic=/${productKey}/${deviceName}/user/update,创建规则时 sql 配置的 topic=/${productKey}/+/user/update。
• 流转到另一个topic=/${productKey}/${deviceName}/user/get,设备B需要提前订阅好这个topic。

3.2.4、结果展示

日志服务能够看到消息从设备device_0到物联网平台,再通过规则引擎republish,从物联网平台到了另一个设备device_1。
traceId=0a3032ac15993925119167862d3bc9
image.png
同时,device_1 是可以收到物联网平台转发的消息的。
image.png

3.3、云产品流转高阶能力

云产品流转还有许多高阶能力,这里就不一一讲述了。
• 函数,官网文档:https://help.aliyun.com/document_detail/30555.html
• 容灾,官网文档:https://help.aliyun.com/document_detail/42733.html

4、服务端订阅

服务端可以直接订阅产品下所有类型的消息:设备上报消息、设备状态变化通知、设备生命周期变更、物模型历史数据上报、固件升级状态通知。配置服务端订阅后,物联网平台会将产品下所有设备的已订阅类型的消息转发至您的服务器。
image.png
本例将完成如下步骤,涉及的demo代码包通过课程【前言】提供的链接下载即可。开发环境的搭建不再赘述,是普通 maven 工程。
设备端代码:com.aliyun.alink.demo.devicesdk.chapter02.DeviceA
服务端代码:com.aliyun.alink.demo.openapi.chapter02.AmqpJavaClientDemo
• 创建一个服务端订阅
• 启动服务端订阅客户端
• 使用设备端SDK让设备 device_0 上线并发送消息给物联网平台
• 服务端订阅客户端可以接收到消息

4.1、创建服务端订阅

官网文档:https://help.aliyun.com/document_detail/142376.html
服务端订阅 普通.gif

4.2、启动服务端订阅客户端

启动:com.aliyun.alink.demo.openapi.chapter02.AmqpJavaClientDemo,填写必要信息。

4.3、设备上报消息

启动:com.aliyun.alink.demo.devicesdk.chapter02.DeviceA,填写设备 device_0 的三元组信息后直接启动。
设备上报的topic是 /${productKey}/${deviceName}/user/update
设备上报的消息是 {"content":"hello iot"}

4.4、结果展示

服务端订阅客户端可以接收到设备上线、设备上报、设备离线三条消息。
image.png

5、云产品流转 vs 服务端订阅

image.png

6、总结

上节课讲解了设备消息的上报(绿色线路),本节课讲解了用户业务系统如何获取到设备上报的消息(蓝色线路云产品流转、黄色线路服务端订阅),业务系统获取到设备消息后就可以进行数据的处理和展示。
image.png

7、后续

目前为止,对用户设备和业务系统来说,物联网平台就是一个消息的中转站,但事实上物联网平台远不止消息中转站的功能,下节课将讲解物联网平台的高阶能力 -- 设备管理。

8、思考题

规则引擎是否可以流转 Open API 下发的消息?服务端订阅呢?

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
6月前
|
存储 物联网 大数据
助力工业物联网,工业大数据之脚本开发【五】
助力工业物联网,工业大数据之脚本开发【五】
80 0
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
2月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
2月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
2月前
|
传感器 安全 物联网
物联网安全实战:保护你的智能设备免受攻击
【9月更文挑战第3天】物联网安全是一项复杂而艰巨的任务,需要我们共同努力来应对。通过采取上述实战措施,我们可以有效保护智能设备免受攻击,保障用户的数据隐私和网络安全。在未来的物联网发展中,我们将继续面临新的安全挑战和威胁,但只要我们保持警惕和不断创新,就一定能够构建一个更加安全、可靠的物联网生态系统。
|
4月前
|
安全 物联网 区块链
云端防御:云计算时代的网络安全策略与实战《未来已来:探索区块链、物联网与虚拟现实的融合革新》
【7月更文挑战第31天】在数字化转型的浪潮中,云计算已成为推动企业增长的核心动力。然而,随着数据和应用逐渐迁移到云端,网络安全问题也愈发严峻。本文将探讨云计算环境中的安全挑战,并提出相应的防御策略。通过分析云服务模型、安全威胁及信息安全技术的应用,结合代码示例,本文旨在为读者提供一套实用的云端安全防护方案。
47 1
|
6月前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
48 2
|
6月前
|
传感器 机器学习/深度学习 算法
LabVIEW开发工业物联网状态监测
LabVIEW开发工业物联网状态监测
68 2
|
6月前
|
传感器 存储 物联网
【C 言专栏】基于 C 语言的物联网开发
【5月更文挑战第6天】C 语言在物联网发展中扮演关键角色,适用于开发嵌入式系统、通信协议及云平台后端服务。其高效、灵活、可移植的特性适应资源有限的环境,确保设备兼容性。尽管开发挑战较大,如代码可读性,但借助辅助工具可改善。随着物联网技术进步,C 语言将持续发挥重要作用,塑造智能未来。
126 0
【C 言专栏】基于 C 语言的物联网开发
|
6月前
|
传感器 安全 物联网
C语言:物联网开发利器
C语言:物联网开发利器

相关产品

  • 物联网平台