如何通过MQTT协议使DTU设备连接阿里云实现数据传输

编程入门 行业动态 更新时间:2024-10-27 00:25:09

如何通过MQTT协议使DTU设备连接<a href=https://www.elefans.com/category/jswz/34/1770131.html style=阿里云实现数据传输"/>

如何通过MQTT协议使DTU设备连接阿里云实现数据传输

原文:百度安全验证

首先创建阿里云账号并登录登录(如果已有阿里云账号则无需注册直接登录即可)

登录阿里云后点击“控制台”->通过搜索“物联网平台”进入到物联网平台

进入到物联网平台后点击“立即开通”进入物联网平台管理界面。(如果已经开通过了的则会接直接进入到物联网平台的管理界面)

然后选择“公共实例”

选择“设备管理”->“产品”->“创建产品”

根据下图或自身理解创建一个产品

创建完产品后,推荐先执行“添加设备”;在设备成功连上阿里云后再来根据自身需求“定义物模型”。

通过上一步骤直接跳转到设备添加界面;或通过“设备管理”->“设备”->“选择刚创建的产品”->“添加设备”跳转到设备添加界面。

设置DeviceName,该参数为“一机一密”连接方式的重要参数之一,2/4G设备推荐使用设备的IMEI号作为识别码,可以通过AT+GSN指令查询设备的IMEI。

直接点击“前往查看”;或点击“完成”后再点击“查看”前往设备的详细信息界面。

进入设备详情界面后,可以点击DeviceSecret旁的“查看”来打开设备证书,其中包含了“一机一密”连接方式所需要用到的3个重要参数,后面简称“三元组”。

DTU参数配置(此文档以TAS_LTE_363为例其余支持MQTT的设备可供参考)

方式一:MQTT透传

我司提供“阿里云物联平台配置_32.exe”参数生成工具,如果没有可以联系销售或技术获取。首先打开参数生成工具,将1.4章节中复制得到的“三元组”直接粘贴到工具中,或者3条分别填入对应位置均可;再分别填入TimeStamp和ClientID,完成后点击“生成”即可。

经过上一步后,我们得到了DTU所需的通用MQTT连接参数,先将连接参数配置进DTU。

配置完连接参数,如需测试数据透传,还需要配置订阅和推送的主题。可以从设备的“Topic列表”->“自定义Topic”中找,一般使用update和get这两个主题。

注意:如果从产品的Topic类列表中得到的主题会带有${deviceName},需要替换成具体设备的deviceName之后才能使用,例如本例中的866262044292042。

如下图,得到订阅和推送的主题后,就可以完成DTU的所有基本配置了。在工具上填完所有参数后,点击“一键配置参数”将参数配置进DTU,当配置完成后点击“重启设备”即可。

方式二:阿里云直链

TAS_LTE_363系列提供了阿里云直连功能,方便阿里云的直接配置接入。在工具中选择“阿里云直连”模式,将“三元组”配置到相应的位置即可,主题选用了get和update主题。填写完参数后点击“一键配置参数”,提示配置完成后点击“重启设备”即可。

数据收发测试

正常情况下,如果设备已插卡插天线,那么重启之后设备会自行连接服务器。当连上服务器时,Link灯常亮,默认开启连接状态上报,串口还会收到连接状态信息“+STATUS: 1,MQTT CONNECTED”。

连上服务器之后在右下角窗口发送数据,就可在平台的“运维监控”->“日志服务”->“上行消息分析”中看到。

如果需要查看详细内容可以点“查看”查看详情。

平台上数据下发可以通过get主题下发,点击设备的“Topic列表”->“自定义Topic”->“发布消息”即可打开发布消息界面,输入相应内容(仅支持ASCII)后确认即可。

设备端会收到相应的数据。

物模型测试

在建立连接并成功透传数据之后,如何进一步满足客户需求并应用到真实的监控环境中,阿里云已经提供了物模型的功能来方便用户实现监控功能。本例中,我们实现了一个485接口、MODBUS协议的温湿度传感器的远程监控。(注意:该示例涉及一定的编程)

MODBUS传感器数据寄存器

定义物模型

