云服务器搭建MQTT服务器的方法步骤

 更新时间:2023年08月18日 11:33:03   作者:粒子白  
既然有了云服务器,可以搭建一个MQTT服务器,本文主要介绍了云服务器搭建MQTT服务器的方法步骤,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

既然有了云服务器,可以搭建一个MQTT服务器,这样可以使用ESP32的micropython编程,实现物联网平台的构建。

一、通过宝塔面板登录服务器,拉取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

其他端口如下:如果发现某个端口访问不了,可以尝试去宝塔面板的安全位置去放行一下。

1883:MQTT 协议端口
8883:MQTT/SSL 端口
8083:MQTT/WebSocket 端口
8080:HTTP API 端口
18083:Dashboard 管理控制台端口

四、编写消息发布端和订阅端,python实现

我是用pycharm编写代码,编写之前,安装一下paho-mqtt这个包。也可以用 pip3 install paho-mqtt 安装。

1.发布端publish

代码如下(示例):

from paho.mqtt import client as mqtt_client
import random
import time
broker = '0.0.0.0'  #你的云服务器公网IP
port = 1883  #MQTT 协议端口
topic = "lmq"
#调用 Python random.randint 函数随机生成 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 协议端口
topic = "lmq"
# 调用 Python random.randint 函数随机生成 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()

如果没错误,应该就是下图这样子。

总结

用最快的方法实现就好。后续可以用qt做一个软件界面,即可控制ESP32等能接入网络的硬件设备。

到此这篇关于云服务器搭建MQTT服务器的方法步骤的文章就介绍到这了,更多相关云服务器搭建MQTT服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • CentOS系统通过日志反查是否被入侵

    CentOS系统通过日志反查是否被入侵

    最近有个朋友的服务器发现有入侵的痕迹后来处理解决但是由于对方把日志都清理了无疑给排查工作增加了许多难度。其实日志的作用是非常大的。学会使用通过日志来排查解决我们工作中遇到的一些问题是很有必要的。下面就一一道来。
    2016-08-08
  • HTTPS混合内容解析附解决方法

    HTTPS混合内容解析附解决方法

    我们可能会有这样的经验,当我们通过HTTPS访问一个网站的时候,突然有提示:“本页面包含有不安全的内容”。这个时候会询问是否显示“不安全的内容”,这个时候,就是遇到了有混合内容的页面了
    2017-09-09
  • rsync详解之exclude排除文件

    rsync详解之exclude排除文件

    这篇文章详细介绍了rsync之exclude排除文件的实现方法,需要的朋友可以参考下

    2013-07-07
  • 服务器共享文件夹设置软件、局域网共享文件夹加密工具、文件共享服务器软件的选择

    服务器共享文件夹设置软件、局域网共享文件夹加密工具、文件共享服务器软件的选择

    这篇文章主要介绍了服务器共享文件夹设置软件、局域网共享文件夹加密工具、文件共享服务器软件的选择,需要的朋友可以参考下
    2015-12-12
  • ubuntu20.04部署ntp服务器ntpd(ntpdate )的详细过程

    ubuntu20.04部署ntp服务器ntpd(ntpdate )的详细过程

    这篇文章主要介绍了ubuntu20.04部署ntp服务器ntpd(ntpdate )的详细过程,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • aarch64服务器部署mysql的流程分析

    aarch64服务器部署mysql的流程分析

    这篇文章主要介绍了aarch64服务器部署mysql,通过编写docker-compose.yaml及编写数据库配置文件,对aarch64服务器部署mysql的流程感兴趣的朋友一起看看吧
    2022-09-09
  • 轻量级域名解析服务器之dnsmasq的介绍与部署

    轻量级域名解析服务器之dnsmasq的介绍与部署

    dnsmasq这个轻量级的dns服务器,具有开源,搭建简单,维护成本低的优点,符合生产环境需求,下面这篇文章主要给大家介绍了关于轻量级域名解析服务器之dnsmasq的介绍与部署的相关资料,需要的朋友可以参考下
    2022-07-07
  • CentOs7搭建基于pptp的VPN服务器

    CentOs7搭建基于pptp的VPN服务器

    最近想远程连接一下家里的台式机电脑,由于都是局域网,又没有公网ip,所以就没法远程,上网查了一下,发现可以在云服务器上搭建一个VPN,这样两台电脑就在同一个局域网内,就可以完美解决这个问题,现在把搭建方法和遇到的问题做个总结,感兴趣的朋友一起看看吧
    2023-11-11
  • 超越Nginx的Web服务器caddy优雅用法

    超越Nginx的Web服务器caddy优雅用法

    这篇文章主要为大家介绍了超越Nginx的Web服务器caddy优雅用法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 用nginx+FastDFS一步步搭建文件管理系统

    用nginx+FastDFS一步步搭建文件管理系统

    FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务
    2020-10-10

最新评论