云服務(wù)器搭建MQTT服務(wù)器的方法步驟
前言
既然有了云服務(wù)器,可以搭建一個(gè)MQTT服務(wù)器,這樣可以使用ESP32的micropython編程,實(shí)現(xiàn)物聯(lián)網(wǎng)平臺(tái)的構(gòu)建。
一、通過(guò)寶塔面板登錄服務(wù)器,拉取emqx/emqx鏡像
二、使用寶塔遠(yuǎn)程工具后臺(tái)運(yùn)行鏡像
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
三、訪問(wèn)emqt的web管理頁(yè)面
可以把語(yǔ)音換成中文的。
http://你的云服務(wù)器公網(wǎng)IP:18083 賬號(hào): admin 密碼: public
其他端口如下:如果發(fā)現(xiàn)某個(gè)端口訪問(wèn)不了,可以嘗試去寶塔面板的安全位置去放行一下。
1883:MQTT 協(xié)議端口 8883:MQTT/SSL 端口 8083:MQTT/WebSocket 端口 8080:HTTP API 端口 18083:Dashboard 管理控制臺(tái)端口
四、編寫消息發(fā)布端和訂閱端,python實(shí)現(xiàn)
我是用pycharm編寫代碼,編寫之前,安裝一下paho-mqtt這個(gè)包。也可以用 pip3 install paho-mqtt
安裝。
1.發(fā)布端publish
代碼如下(示例):
from paho.mqtt import client as mqtt_client import random import time broker = '0.0.0.0' #你的云服務(wù)器公網(wǎng)IP port = 1883 #MQTT 協(xié)議端口 topic = "lmq" #調(diào)用 Python random.randint 函數(shù)隨機(jī)生成 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' #你的云服務(wù)器公網(wǎng)IP port = 1883 #MQTT 協(xié)議端口 topic = "lmq" # 調(diào)用 Python random.randint 函數(shù)隨機(jī)生成 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()
如果沒(méi)錯(cuò)誤,應(yīng)該就是下圖這樣子。
總結(jié)
用最快的方法實(shí)現(xiàn)就好。后續(xù)可以用qt做一個(gè)軟件界面,即可控制ESP32等能接入網(wǎng)絡(luò)的硬件設(shè)備。
到此這篇關(guān)于云服務(wù)器搭建MQTT服務(wù)器的方法步驟的文章就介紹到這了,更多相關(guān)云服務(wù)器搭建MQTT服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jenkins 配置用戶角色權(quán)限的實(shí)現(xiàn)方法
這篇文章主要介紹了jenkins 配置用戶角色權(quán)限的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05解決JMail無(wú)法安裝的方法(帳戶名與安全標(biāo)識(shí)間無(wú)任何映射完成)
今日在遠(yuǎn)程服務(wù)器上安裝Jmail,結(jié)果提示錯(cuò)誤“帳戶名與安全標(biāo)識(shí)間無(wú)任何映射完成”2010-04-04zlmediakit實(shí)現(xiàn) rtsp流服務(wù)器的方法
這篇文章主要介紹了zlmediakit實(shí)現(xiàn) rtsp流服務(wù)器,本次實(shí)現(xiàn)是將內(nèi)存中的H264數(shù)據(jù)經(jīng)過(guò)zlmediakit實(shí)現(xiàn)為rtsp流,我用的是CAPI的方式,將zlmediakit作為一個(gè)sdk嵌入到自己的程序中而不是作為一個(gè)獨(dú)立的進(jìn)進(jìn)程服務(wù),需要的朋友可以參考下2024-04-04Hadoop中namenode和secondarynamenode工作機(jī)制講解
今天小編就為大家分享一篇關(guān)于Hadoop中namenode和secondarynamenode工作機(jī)制講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01新安裝的XAMPP訪問(wèn)phpmyadmin出錯(cuò)的解決方法
這篇文章主要介紹了新安裝的XAMPP訪問(wèn)phpmyadmin出錯(cuò)的解決方法,錯(cuò)誤提示為服務(wù)器沒(méi)有響應(yīng)(或本地服務(wù)器的套接字沒(méi)有正確配置),需要的朋友可以參考下2014-11-11