SEARCH
Tastek Information
了解更多塔石的讯息
首页 / 新闻资讯 / 技术交流
News

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

2021-07-22

4G DTU设备通过MQTT协议连接阿里云实现数据传输

前言

该实例中以4G DTU作为参考设备,理论上支持MQTT的设备均可参考使用。

阿里云调试

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

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

wps82.jpg

 

 

wps82.jpg

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

wps84.jpg

wps85.jpg

然后选择公共实例

wps86.jpg

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

wps87.jpg

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

wps88.jpg

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

wps89.jpg

创建设备

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

wps90.jpg

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

wps91.jpg

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

wps92.jpg

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

wps93.jpg

DTU参数配置

此文档以TAS_LTE_363为例,其余支持MQTT的设备可供参考。

方式一:MQTT透传

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

wps94.jpg

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

wps95.jpg 

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

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

wps96.jpg

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

wps97.jpg

方式二:阿里云直连

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

wps98.jpg

数据收发测试

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


wps99.jpg

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

wps100.jpg

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

wps101.jpg

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

wps102.jpg

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

wps103.jpg


物模型测试

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

注意:该示例涉及一定的编程。

wps104.jpg

MODBUS传感器数据寄存器

定义物模型

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

wps105.jpg

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

wps106.jpg 

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

wps107.jpg

数据点上传

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

wps108.jpg

方式一:ALink JSON格式

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

wps109.jpg

首先需要更改DTU的主题配置,如下图所示

注意:上图中{productKey}和{deviceName}需要替换成自身设备对应的参数,例如:/sys/a1PHcbsgASq/866262044292042/thing/event/property/post

wps110.jpg

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

{

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

  "id": "4",

  "params": {

    "Temperature": 45.1,

    "Humidity": 60.3

},

  "version": "1.0"

}

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

wps111.jpg

方式二:透传/自定义

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

wps112.jpg

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

wps113.jpg

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

wps114.jpg

配置完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%。了解了自己所需要的数据后,我们可以看如下脚本:

wps115.jpg

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

wps116.jpg

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

wps117.jpg

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

wps118.jpg

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

wps119.jpg

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

wps120.jpg

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

wps121.jpg

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