EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)


前言

        通过搭建局域网下的EMQ服务器,在window下实现消息的订阅发布


一、Mqtt是什么?

        MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。

        MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

       MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT​​​​​ server(或称为 MQTT Broker)分发的。MQTT 服务器是发布-订阅架构的核心。它可以非常简单地在Raspberry Pi或NAS等单板计算机上实现,当然也可以在大型机或 Internet 服务器上实现。服务器分发消息,因此必须是发布者,但绝不是订阅者!客户端可以发布消息(发送方)订阅消息(接收方)或两者兼而有之。

二、使用步骤

1.搭建EMQ服务器

(一)打开EMQX安装包(我的是的emqx-5.0.17-windows-amd64)的bin

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第1张图片

 (二)在bin文件夹中空白处右击,选择在终端中打开

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第2张图片

(三)在终端中输入.\emqx.cmd console

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第3张图片

四)打开 EMQX Dashboard 并登录默认的登录名是 admin 和密码是 public。

 EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第4张图片

(五)进入后点击connect

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第5张图片

2.EMQ作为发送端(发布),pycharm作为接收端(订阅)

(一)python代码(订阅)

import json
import paho.mqtt.client as mqtt
import time

# 一旦连接成功,回调此方法
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("连接成功")
        print("Connected with result code " + str(rc))
# 一旦订阅到消息,回调此方法
def on_message(client, userdata, msg):
    print('收到')
    print(msg)
    print(msg.topic + " " + str(msg.payload))
    print(msg.payload)
    return msg.payload
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect(host="127.0.0.1", port=1883, keepalive=60)  # 订阅频道
time.sleep(1)

#订阅主题
test = client.subscribe("fengshan", 0)

client.loop_forever()

(二)EMQ(发布)

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第6张图片

(三)结果(左python,右EMQ看Publish)

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第7张图片

3.EMQ作为接收端(订阅),pycharm作为发送端(发布)

(一)python代码(订阅)

import json
import paho.mqtt.client as mqtt
import time

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))


def on_subscribe(client, userdata, mid, granted_qos):
    print("消息发送成功")


client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.connect(host="127.0.0.1", port=1883, keepalive=60)  # 订阅频道
time.sleep(1)

#封装数据
data = {
    "timestamp": "20211101T12351",
    "status": "OK"
}

# 发布MQTT信息
data_pub = json.dumps(data)

#此处发布的主题如果被订阅,订阅者就会收到消息
client.publish(topic="light", payload=data_pub, qos=0)
print("消息发送成功")
client.loop_forever()

(二)EMQ(订阅)

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第8张图片

(三)结果(左python,右EMQ看Received)

EMQ服务器搭建以及Python环境实现Mqtt通讯(基础篇)_第9张图片

你可能感兴趣的:(python,服务器)