当前位置:   article > 正文

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

emq服务器搭建


前言

        通过搭建局域网下的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代码(订阅)

  1. import json
  2. import paho.mqtt.client as mqtt
  3. import time
  4. # 一旦连接成功,回调此方法
  5. def on_connect(client, userdata, flags, rc):
  6. if rc == 0:
  7. print("连接成功")
  8. print("Connected with result code " + str(rc))
  9. # 一旦订阅到消息,回调此方法
  10. def on_message(client, userdata, msg):
  11. print('收到')
  12. print(msg)
  13. print(msg.topic + " " + str(msg.payload))
  14. print(msg.payload)
  15. return msg.payload
  16. client = mqtt.Client(protocol=3)
  17. client.username_pw_set("admin", "password")
  18. client.on_connect = on_connect
  19. client.on_message = on_message
  20. client.connect(host="127.0.0.1", port=1883, keepalive=60) # 订阅频道
  21. time.sleep(1)
  22. #订阅主题
  23. test = client.subscribe("fengshan", 0)
  24. client.loop_forever()

(二)EMQ(发布)

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

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

(一)python代码(订阅)

  1. import json
  2. import paho.mqtt.client as mqtt
  3. import time
  4. def on_connect(client, userdata, flags, rc):
  5. print("Connected with result code " + str(rc))
  6. def on_subscribe(client, userdata, mid, granted_qos):
  7. print("消息发送成功")
  8. client = mqtt.Client(protocol=3)
  9. client.username_pw_set("admin", "password")
  10. client.on_connect = on_connect
  11. client.on_subscribe = on_subscribe
  12. client.connect(host="127.0.0.1", port=1883, keepalive=60) # 订阅频道
  13. time.sleep(1)
  14. #封装数据
  15. data = {
  16. "timestamp": "20211101T12351",
  17. "status": "OK"
  18. }
  19. # 发布MQTT信息
  20. data_pub = json.dumps(data)
  21. #此处发布的主题如果被订阅,订阅者就会收到消息
  22. client.publish(topic="light", payload=data_pub, qos=0)
  23. print("消息发送成功")
  24. client.loop_forever()

(二)EMQ(订阅)

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号