赞
踩
通过搭建局域网下的EMQ服务器,在window下实现消息的订阅发布
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的。MQTT 服务器是发布-订阅架构的核心。它可以非常简单地在Raspberry Pi或NAS等单板计算机上实现,当然也可以在大型机或 Internet 服务器上实现。服务器分发消息,因此必须是发布者,但绝不是订阅者!客户端可以发布消息(发送方)、订阅消息(接收方)或两者兼而有之。
(一)打开EMQX安装包(我的是的emqx-5.0.17-windows-amd64)的bin
(二)在bin文件夹中空白处右击,选择在终端中打开
(三)在终端中输入.\emqx.cmd console
(四)打开 EMQX Dashboard 并登录(默认的登录名是 admin 和密码是 public。)
(五)进入后点击connect
(一)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)
(一)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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。