EG边缘计算网关连接华为云物联网平台(MQTT协议)

需求概述

实现一个流程:EG8200mini采集Modbus RTU数据,通过MQTT协议连接华为云物联网平台

Modbus RTU采集此处不做过多赘述,可参考其他案例(串口读取Modbus传感器数据)介绍。下文默认已经采集到Modbus RTU数据。

要采集的Modbus点位表:

地址(Doc)

数据类型

属性

名称

00001

Boolean

读写

MotorControl1

00002

Uint16

读写

MotorControl2

40001

Uint16

读写

Requency1

40002

Uint16

读写

Requency2

MQTT通信相关参数及JSON数据格式要求,参考华为云设备属性上报_设备接入 IoTDA

发布主题(Topic):$oc/devices/{device_id}/sys/properties/report
数据格式样例:   
{
    "services": [
        {
            "service_id": "Temperature",	//服务ID
            "properties": {
                "value": 57,	//属性名称
                "value2": 60	//属性名称
            }
        }
    ]
}

需求分析

网关配置:

第一步:采集Modbus RTU数据

第二步:拼接Json

第三步:MQTT上报

平台配置:

第一步:添加产品

第二步:添加物模型

第三步:添加设备

第四步:数据展示

需求实现

网关配置

第一步:采集Modbus从机的数据

此处为采集Modbus RTU数据,不在过多赘述,可参考其他案例。采集到Modbus RTU的流程如下:

此处为语雀内容卡片,点击链接查看:Modbus RTU 读数据 · IOTRouter

源码:

[{"id":"d968892da4e40a46","type":"inject","z":"b7c6f1e56286d94a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":480,"y":1780,"wires":[["9b935c0dd6a63827","3bc2eb81af744a6d"]]},{"id":"9b935c0dd6a63827","type":"modbusRead","z":"b7c6f1e56286d94a","name":"读线圈","uid":"1","dataType":"1","len":"120","modbus":"f4b98c3be57ddcad","columns":[{"Key":"MotorControl1","Address":"0","Type":"23","Tdata":""},{"Key":"MotorControl2","Address":"1","Type":"23","Tdata":""}],"x":670,"y":1780,"wires":[["de1ce0dfa2e082f8"]]},{"id":"30fa1cad395c11c4","type":"modbusRead","z":"b7c6f1e56286d94a","name":"读频率","uid":"1","dataType":"3","len":"120","modbus":"f4b98c3be57ddcad","columns":[{"Key":"Requency1","Address":"0","Type":"1","Tdata":""},{"Key":"Requency2","Address":"1","Type":"1","Tdata":""}],"x":670,"y":1860,"wires":[["de1ce0dfa2e082f8"]]},{"id":"de1ce0dfa2e082f8","type":"join","z":"b7c6f1e56286d94a","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"0.5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":870,"y":1820,"wires":[["b53287da47908499"]]},{"id":"3bc2eb81af744a6d","type":"delay","z":"b7c6f1e56286d94a","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":470,"y":1860,"wires":[["30fa1cad395c11c4"]]},{"id":"b53287da47908499","type":"debug","z":"b7c6f1e56286d94a","name":"调试 254","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1040,"y":1820,"wires":[]},{"id":"f4b98c3be57ddcad","type":"modbus config","name":"","model":"2","host":"127.0.0.1","port":"502","serialport":"/dev/ttyAS3","baudrate":"115200","databits":"8","stopbits":"1","parity":"none","timeout":"50","reqtimeout":"1000"}]
第二步:拼接Json

参考需求概述的MQTT数据格式以及平台配置第二步的物模型设置。将网关配置第一步采集的数据JSON格式化:

源码:

var data = msg.payload
msg.payload = JSON.stringify({
    "services": [{
        "service_id": "serverId",
        "properties": {
            "temMotorControl1p": data.MotorControl1,
            "MotorControl2": data.MotorControl2,
            "Requency1": data.Requency1,
            "Requency2": data.Requency2
        },
    }
    ]
})
return msg
第三步:MQTT上报

使用MQTT发布节点,参考平台配置第四步的内容填写MQTT连接参数:

设备属性上报Topic:$oc/devices/{device_id}/sys/properties/report

此处为语雀视频卡片,点击链接查看:ev_20240703_100557.mp4

平台配置

第一步:添加产品

进入华为云物联网平台

设备接入IoTDA->产品->创建产品:

产品名称:自定义

协议类型:MQTT

数据格式:JSON

设备类型选择:自定义类型

