您好,欢迎访问一九零五行业门户网

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

4g dtu设备通过mqtt协议连接阿里云实现数据传输
前言
该实例中以4g dtu作为参考设备,理论上支持mqtt的设备均可参考使用。
阿里云调试
首先创建阿里云账号并登陆登录(如果已有阿里云账号则无需注册直接登陆即可)
登录阿里云后点击“控制台”->通过搜索“物联网平台”进入到物联网平台
进入到物联网平台后点击“立即开通”进入物联网平台管理界面。(如果已经开通过了的则会接直接进入到物联网平台的管理界面)
然后选择“公共实例”
选择“设备管理”->“产品”->“创建产品”
根据下图或自身理解创建一个产品
创建完产品后,推荐先执行“添加设备”;在设备成功连上阿里云后再来根据自身需求“定义物模型”。
创建设备
通过上一步骤直接跳转到设备添加界面;或通过“设备管理”->“设备”->“选择刚创建的产品”->“添加设备”跳转到设备添加界面。
设置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协议连接阿里云实现数据传输的全部过程!
其它类似信息

推荐信息