AloT 企业物联网业务平台实战03(一)|学习笔记

简介: 快速学习 AloT 企业物联网业务平台实战03

开发者学堂课程【阿里云 AIoT 物联网开发实战:AloT 企业物联网业务平台实战03】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/328/detail/3696


AloT 企业物联网业务平台实战03(一)


内容介绍:

一、物联网平台的回顾

二、异步下行和同步下行

三、广播消息和设备影子


一、物联网平台的回顾

1、企业 loT 业务架构大图

企业基于物联网平台产品做自己的物联网业务架构,通用的方案企业自身的设备端可以通过 MQTT 协议接入到云上的物联网平台,云产品会把数据实时的推送到云上的其他云产品,比如数据库类的,消息队列类的以及实时计算类的,同样也可以实时推送到企业购买的 4S服务器上。下行的链路APP或者是在 web 控制台上发送一条配置信息,或者是比如充电宝弹出一个充电宝,或者是共享单车开锁的指令,通过物联网平台推送到指定的充电宝,机柜或者是单车上面。

2、loT 物联网 MQTT 协议详解

MQTT 协议的技术分享,从网络传输来说最底层是以太网的报文,最上面是企业关心的自己的业务的报文。整个过程从上到下是这样的,当业务系统或者是设备采集到业务数据之后,首先要把业务数据打包到 MQTT 协议报文里面,前面封装 MQTT 通讯用的 header。之后系统或者 SDK 会把 MQTT 报文再封装到用于 TCP 通讯的 TCP 报文里,会追加 TCP 的 header,TCP 在传输中又会到网络层,会有一个 IP 转化成 IP 的报文,整个 TCP 的数据会变成 IP 报文的一部分,需要追加 IP 的 header,最终到以太网物理第二层传输的时候会转发成以太网的报文传输出去,设备端传递到阿里云的物联网平台,物联网平台会反向的一个个解出来,只解到 MQTT 报文,最终互联网平台可以通过飞机引擎的流转数据流转,把客户的业务报文直接转到比如数据库消息队列里边去。所以如果使用物联网平台的设备端 SDK,感知到的只有一个业务报文,同样云上业务系统拿到的是业务报文,不需要感知中间网络打包的整个过程。

3、云端业务系统下行指令到 loT 设备

下行数据步骤:

(1)设备订阅 TopicA

(2)云端业务系统通过 PubAPI 给指定设备发送消息

(3)loT 平台收到 PubAPI 请求,给设备 publish TopicA 消息

(4)设备通过 MQTT 监听到指定 TopicA 的消息

数据下行的场景 web 或者 APP 发一条指令,通过 HTTP 的方式发到后台的业务 server 上,调用阿里云提供的 API叫 open API。同样提供了多语言的 SDK,可以比如在用 Java 或者 php python notes 都可以,都有对应的 API 的 SDK。通过 API 调用把它制定发到物联网平台,物联网平台会查找到对应设备的链接,通过 MQTT长链接把数据推送到订阅的设备上,首先是设备端和云平台建立一个MQTT 长链接,设备首先要订阅 topic,是设备会关心哪些 topic,如果没有订阅有消息过来的时候,物联网平台不会推送到设备上,所以首先设备会订阅一个 topic a,有了订阅之后云端的业务系统就可以通过 API 给 topic a 主题发送消息。

接下来调用 API 的时候,物联网平台会收到业务系统推过来的 API 调用请求。物联网平台会把 HTTP 的请求业务转化成 MQTT 通讯的 topic 和配套的转化成topic a,pubilc 到设备端,publish 过程中可以设置 QS ,QS等于零代表平台会尽量的推送一次,但并不会保证设备一定会收到,如果设置 QS 等于一代表希望设备一定要收到的,物联网平台会尽量保证消息的触达,当设备在线的时候物联网平台会把消息存储下来,然后给设备推送消息。

设备端收到了消息之后,会回复 Pub ACK,确认设备收到消息,同样有可能由于网络原因导致设备端没有收到消息,或者是设备端回复 Pub ACK 在网络过程中丢失,物联网平台会在一定的时间内发现没有收到 Pub ACK 会重复的推送,消息给到设备端,一直到设备端回复 Pub ACK,还有一个情况是设备当前不在线,物联网平台同样会把消息存下来,等设备上线之后物联网平台会第一时间把消息推送到设备上,同样设备也可以做选择,通过connect 的参数来告知互联网平台是否要推送不在线的消息,叫clean session的概念。如果设置成处要把前面的 session 清理掉,不在线的消息不需要发,如果 clean session 是 force还要保持原来的绘画,意味着不在线的时候收到的消息也需要补偿。

4、实战

物联网平台,看到有创建的未激活设备,来到控制台找到设备模拟器,选设备。

启动模拟器设备上线

当前设备处于在线状态,设备接收指令订阅一个 topic  

点击订阅,设备会发送订阅的请求到物联网平台。

来到物联网平台设备详情里面,来到设备的订阅列表,topic 列表

设备的已订阅列表有了 topic ,说明设备可以订阅 topic,有 topic 系统默认订阅的,设备影子、物模型配置信息,

有发布消息的功能,可以通过控制台给设备主题发送消息。

发送的消息可以在模拟器看到效果,收到消息消息内容是 from lt console 。

来到日志服务里看消息发送的过程,时间点调用 Pub API 给设备发消息。也可以看消息的内容 from lt council,同样云端会给设备下行消息publish message topic,因为是 QS 等于一,所以还可以看到设备端回复 Pub ACK ,Pub ACK from device 是 MQTT 报文里的消息 ID,这是一个完整的 Pub 过程。

