云服務器搭建MQTT服務器的方法步驟
前言
既然有了云服務器,可以搭建一個MQTT服務器,這樣可以使用ESP32的micropython編程,實現(xiàn)物聯(lián)網平臺的構建。
一、通過寶塔面板登錄服務器,拉取emqx/emqx鏡像

二、使用寶塔遠程工具后臺運行鏡像

docker run -dit --name emqx -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 emqx/emqx:latest docker exec -it emqx /bin/sh
三、訪問emqt的web管理頁面

可以把語音換成中文的。
http://你的云服務器公網IP:18083 賬號: admin 密碼: public
其他端口如下:如果發(fā)現(xiàn)某個端口訪問不了,可以嘗試去寶塔面板的安全位置去放行一下。

1883:MQTT 協(xié)議端口 8883:MQTT/SSL 端口 8083:MQTT/WebSocket 端口 8080:HTTP API 端口 18083:Dashboard 管理控制臺端口
四、編寫消息發(fā)布端和訂閱端,python實現(xiàn)
我是用pycharm編寫代碼,編寫之前,安裝一下paho-mqtt這個包。也可以用 pip3 install paho-mqtt 安裝。

1.發(fā)布端publish
代碼如下(示例):
from paho.mqtt import client as mqtt_client
import random
import time
broker = '0.0.0.0' #你的云服務器公網IP
port = 1883 #MQTT 協(xié)議端口
topic = "lmq"
#調用 Python random.randint 函數(shù)隨機生成 MQTT 客戶端 id
client_id = f'python-mqtt-{random.randint(0, 1000)}'
def connect_mqtt():
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
client = mqtt_client.Client(client_id)
client.on_connect = on_connect
client.connect(broker, port)
return client
def publish(client):
msg_count = 0
while True:
time.sleep(1)
msg = f"messages: {msg_count}"
result = client.publish(topic, msg)
# result: [0, 1]
status = result[0]
if status == 0:
print(f"Send `{msg}` to topic `{topic}`")
else:
print(f"Failed to send message to topic {topic}")
msg_count += 1
def run():
client = connect_mqtt()
client.loop_start()
publish(client)
if __name__ == '__main__':
run()2.訂閱端subscribe
代碼如下(示例):
from paho.mqtt import client as mqtt_client
import random
broker = '0.0.0.0' #你的云服務器公網IP
port = 1883 #MQTT 協(xié)議端口
topic = "lmq"
# 調用 Python random.randint 函數(shù)隨機生成 MQTT 客戶端 id
client_id = f'python-mqtt-{random.randint(0, 1000)}'
def connect_mqtt() -> mqtt_client:
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
client = mqtt_client.Client(client_id)
client.on_connect = on_connect
client.connect(broker, port)
return client
def subscribe(client: mqtt_client):
def on_message(client, userdata, msg):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
client.subscribe(topic)
client.on_message = on_message
def run():
client = connect_mqtt()
subscribe(client)
client.loop_forever()
if __name__ == '__main__':
run()如果沒錯誤,應該就是下圖這樣子。


總結
用最快的方法實現(xiàn)就好。后續(xù)可以用qt做一個軟件界面,即可控制ESP32等能接入網絡的硬件設備。
到此這篇關于云服務器搭建MQTT服務器的方法步驟的文章就介紹到這了,更多相關云服務器搭建MQTT服務器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決JMail無法安裝的方法(帳戶名與安全標識間無任何映射完成)
今日在遠程服務器上安裝Jmail,結果提示錯誤“帳戶名與安全標識間無任何映射完成”2010-04-04
zlmediakit實現(xiàn) rtsp流服務器的方法
這篇文章主要介紹了zlmediakit實現(xiàn) rtsp流服務器,本次實現(xiàn)是將內存中的H264數(shù)據經過zlmediakit實現(xiàn)為rtsp流,我用的是CAPI的方式,將zlmediakit作為一個sdk嵌入到自己的程序中而不是作為一個獨立的進進程服務,需要的朋友可以參考下2024-04-04
Hadoop中namenode和secondarynamenode工作機制講解
今天小編就為大家分享一篇關于Hadoop中namenode和secondarynamenode工作機制講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01

