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

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

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

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

 

(五)进入后点击connect

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(发布)

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

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(订阅)

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

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值