AloT 物联网开发实战02 (二)

简介: AloT 物联网开发实战02 (二)

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

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


AloT 物联网开发实战02 (二)


2、实战

(1)协议

image.png

平台支持的协议,包含 MQTT、CoAP、HTTPS,以及在 web 和 APP上可以运行的MQTT over WebSocket 模式,还有 LoRa 的设备记录。

(2)MQTT 在物联网的应用

image.png

MQTT 协议在物联网平台上的应用。以电表为例,电表如果发送充电器协议有两个重要的点,一个叫 topic,一个配套的 topic 是一个消息主题或者一个消息类型搭配的是具体数据。或者可以认为是一个邮件的主题,配套的是邮件内容,当发邮件的时候,比如是周报的主题还是会议纪要,主题客户拜访的一个邮件,对应的内容格式是不一样的,一个主题会有自己固定的消息格式,MQTT 的报文发送到云端之后,如果没有人订阅消息就直接在云端消费掉,正常情况业务服务器会订阅固定的一些 topic,比如当前业务服务器比较关心 topic A类型的消息,一旦有这样的消息产生,物联网平台会把 payload 的消息发给订阅的服务器。同样物联网平台还会有其他设备来接入,其他的设备也可以订阅指定的 topic,比如电表发动的 topic c 风机来订阅, topic c 就可以直接流转到风机,设备不需要经过业务系统来处理。这是 M to M 的一个过程。阿里云在里面做了 topic 的约定,需要通过规则引擎模块做消息的流转过程。,在设备端上是可以通过topic A 来认证 loT server 的合法性,阿里云平台是通过三元组来认证设备的合法性,阿里云平台和服务器的交互通过 AK 认证的。

image.png

clientld  

id+"securemode=3signmethod=hmacsha1timestamp="+timestamp+"l'

id:表示客户端ID,64字符内。其中II内为扩展参数 securemode:安全模式;2为TLS加密,3为非加密 signmethod:签名算法类型。 timestamp:当前时间毫秒值。

username  

deviceName+"&"+productKey  

password  

sign_hmac(deviceSecretcontent)

sign_hmac 为 clientld 中的 signmethod 算法类型 content 为如下拼接字符串:"clientld${id}deviceName${deviceName}productKey${productKey}timestamp${timestamp}'

基于 MQTT 的通讯,第一个很关键的是 connect。在场景下设备是作为 MQTT 的 client,阿里云的物联网平台是作为 MQTT 的 Broker。Connect 的过程中会有 client ID、username 和 password 三个数值,文档也详细地给出 client ID 的一个生成规则,首先会有一个 ID,ID 是客户端自己来标识的,不需要和云端做约定,有了这样一个 ID 再加上鲜明的规范来生成 APP 的 ID,包含了安全模式,是否用 TLS 加密,签名算法是哪一个以及当前的时间戳能保证 Client ID 可以随着时间发生变化。Username 是通过 devicename 加 productkey 生成的。password 是由前面提到的 ID 加上 devicename、productkey、timestamp 拼接起来,按前边 Client ID里的签名算法做一个签名,签名直接用 devicesecert ,通过这样的规则可以生成 devicename、productkey、timestamp 把身份传递给云平台而不是三元组本身。云平台校验通过之后会返回 connect 的 ACK code 是0,如果是其他的比如是四,代表签名运算的逻辑有一些问题需要排查。当使用阿里云 LTSDK 整个过程不需要关心,SDK 已经实现,只需要把三元组丢给 SDK,SDK 会运算出来三个参数。

名字  值  报文流动方向 描述

CONNECT  1  Client-> Broker  device 连接 loT 平台

CONNACK  2  Broker-> Client  loT 平台确认连接结果

PUBLISH  3  双向  发布消息

PUBACK  4  双向  QoS=1消息发布收到确认

SUBSCRIBE  8  Client-> Broker device 订阅 loT 平台 Topic

SUBACK  9  Broker -> Client  loT 平台确认订阅结果

UNSUBSCRIBE  10  Client-> Broker  device取消订阅 loT 平台Topic

UNSUBACK  11  Broker -> Client  loT 平台确认取消订阅结果

PINGREQ  12  Client-> Broker  device 发送心跳请求到 loT 平台

PINGRESP  13  Broker -> Client  loT 平台响应 device 心跳

DISCONNECT  14  Client-> Broker  device 断开 loT 平台连接

包含连接的请求 connect 和connack,还有数据上报 publish puback,还有订阅消息的 subscribe ,suback 以及取消订阅的 unsubscribe,unsuback ,用于心跳的 pingreq、pingresp 以及主动断开连接的 disconnect。

image.png

Topic 可以里面查到,在产品的 topic 类型下面可以看到基础的通讯 topic、模型通讯topic,还可以自定义 topic 用来通讯。

