RS485设备通过DTU上传数据到阿里云物联网平台

简介: 使用消息解析处理透传数据

在开始之前,首先需要搞明白以下几个概念,RS485, Modbus协议和DTU。


RS485,基础概念自行度娘,这里如果简单理解的话就是一种串行通信标准。非硬件工程师其实记住RS485有4条线,A,B,VIM和GND。 可简单理解为A,B作为数据传输,VIM和GND作为电源的正负。在设备接入上一般是A口对A口, B口对B口。


Modbus协议, 一种通信协议,而且是现在很多工业的电气设备上都会用到的。稍后我们会在例子中讲到。


DTU, 数据传输单元,通过DTU,可以将RS485设备的数据传输到MQTT或者其他地方。


简单理解上面的概念后,我们开始进行数据的接入。


1. 首先进行硬件之间的对接,将RS485的A口接入DTU的A口, B口接入B口。在这里要值得注意得是,因为RS485设备是属于被动设备,需要由上位机发起询问后才会返回传感器上的数据。具体的数据格式需要根据自己手上的设备来确定。


以老司机手里的这款温湿度传感器为例,在产品说明书的章节里面,描述了这款传感器的问询参数:


地址码 功能码 起始地址 数据长度 校验码低位 校验码高位

0x01 0x03 0x00,0x00 0x00,0x02 0xC4 0x0B

这说明了,如果我们需要让传感器返回传感器的数据,我们需要对传感器下发如下的命令:


010300000002C40B


为了便于大家理解, 我们这样来看这串命令


01【我们要查询地址为01的设备,默认的地址为01】


03【使用功能03】


0000【从这里开始查询】


0002【数据长度】


C40B【验证码】


如果指令下发正常,将会返回下面的数据:


地址码 功能码 字节数 数据值(湿度、温度) 校验码低位 校验码高位

0x01 0x03 0x04 0x02 0x3F 0x01 0x06 0x4A 0x15

我们还是把数据拆分起来看一下,如果返回正常,我们将会得到下面的数据。


010304023F01064A15


其中023F0106就是我们期望得到的数据,因为返回的值是16进制的,我们根据产品手册的描述,得知023F和0106分别表示在十六进制下的温度和湿度,我们再进行转换后就可以得到实际10进制下的温度和湿度了。


2. 在我们理解了如何下发数据到设备,以及读取设备返回的值后。我们开始在阿里云物联网平台进行操作。


2.1 首先创建产品,这里要注意的是,因为我们的设备是一个4G的DTU,所以联网方式选择蜂窝,数据格式选择透传(因为我们从DTU拿到的数据并不是JSON格式的)

image.png



当我们产品创建好了后,我们可以看到我们的物模型的透传伤上行和下行的TOPIC。


image.png

2.2  【重点来了】因为我们透传过来的数据并不是能直接被云平台可以解析的,所以阿里云物联网平台提供了【消息解析】这么一个功能。


为了方便理解,我们可以看一下一次设备上报将会经过哪些步骤。

image.png


通过图,我们可以看到,设备通过DTU把设备上传后,首先云平台通过MQTT的TOPIC接手到消息后,会调用RawDataToProtocol讲数据从 原始数据解析道协议数据,接着云端进行一个响应up_raw.


我们从DTU上行收到的数据如下:

image.png



最终通过转换之后得到的数据如下:


{"Params":"01030402e40080ba1c","ResultData":{"method":"thing.event.property.post","fHead":1,"id":"50594532","addr":"1","params":{"Humidity":74,"temperature":12.8},"version":"1.0","fun":"3"},"RequestId":"null","Content":"null","Reason":"success","clientId":"null"}

在这里我们可以看到我们已经拿到了设备上行的数据,即{"Humidity":74,"temperature":12.8}


这里之所以能进行转换,就是我们刚提到的消息解析所进行的。消息解析只是JS,PYTHON,PHP进行编写。


老司机使用的是PYHON,我们来看一下代码


ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'  # 物联网平台Topic,设备上传属性数据到云端。

defraw_data_to_protocol(bytes):
uint8Array= []
forbyteValueinbytes:
uint8Array.append(byteValue&0xff)
fHead=uint8Array[0]
jsonMap= {}
jsonMap['fHead'] =fHeadjsonMap['method'] =ALINK_PROP_REPORT_METHODjsonMap['version'] ='1.0'jsonMap['id'] =str(bytes_to_int(uint8Array[1:5]))
jsonMap['addr'] =str(bytes_to_int(uint8Array[0:1]))
jsonMap['fun'] =str(bytes_to_int(uint8Array[1:2]))
params= {}
params['Humidity'] =float(bytes_to_int(uint8Array[3:5]))/10params['temperature'] =float(bytes_to_int(uint8Array[5:7]))/10jsonMap['params'] =paramsreturnjsonMap# byte转成int。defbytes_to_int(bytes):
data= ['%02X'%iforiinbytes]
returnint(''.join(data), 16)

