MQTTPoE Unit

MQTTPoE Unit 是一款专为 MQTT 通信设计的以太网通信模块。它支持 PoE 供电并内置 W5500 以太网芯片,可实现与以太网网络的无缝连接。该模块还包含 UART 通信接口,支持通过 AT commands 进行控制。此外,它集成了 RJ45 自适应 10/100M 网络端口,便于进行网络连接。

备注

PoE 版本集成了 PoE 供电,负载能力为 1.2A@5V(6W)。

支持以下产品:

MqttPoeUnit

MicroPython 应用示例

import os, sys, io
import M5
from M5 import *
from unit import MQTTPoEUnit
import time

def mqtt_0_SubTopic_event(data):
    global mqttpoe_0
    print(data[0])
    print(data[1])

mqttpoe_0 = MQTTPoEUnit(port=(18, 17))

mqttpoe_0.set_client('m5-mqtt-2024', 'mqtt.m5stack.com', 1883, '', '', 120)
mqttpoe_0.set_subscribe('SubTopic', mqtt_0_SubTopic_event, 0)
mqttpoe_0.set_connect()

while True:
    mqttpoe_0.check_msg()
    time.sleep_ms(50)

UiFlow2 应用示例:

example.png

mqttpoe_demo.m5f2

class MQTTPoEUnit

“”

class MQTTPoEUnit(port=(, ))

创建一个 MQTTPoEUnit 对象

参数为:
  • port uart 引脚元组,包含:(tx_pin, rx_pin)

UIFLOW2:

init.png

Methods

MQTTPoEUnit.set_client(client_id, server, port=0, username=None, password=None, keepalive=0)
参数:
  • client_id (str) – 连接到 broker 时使用的唯一客户端 ID 字符串。

  • server (str) – 远程 broker 的主机名或 IP 地址。

  • port (int) – 要连接的服务器主机的网络端口。

  • username (str or None) – 用于 Broker 身份验证的用户名。

  • password (str or None) – 用于 Broker 身份验证的密码。

  • keepalive (int) – 允许与 broker 通信之间的最大时间间隔(单位:秒)。如果没有交换其他消息,该参数将控制客户端向 broker 发送 ping 消息的频率。

UIFLOW2:

set_client.png

MQTTPoEUnit.set_connect()

连接到服务器。

UIFLOW2:

set_connect.png

MQTTPoEUnit.set_disconnect()

断开与服务器的连接,并释放资源。

UIFLOW2:

set_disconnect.png

MQTTPoEUnit.set_publish(topic, msg, qos=0)

发布一条消息。

参数:
  • topic (str or bytes or bytearray) – 消息应该发布到的主题。

  • msg (str or bytes or bytearray) – 作为遗嘱发送的消息。

  • qos (int) – 要使用的服务质量等级

UIFLOW2:

set_publish.png

MQTTPoEUnit.set_subscribe(topic, handler, qos=0)

订阅一个主题。

参数:
  • topic (str or bytes or bytearray) – 一个用于指定要订阅的订阅主题的字符串。

  • handler (function) – 当在客户端订阅的主题上接收到消息,并且该消息匹配到现有的主题过滤器回调函数时调用。

  • qos (int) – 订阅所需的服务质量(QoS)等级。默认为 0。

备注

  1. 使用该积木块时,“MQTT connect” 积木块必须设置在该积木块之后

  2. 服务器一次只能订阅 4 个主题。

UIFLOW2:

set_subscribe.png

一个用于显示已收到消息的处理程序:

def mqtt_0_SubTopic_event(data):
    print("topic:", data[0])
    print("msg:", data[1])

在 UiFlow2 上,你可以通过 get_topic.pngget_msg.png 获取当前处理器的 topicmessage

MQTTPoEUnit.check_msg()

重要

check_msg() 是“主循环迭代”方法,提供阻塞与非阻塞版本。它们应在循环中周期性调用;如果你没有其他需要在前台执行的任务(即你的应用仅对已订阅的 MQTT 消息作出响应),则使用 check_msg()

请注意,如果您只发布消息,则无需调用 check_msg()

检查服务器消息。

UIFLOW2:

check_msg.png

MQTTPoEUnit.check_modem_is_ready()

检查与 MQTT 单元的通信是否成功。

  • 返回: bool:True 或 False

UIFLOW2:

modem_is_ready.png

MQTTPoEUnit.get_firmware_version()

获取当前固件版本号。

  • Return: string

UIFLOW2:

get_firmware_version.png

MQTTPoEUnit.get_baudrate()

获取模块当前的波特率,默认波特率为 9600。

  • 返回:int:4800、9600、19200、34800、115200、230400

UIFLOW2:

get_baudrate.png

MQTTPoEUnit.get_network_status()

用于检查网络状态是否已连接或已断开。

  • 返回:int:0 ~ 1

UIFLOW2:

get_network_status.png

MQTTPoEUnit.get_network_parameters(param)

获取模块当前实际的 IP 地址、子网掩码、网关和 DNS 服务器。

参数为:
  • param:IP 地址 = 0,子网掩码 = 1,网关 = 2,DNS 服务器 = 3。

UIFLOW2:

get_network_parameters.png

MQTTPoEUnit.get_mac_address()

获取模块当前的 MAC 地址,MAC 地址格式为:XX-XX-XX-XX-XX-XX。

  • 返回:string:”XX-XX-XX-XX-XX-XX”

UIFLOW2:

get_mac_address.png

MQTTPoEUnit.get_static_ip(param)

获取模块当前实际的 IP 地址、子网掩码和网关。

参数为:
  • param:IP 地址 = 0,子网掩码 = 1,网关 = 2,DNS 服务器 = 3。

UIFLOW2:

get_static_ip.png

MQTTPoEUnit.get_dhcp_status()

获取查询 DHCP 启用/禁用状态

  • 返回:int:1:启用,0:禁用

UIFLOW2:

get_dhcp_status.png

MQTTPoEUnit.set_dhcp_state(state)

设置启用/禁用 DHCP

参数为:
  • state:禁用 = 0,使能 = 1。

UIFLOW2:

set_dhcp_state.png

MQTTPoEUnit.set_static_ip(ip, subnet, gateway)

设置 MQTT 模块的静态 IP 地址。

备注

当启用 DHCP 功能时,将不会启用静态 IP 设置。

参数为:
  • ip: “xxx.xxx.xxx.xxx”

  • subnet: “xxx.xxx.xxx.xxx”

  • gateway: “xxx.xxx.xxx.xxx”

UIFLOW2:

set_static_ip.png