(3)物模型(sys 开头系统 Topic)

物模型属性上报 Topic

/sys/(productKey}/{deviceName}/thing/event/property/post

物模型属性上报 payload 格式

{

"id": 3536123,  

"version": "1.0",

"params":{

"temperature": 23.7,

"humidity": 68

},

"method": "thing.event property.post"

}

loT 云端响应 replyTopic

/sys/{productKey}/{deviceName/thing/event/property/post_reply云端响应 payload 格式

{

"id": 3536123,

"code": 200,"

data":{}

}

当使用某一个具体的 topic,都会对应一个固定配套的格式。当使用系统开头的 topic,都会有一个固定的配套格式,需要通过文档来了解,如果使用自定义的 topic,可以完全按照自己的规则来定义配套的,不需要参考阿里云的规则,如果用系统的 topic,比如物联通讯一定要保证数据格式是一致的。当使用阿里云 SDK 的时候,整个数据格式的包装是不需要关心的,SDK 已经做了这一部分工作,这里是模型的一个属性,上报之后云端同样会响应一个给到设备端,告知设备端是否业务处理了。

(4)设备订阅 service 的 Topic

注意:服务订阅 Topic 这里不支持+通配符/sys/(productKey]/[deviceName}/thing/service/{tslserviceidentifier

loT 云端下行的 payload 格式

{

"id": 3536123

"version": "1.0",

"params":{

"入参 key1":"入参 value1"

"入参 key2":"入参 value2"

},

"method":"thing.service.{tsl.service.identifier}"

}

设备响应 replyTopic/sys/{productKey)/{deviceName}/thing/service/{tslservice.identifier)_reply

设备响应 payload 格式

{

"id": 3536123,

"code": 200,

"data": {

"出参 key1":"出参 value1"

"出参 key2":"出参 value2"

}

}

是物模型的服务,对于设备来说是订阅了一个服务的主题,云端一旦有人发起服务调用,设备端就可以收到的服务请求,可以做相应的处理,服务会包含入参和出参,在监听到云端指令的时候会收到云端给的执行入参,执行完成之后需要给云端一个 reply,服务执行的结果出参上报到云端。

设备上 报 pubTopic/sys/{productKey}/{deviceName}/thing/event/{tsl.event.identifier/post

设备上报 payload 格式

(

"id": 3536123,

"version":"1.0"

"params":{

"入参 key1":"入参 value1",

"入参 key2":"入参 value2"

},

"method":"thing.event.{tslevent.identifier}.post”

}  

loT 云端响应 replyTopic  

/sys/{productKey}/{deviceName}/thing/event/{tsleventidentifier}/postreply

云端响应 payload 格式  

{

"id": 3536123,

"code": 200,

"data": {}

}

如果是事件只有一个云端的上报,只包含入参没有返回值的,云端不会给设备返回值,但是云端会给设备端一个响应,是否收到事件或者告警。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
8月前
|
人工智能 物联网 Android开发
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
432 92
|
8月前
|
人工智能 物联网 Android开发
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
251 23
【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
|
8月前
|
存储 人工智能 物联网
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
301 14
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
|
8月前
|
人工智能 物联网 编译器
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
252 11
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
|
8月前
|
人工智能 前端开发 物联网
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
213 0
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
|
9月前
|
存储 监控 安全
工业物联网关应用:PLC数据通过智能网关上传阿里云实战
本文介绍如何使用智能网关将工厂PLC数据传输至阿里云平台,适合中小企业远程监控设备状态。硬件准备包括三菱FX3U PLC、4G智能网关和24V电源。接线步骤涵盖PLC编程口与网关连接、运行状态检测及天线电源接入。配置过程涉及通讯参数、阿里云对接和数据点映射。PLC程序关键点包括数据上传触发和温度值处理。阿里云平台操作包含实时数据查看、数据可视化和规则引擎设置。最后提供常见故障排查表和安全建议,确保系统稳定运行。
843 1
|
传感器 存储 物联网
在物联网(IoT)快速发展的今天,C语言作为物联网开发中的关键工具,以其高效、灵活、可移植的特点
在物联网(IoT)快速发展的今天,C语言作为物联网开发中的关键工具,以其高效、灵活、可移植的特点,广泛应用于嵌入式系统开发、通信协议实现及后端服务构建等领域,成为推动物联网技术进步的重要力量。
471 1
|
9月前
|
传感器 人工智能 物联网
健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
1174 19
|
存储 安全 物联网
政府在推动物联网技术标准和规范的统一方面可以发挥哪些作用?
政府在推动物联网技术标准和规范的统一方面可以发挥哪些作用?
443 60

相关产品

  • 物联网平台