在上面的代码上,我们可以看到消息解析 讲收到的消息进行了几次转换,得到了相对应的数据。


我们这里着重描述一下如何获取到温度和湿度


params['Humidity'] = float(bytes_to_int(uint8Array[3:5]))/10

params['temperature'] = float(bytes_to_int(uint8Array[5:7]))/10

我们回顾一下,上述代码其实是对010304023F01064A15进行了解析。而根据传感器的约定,数据的第四,第五位表示的是湿度,第六,第七表示的是温度。


01 03 04 02 3F 01 06 4A 15


所以uint8Array[3:5] 我们拿到的是 02 3F,并将bytes转换成int后,再除以10,则得到了我们的湿度。


uint8Array[5:7] => 01 06 进行转换,再除以10,得到温度。


以上就是通过消息解析,将透传的数据在阿里云平台上进行转换的方式了。


值得注意的是,由于RS485设备属于被动设备,有的DTU可以自动轮讯,有的DTU是需要上位机下发指令后才能对RS485设备发送指令。


 

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
3天前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第26天】随着物联网(IoT)技术的快速发展,智能设备已广泛应用于智能家居、工业控制和智慧城市等领域。然而,设备数量的激增也带来了严重的安全问题,如黑客攻击、数据泄露和恶意控制,对个人隐私、企业运营和国家安全构成威胁。因此,加强物联网设备的安全防护至关重要。
19 7
|
5天前
|
监控 安全 物联网
确保互联世界中物联网设备安全的三个技巧
确保互联世界中物联网设备安全的三个技巧
|
14天前
|
物联网
物联网卡不能使用在什么设备上
“物联网卡不能使用在什么设备上”这一操作或规定,通常基于物联网卡的特性、使用条款以及设备兼容性等因素。以下是对这一问题的详细分析和操作建议:
|
16天前
|
存储 监控 物联网
医疗物联网设备精细化管理系统解决方案
华汇数据智慧医院物联网管理系统解决方案是一种集物联网、云计算、大数据和人工智能等先进技术于一体的综合性解决方案,旨在提升医院的运营效率、医疗质量和患者满意度。
54 3
|
19天前
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
99 5
|
3天前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第27天】随着物联网技术的快速发展,智能设备已广泛应用于生活和工业领域。然而,物联网设备的安全问题日益凸显,主要威胁包括中间人攻击、DDoS攻击和恶意软件植入。本文探讨了物联网设备的安全防护策略和最佳实践,包括设备认证和加密、定期更新、网络隔离以及安全标准的制定与实施,旨在确保设备安全和数据保护。
14 0
|
14天前
|
存储 供应链 物联网
探索未来:区块链、物联网与虚拟现实技术的融合与创新
【10月更文挑战第15天】本文深入探讨了新兴技术如区块链、物联网(IoT)和虚拟现实(VR)的发展趋势及其在现代社会的应用。通过分析这些技术的独特属性和它们如何相互补充,我们揭示了一个由高度互联、智能化和沉浸式体验定义的未来图景。文章不仅讨论了这些技术当前的挑战,还展望了它们在未来可能带来的转变,旨在为读者提供对这些令人兴奋的技术趋势的全面理解。
|
14天前
|
安全 物联网 区块链
未来已来:探索区块链技术、物联网与虚拟现实的融合趋势
【10月更文挑战第15天】 在数字化浪潮中,区块链、物联网(IoT)和虚拟现实(VR)技术正引领着一场革命。本文将深入探讨这三种技术的发展趋势和相互融合的潜力,以及它们如何共同塑造我们的未来。我们将从基本概念入手,逐步揭示这些技术如何影响经济、社会和日常生活,同时提供具体应用场景以展示其变革力量。
|
1天前
|
供应链 物联网 区块链
未来已来:区块链技术、物联网与虚拟现实的融合与创新
【10月更文挑战第28天】在数字化浪潮的推动下,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步渗透至我们的日常生活中。本文将探讨这些技术的发展趋势,以及它们如何相互融合,创造出前所未有的应用场景。我们将通过实际案例,展示这些技术如何改变工业、医疗、教育和娱乐等多个领域。最后,我们将展望这些技术未来的发展方向,以及它们可能带来的社会变革。
21 12
|
3天前
|
传感器 存储 运维
智能物联网:LoRaWAN技术在低功耗广域网中的应用
【10月更文挑战第26天】本文详细介绍了LoRaWAN技术的基本原理、应用场景及实际应用示例。LoRaWAN是一种低功耗、长距离的网络层协议,适用于智能城市、农业、工业监控等领域。文章通过示例代码展示了如何使用LoRaWAN传输温湿度数据,并强调了其在物联网中的重要性和广阔前景。
23 6

热门文章

最新文章

相关产品

  • 物联网平台