业务开发的时候不是通过控制台来发送消息,是通过 API,也有一个可视化的 API 调试叫 api.aliyun.com,找到阿里云物联网平台,找到 Pub API,首先会选 region 比如是在上海,topic 的 FulName 以及内容还有 productkey,topicFulName 把它 copy 过去,同样 product key、QS 同样写一,看 message content 是 BASE64 编码过的内容。输入这 BASE64 的编码,编码是 hello iot 文本的 BASE64 编码,发起调用。

调用成功有 message id,来到平台上模拟器设备收到了 topic 是 hello iot。

刷新日志,有 Pub 日志,平台发送 Pub 设备端回复 Pub ACK,通过 API 调用的方式来实现下行的完整过程。

在线的 API 调试工具展示完整的示例代码

import com.aliyuncs.CommonRequest;  

import com.aliyuncs.CommonResponse:  

import com.aliyuncs.DefaultAcsClient;  

import com.aliyuncs.IAcsClient;

import com.aliyuncs.exceptions.ClientException;  

import com.aliyuncs.exceptions.ServerException;  

import com.aliyuncs.http.MethodType;

import com.aliyuncs.profileDefaultProfile;/*

pom.xml

<dependency>

<groupId>com.aliyun</groupId>

<artifactld>aliyun-java-sdk-core</artifactid> <version>4.5.3</version>

</dependency>

*/

public class Pub{

public static void main(Stringl] args){

DefaultProfile profile=DefaultProfile.getProfile("cn-shanghai" "<accessKeyId:"." cacces IAcsClient client=new DefaultAcsClie nt(profile);

CommonRequest request=newCommonRequest();

request.setSysMethod(MethodTypePOST);

request.setSysDomain("iot.cn-shanghai.aliyuncs.com"); request.setSysVersion("2018-01-20"); request.setSysAction(“Pub");

request.putQueryParameter("RegionId","cn-shanghai"):

request.putQueryParameter("TopicFulIName”,“/a1kRdXDgNBv/abcd0001/user/get"); request.putQueryParameter("MessageContent","aGVsbG8gaW90");

request.putQueryParameter"ProductKey" “a1kRdXDqN0v");

request.putQueryParameter("Qos",“1");  

try{

CommonResponse response=client.getCommonResponse(request); System.out.println(response.getData());  

}catch(ServerException e){

e.printStackTrace():

}catch(clientException e){

e.printStackTracel);

}

}

}

在线的 API 调试工具,展示了完整的示例代码,比如如果用 Java开发有一个request,入参,是上海的 region,然后是 Pub action,Message content 以及 QS=1。

Node.js 也会有示例代码,Go语言、PHP、Python、Net、Ruby 都有对应的示例代码,方便开发研调。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
19天前
|
运维 Cloud Native 云计算
云端之舞:云原生技术的未来展望
【6月更文挑战第12天】随着云计算的不断演进,云原生技术已经成为推动现代软件开发和运维模式变革的关键力量。本文将探讨云原生的核心概念、优势以及面临的挑战,并展望未来云原生技术的发展趋势。
|
8月前
|
算法 vr&ar
体育平台开发搭建分析:赛事程序与数据融合,推动直播平台高质量发展
体育直播平台作为体育赛事传播的新兴方式,但它的成功关键在于赛事直播程序和体育数据的完美结合。我们将从这两个方面进行简单易懂的分析
|
Cloud Native 容灾 大数据
《生来创新-金融级云原生》——前言
《生来创新-金融级云原生》——前言
177 0
|
数据采集 人工智能 安全
一文看尽云栖上的IoT展区:更强平台 更新方案
2022年云栖大会,阿里云IoT展示了包括未来工厂、一云多端应用引擎、数智农业、城市治理移动AI等全新升级的云网边端安全一体化IoT智能底和创新应用解决方案。
270 0
一文看尽云栖上的IoT展区:更强平台 更新方案
|
存储 Cloud Native 安全
物联网课程论文:《基于云原生的物联网端管云系统方案综述与演进设想》
这篇论文八千多字,主题是 云原生+物联网平台。花了几天心思,查了很多篇论文,因为自己对物联网通信的硬件方面不太会,所以还是选择写综述类的论文了,这篇论文感觉技术深度和广度比我上一篇计算机网络论文要更加深刻一点。
物联网课程论文:《基于云原生的物联网端管云系统方案综述与演进设想》
|
物联网 时序数据库 计算机视觉
《物联网数据运营之路-时序数据库物联网模型探究》电子版地址
物联网数据运营之路-时序数据库物联网模型探究
104 0
《物联网数据运营之路-时序数据库物联网模型探究》电子版地址
|
存储 弹性计算 人工智能
|
物联网 Shell API
AloT 企业物联网业务平台实战03(二)|学习笔记
快速学习 AloT 企业物联网业务平台实战03
213 0
AloT 企业物联网业务平台实战03(二)|学习笔记
|
JSON 缓存 物联网
AloT 企业物联网业务平台实战03(三)|学习笔记
快速学习 AloT 企业物联网业务平台实战03(三)
185 0
AloT 企业物联网业务平台实战03(三)|学习笔记
《美的物联平台的云上实践与应用--- 人机新世代战略下的智能化探索》电子版地址
美的物联平台的云上实践与应用--- 人机新世代战略下的智能化探索
61 0
《美的物联平台的云上实践与应用--- 人机新世代战略下的智能化探索》电子版地址

相关产品

  • 物联网平台