设备类型:自定义

其他默认:

此处为语雀视频卡片,点击链接查看:ev_20240702_155023.mp4

第二步:添加物模型

产品->EG网关对接演示->详情->自定义模型->添加服务->新增属性:

此处为语雀视频卡片,点击链接查看:ev_20240702_170221.mp4

第三步:添加设备

设备->所有设备->注册设备:

所属产品:选择第一步创建的产品

设备标识码:自定义填入

设备ID:自定义

设备名称:自定义

备注描述:自定义

此处为语雀视频卡片,点击链接查看:ev_20240702_173246.mp4

第四步:激活设备

设备->所有设备->详情:

MQTT连接参数:

将MQTT连接参数配置到MQTT发布节点,详见网关配置第三步:

此时可以看到设备已经在线:

第五步:数据展示

设备->所有设备->详情->物模型数据:

网关触发数据发送,可以看到华为云物联网平台物模型数据更新:

总结

本章节介绍了一个相对复杂的流程,旨在表述网关所具备的能力,因此并未对程序的安全性、稳定性、灵活性等方面做优化。通过理解本流程,相信你已经对网关的可视化编程有了一定的熟悉。掌握它们将会为你制作更复杂的流程提供更多的选择和可能!

更多:成都纵横智控

### 回答1: 我可以回答这个问题。BC20连接华为云物联网平台的AT指令可以通过以下步骤实现: 1. 首先,需要在华为云物联网平台上创建设备和产品,并获取设备的设备ID和设备密钥。 2. 然后,在BC20模块上使用AT指令进行连接,具体指令如下: AT+QSSLCFG="sslversion",,3 AT+QSSLCFG="ciphersuite",,"xFFFF" AT+QSSLCFG="cacert",,"/certs/ca.crt" AT+QSSLCFG="clientcert",,"/certs/client.crt" AT+QSSLCFG="clientkey",,"/certs/client.key" AT+QSSLCFG="seclevel",,2 AT+QSSLCFG="ignorelocaltime",,1 AT+QSSLCFG="sni",,"iot-mqtts.cn-north-4.myhuaweicloud.com" AT+QMTCFG="will",,1,,"/will",1 AT+QMTCFG="version",,4 AT+QMTCFG="keepalive",,120 AT+QMTCFG="cleansession",,1 AT+QMTOPEN=,"iot-mqtts.cn-north-4.myhuaweicloud.com",8883 AT+QMTCONN=,"clientId","deviceID","deviceSecret" 其中,/certs/ca.crt是华为云物联网平台的根证书,/certs/client.crt和/certs/client.key是设备的证书和私钥。 3. 连接成功后,可以使用MQTT协议进行数据通信。 希望这个回答能够帮到你。 ### 回答2: BC20是华为公司推出的一款低功耗窄带物联网(NB-IoT)模组,可与华为云物联网平台进行连接。在连接华为云物联网平台之前,首先需要通过AT指令与BC20进行通信并进行一些设置。 首先,需要通过串口与BC20进行通信。使用串口工具(如SecureCRT、TeraTerm等),将计算机与BC20通过串口连接起来。 在成功连接后,可以输入AT指令与BC20进行交互。例如,输入AT指令“AT”后,如果BC20正常工作,将返回“OK”作为回应。另外,通过输入AT指令“AT+CGMI”可以查询BC20的制造商信息,输入AT指令“AT+CGSN”可以查询BC20的IMEI号码等。 要连接华为云物联网平台,需要进行如下步骤: 1. 配置APN:APN(接入点名称)是连接互联网所必需的网络参数。输入AT指令“AT+CGDCONT=1,"IP","******"”(这里的******是APN名称,根据运营商提供的信息进行设置),来设置BC20的APN。 2. 注册到移动网络:输入AT指令“AT+CFUN=0”将BC20关闭,再输入“AT+CFUN=1”将BC20重新打开。这样,BC20会尝试连接运营商的移动网络并注册。 3. 获取信息:通过输入AT指令“AT+CEREG?”来查询BC20的注册状态。当返回值为2时,表示已经成功注册到移动网络。 4. 连接华为云物联网平台:输入AT指令“AT+QHTTPURL=48,10”来设置华为云物联网平台的URL和端口号。然后,通过输入AT指令“AT+QHTTPGET=60”来进行HTTP GET请求并获取物联网平台的响应数据。 总之,通过以上的一系列AT指令的操作,可以使BC20成功连接华为云物联网平台,并进行数据的交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>