4G模块、WIFI模块、NBIOT模块通过AT指令毗连华为云物联网服务器(MQTT协议 ...

打印 上一主题 下一主题

主题 1022|帖子 1022|积分 3066

MQTT协议概述

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被计划用来提供一对多的消息分发和应用之间的通讯,尤其实用于远程位置的设备和高延长或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅恣意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责担当来自客户端的毗连请求,并转发消息给感兴趣的客户端。

MQTT协议特点

MQTT协议具有以下主要特点:


  • 轻量级:MQTT协议的实现非常轻巧,占用资源少,非常适合于资源受限的设备,如传感器、嵌入式设备等。
  • 低带宽需求:MQTT协议的计划考虑到了带宽的高效使用,其报头非常小,这使得它可以或许在低带宽环境下有效工作。
  • 可靠的消息传递:MQTT提供了三种服务质量等级(QoS),允许发布者和订阅者之间选择符合的服务质量级别。
  • 支持多种传输层:虽然MQTT最初是基于TCP/IP计划的,但它也支持使用WebSockets和其他传输协议,以便更好地集成到当代Web应用中。
  • 安全性:MQTT支持TLS加密通讯,保证了数据的安全性,并可以通过认证机制增强安全性。
MQTT协议的根本概念

MQTT协议的核心概念包罗客户端、服务器(Broker)、主题和消息。


  • 客户端(Client):任何毗连到Broker的应用步伐都可以被称为客户端。客户端可以订阅感兴趣的主题,接收其他客户端发布的消息,也可以发布消息。
  • 服务器(Broker):MQTT服务器或Broker是消息的中心节点,它担当客户端的毗连请求,存储订阅关系,并将消息从发布者路由到订阅者。
  • 主题(Topic):主题是一个字符串,用于标识消息的类别或目的。客户端订阅主题后,可以接收到发布到该主题的全部消息。
  • 消息(Message):消息是由客户端发布的一组数据,它包含两部门:主题名和消息体。
MQTT协议的工作流程

MQTT的工作流程如下:

  • 毗连:客户端向Broker发送毗连请求,包含客户端ID、用户名、暗码等信息。
  • 订阅:一旦毗连乐成,客户端可以订阅一个或多个主题。
  • 发布:客户端可以向特定主题发布消息。
  • 接收:如果客户端订阅了一个主题,则它可以接收该主题下的消息。
  • 断开毗连:当客户端完玉成部操作后,可以断开与Broker的毗连。
MQTT协议的应用场景

由于其轻量级特性和高效的消息传递本领,MQTT协议广泛应用于物联网(IoT)领域,特殊是在智能家居、工业自动化、远程监控等领域。此外,随着移动互联网的发展,MQTT也被用于移动应用步伐中的及时数据更新和推送服务。
【1】MQTT服务器地点信息

  1. IP地址:117.78.5.125
  2. 端口号:1883
  3. ClientId      64000697352830580e48df07_dev1_0_0_2023030206
  4. Username      64000697352830580e48df07_dev1
  5. Password      a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449
  6. 订阅主题:$oc/devices/64000697352830580e48df07_dev1/sys/messages/down
  7. 发布主题:$oc/devices/64000697352830580e48df07_dev1/sys/properties/report
  8. 发布的消息:{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}
复制代码
【2】ESP8266-WIFI毗连

要通过ESP8266模块使用AT
指令来毗连MQTT服务器,订阅特定的主题,并发布消息,可以按照以下步骤操作。
请注意,这里提供的AT
下令序列是基于ESP8266模块支持的MQTT功能。
下面是一个示例流程:

  • 初始化ESP8266

    • AT
      +RST 重启模块
    • AT
      测试模块是否相应
    • AT
      +CIPMUX=1 设置多毗连模式(可选)
    • AT
      +CIPRXGET=1,100 设置接收数据的方式(可选)

  • 设置Wi-Fi毗连

    • AT
      +CWMODE=3 设置为Station+AP模式(通常只需要Station模式即可,即设置为1)
    • AT
      +CWJAP="yourSSID","yourPassword" 毗连到Wi-Fi网络

  • 配置MQTT客户端

    • AT
      +CIPMQTTCFG="117.78.5.125",1883,"64000697352830580e48df07_dev1_0_0_2023030206","64000697352830580e48df07_dev1","","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449",0,0,60 配置MQTT客户端参数,包罗服务器地点、端口、客户端ID、用户名、暗码等

  • 毗连MQTT服务器

    • AT
      +CIPMQTTC=1 毗连到MQTT服务器

  • 订阅主题

    • AT
      +CIPMQTTSUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down",2 订阅指定的主题

  • 发布消息

    • AT
      +CIPMQTTPUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",2,0,0,"{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}" 发布消息到指定主题

  • 断开MQTT毗连

    • AT
      +CIPMQTTDISC=0 断开与MQTT服务器的毗连

  • 关闭TCP/IP毗连

    • AT
      +CIPCLOSE 关闭当前的TCP/IP毗连

注意,在使用中,需要将"yourSSID"和"yourPassword"替换为实际使用的Wi-Fi网络的SSID和暗码。
【3】NBIOT-BC26

使用NBIoT-BC26模块毗连MQTT服务器的过程与使用ESP8266类似,但是下令集有所不同。
以下是使用NBIoT-BC26模块通过AT
指令毗连MQTT服务器、订阅主题以及发布消息的示例流程:

  • 初始化模块

    • AT
      查抄模块是否在线
    • AT
      E0 关闭回显
    • AT
      +CFUN=1 启用射频功能
    • AT
      +CGAT
      T=1 附着到网络

  • 设置网络参数

    • AT
      +CNOPS=0 设置网络操作模式
    • AT
      +CGDCONT=1,"IP","your_apn" 设置PDP上下文,使用您的运营商提供的APN

  • 激活PDP上下文

    • AT
      +CGACT=1,1 激活PDP上下文

  • 配置MQTT客户端

    • AT
      +QMTOPEN=0,"tcp","117.78.5.125",1883 打开一个TCP毗连到MQTT服务器

  • 建立MQTT毗连

    • 使用AT
      +QMTCONN下令举行毗连,此下令会发送MQTT CONNECT包给服务器。
    • AT
      +QMTCONN=0,"64000697352830580e48df07_dev1_0_0_2023030206",60,0,1,0,"64000697352830580e48df07_dev1","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449" 毗连MQTT服务器,参数包罗客户端ID,保持运动时间,Clean Session标志,Will标志,Will QoS,Will保存位,用户名和暗码。

  • 订阅主题

    • AT
      +QMTSUB=0,2,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down" 订阅主题

  • 发布消息

    • AT
      +QMTPUB=0,1,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",0,0,0,512 开始发送消息
    • {"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]} 发送的消息内容

  • 断开MQTT毗连

    • AT
      +QMTDISC=0 断开MQTT毗连

  • 关闭TCP毗连

    • AT
      +QMTCLS=0 关闭TCP毗连

  • 去激活PDP上下文

    • AT
      +CGACT=1,0 去激活PDP上下文

上述下令序列是基于NBIoT-BC26模块的MQTT功能。
【4】EC20-4G模块

对于EC20模块(通常是4G LTE模块),毗连MQTT服务器、订阅主题和发布消息的AT
指令会有所不同。
以下是使用EC20模块通过AT
指令完成这些操作的流程:

  • 初始化EC20模块
  1. AT
复制代码
查抄EC20是否正常工作。

  • 设置工作模式为数据模式(如果尚未设置)
  1. AT
  2. +QCFG="nwscanmode",0,1
复制代码
设置网络扫描模式为自动。

  • 毗连到移动网络
  1. AT
  2. +QNWINFO
复制代码
查抄网络毗连状态。

  • 设置MQTT服务器的IP地点和端口
  1. AT
  2. +QMTOPEN=0,"117.78.5.125",1883
复制代码
毗连到MQTT服务器的指定IP和端口。

  • 登录MQTT服务器
  1. AT
  2. +QMTCONN=0,"64000697352830580e48df07_dev1","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449",0,0
复制代码
使用客户端ID、用户名和暗码毗连MQTT服务器。

  • 订阅MQTT主题
  1. AT
  2. +QMTSUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down",1
复制代码
订阅指定的MQTT主题。

  • 发布消息到MQTT主题
  1. AT
  2. +QMTPUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",0,0,{"services":[{"service_id":"stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}
复制代码
向指定的MQTT主题发布消息。

  • 断开MQTT毗连
  1. AT
  2. +QMTDISC=0
复制代码
断开与MQTT服务器的毗连。

  • 关闭EC20模块(如果需要)
  1. AT
  2. +QPOWD=1
复制代码
关闭EC20模块或使其进入省电模式。

  • 查抄状态(可选)
  1. AT
  2. +QMTSTAT
  3. =0
复制代码
查抄MQTT毗连状态。
请注意:


  • AT
    +QMTOPEN、AT
    +QMTCONN、AT
    +QMTSUB 和 AT
    +QMTPUB 下令中的第一个参数 0 是毗连的会话编号。可以根据需要调整它。
  • 发布的消息格式要符合MQTT协议的要求,可能需要根据具体的EC20模块固件版本调整。
  • 确保你已经在模块中设置了精确的APN,并乐成毗连到移动网络。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表