本例中,我们创建的是自定义项目,所以是一个空的物模型,所有属性可以根据自身需要添加。通过“产品”->“查看”->“功能定义”->“编辑草稿”打开物模型管理界面。

通过“添加自定义功能”打开编辑界面,根据自身开发需要,填入相应的内容,例如本例中我们需要监控的是温度和湿度这两个属性,逐个添加即可。

创建完属性后,点击“发布更新”即可完成物模型的定义,相当于给该产品下的设备添加了两个属性,用于平台端监控。

数据点上传

在完成上一步“定义物模型”后,我们已经可以在相应设备的运行状态界面看到自己所添加的2个属性了。接下来关于物模型数据点的上传(属性上报),这边主要介绍透传/自定义以及ALink协议两种方式。

方式一:ALink JSON格式

该方式需要设备具有主动上报及数据组包能力,采用ICA 标准数据格式 (Alink JSON):设备按照物联网平台定义的标准数据格式生成数据,然后上报数据。数据格式类型及通讯主题如下:

首先需要更改DTU的主题配置,如下图所示(注意:上图中{productKey}和{deviceName}需要替换成自身设备对应的参数,例如:/sys/a1PHcbsgASq/866262044292042/thing/event/property/post)

完成DTU的配置更改并重启后,我们即可来上传数据进行测试,我在配置工具右下角输入框输入如下内容并发送,就可以在平台上的“设备”->“运行状态”中看到数据的实时变化。

{

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

"id": "4",

"params": {

"Temperature": 45.1,

"Humidity": 60.3

},

"version": "1.0"

}

注意:目前该ALink JSON格式数据需要由客户设备自行生成后传给DTU,若设备无法实现可以参考方式二。

方式二:透传/自定义

设备上报原始数据如二进制数据流,阿里云物联网平台会运行您在控制台提交的数据解析脚本,将原始数据转成标准数据格式后,再进行业务处理。通过这种方式通讯的话,我们需要将主题配置为物模型通讯Topic,如下图所示。

这里我们只测试透传上行,DTU配置如下图所示,修改推送和订阅的主题,点击“一键配置参数”来保存配置。

由于传感器并不会主动上报数据,所以需要DTU去轮询采集,我们可以使用自定义轮询这个功能来完成采集的工作,配置完保存重启。如下图所示:

配置完DTU之后,我们就需要根据自己设备透传至云端的数据来编写“数据解析脚本”,本例以JavaScript脚本为例。

注意:必须了解清楚自己上传数据的形式再来编写脚本。

本例中我们已经配置了DTU每10秒向温湿度传感器发送一条查询指令,正常情况下,温湿度传感器在收到指令后会恢复数据,这里我以其中一次返回举例,传感器返回HEX格式的数据 01 04 04 00 EB 01 E2 0A 69 共9字节。

如果不了解MODBUS RTU协议也不要紧,只要清楚这里我要用到数据中的第4/5/6/7这4个字节即可。其中4,5字节合起来是一个整型数int16,00 EB转换成10进制之后为235,根据本章之前提到的图1中描述,235/10=23.5℃即为真实温度值;同理,6,7两个字节表示的是湿度,转换后为482/10=48.2,则此时的实际湿度为48.2%。了解了自己所需要的数据后,我们可以看如下脚本:

脚本编写完成后,可以将脚本复制到此处

脚本可以进行模拟测试,在下图模拟输入框中填入设备上报的原始数据,点击“执行”

点击“执行”后如果脚本正确即可解析得到相应的ALink JSON格式的数据,确认解析正确后点击“提交”或“保存”即可。

提交脚本之后,我们就可以将DTU接传感器测试或用串口助手模拟测试了,为了直观表现,我们这边采用了modbus slave模拟测试。

并可以在“监控运维”->“日志服务”->“上行消息分析”->“MessageID”中查看原始数据。

以及“物模型数据分析”中查看经过脚本解析的数据。

以上内容便是使用4G DTU设备通过MQTT协议连接阿里云实现数据传输的全部过程!

更多推荐

如何通过MQTT协议使DTU设备连接阿里云实现数据传输

本文发布于:2024-03-06 10:32:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715098.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:阿里   数据传输   协议   设备   MQTT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!