文章目录

  • 前言
  • 一、通过宝塔面板登录服务器,拉取emqx/emqx镜像
  • 二、使用宝塔远程工具后台运行镜像
  • 三、访问emqt的web管理页面
  • 四、编写消息发布端和订阅端,python实现
    • 1.发布端publish
    • 2.订阅端subscribe
  • 总结

前言

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

一、通过宝塔面板登录服务器,拉取emqx/emqx镜像

二、使用宝塔远程工具后台运行镜像

docker run -dit --name emqx -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 emqx/emqx:latestdocker 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 timebroker = '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_connectclient.connect(broker, port)return clientdef publish(client):msg_count = 0while 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 += 1def run():client = connect_mqtt()client.loop_start()publish(client)if __name__ == '__main__':run()

2.订阅端subscribe

代码如下(示例):

from paho.mqtt import client as mqtt_client
import randombroker = '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_connectclient.connect(broker, port)return clientdef 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_messagedef run():client = connect_mqtt()subscribe(client)client.loop_forever()if __name__ == '__main__':run()

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


总结

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

云服务器搭建MQTT服务器相关推荐

  1. 阿里云服务器ECS-Apollo搭建MQTT服务器(Windows环境)

    阿里云服务器(Windows环境)Apollo搭建MQTT服务器 1.购买阿里云服务器ECS 注册阿里云账号– 学生通过认证可免费领取2个月,由于网上教程很多,这里不做阐述了,我是领取的windows ...

  2. Esp8266进阶之路12 图文并茂学习阿里云主机搭建8266MQTT服务器,实现移动网络远程控制一盏灯!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

  3. Ubuntu16.04LTS环境下搭建MQTT服务器以及QT实现MQTT客户端

    MQTT服务器搭建 使用EMQX搭建MQTT服务器,EMQX 4.2.14 for Ubuntu 16.04下载 下载zip包,选择安装方式为zip,cpu架构选择x86_64 按照网页的指示进行下载 ...

  4. MQTT在Windows下搭建MQTT服务器

    MQTT 在Windows下搭建MQTT服务器 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012163234/article/details/ ...

  5. linux如何搭建mqtt服务器,【MQTT】在Ubuntu下搭建MQTT服务器

    前言 博主之前写了一篇<在Windows下搭建MQTT服务器>,这次要尝试在Ubuntu下搭建MQTT服务器.实际上,下载好源码包后,后面的都和那篇文章差不多了. 开发环境 虚拟机 Ubu ...

  6. 转 【MQTT】在Windows下搭建MQTT服务器

    MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...

  7. 快速搭建MQTT服务器(MQTTnet和Apache Apollo)

    前言 MQTT协议是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分,http://mqtt.org/. MQTT is a machine-to-machine (M2M)/" ...

  8. 如何在服务器搭建oa系统,如何在云主机搭建oa服务器

    如何在云主机搭建oa服务器 内容精选 换一换 为了更加安全高效的使用云监控服务提供的主机监控功能,我们提供了最新方式的Agent授权方法.在安装主机监控Agent前,仅需要一键式单击该区域的授权按钮或 ...

  9. 【MQTT】在Windows下搭建MQTT服务器

    MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...

  10. UbuntuServer搭建MQTT服务器

    一.MQTT协议简介 MQTT 是一个基于发布/订阅模式的消息传输协议.它具有轻量级.开放.简单,易于实现,通信带宽要求低等特点.这些特点使得它对机器与机器的通信(M2M)以及物联网应用(IoT)来说 ...

最新文章

  1. F5 任命 Ben Gibson 担任首席营销官
  2. sybase isql 重启_学习这篇文章,搭建Sybase数据库不再是难题!
  3. 20155238 实验四 Android程序设计
  4. .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤
  5. ruby array_Ruby中带有示例的Array.sample()方法
  6. 菜单固定随滚动条滑动
  7. NYOJ-491 幸运三角形
  8. php项目如何导jdbc包,JDBC-idea导入mysql连接java的jar包(mac)的方法
  9. LNMP编译安装基于centos7.2
  10. Linux笔记(shell特殊符号,sort排序,wc统计,uniq去重,tee,tr,split)
  11. bzoj2437 [Noi2011]兔兔与蛋蛋
  12. 如何用pdb命令调试python代码
  13. 能韬光养晦,是因为面前有苏联顶着,苏联没了就不可能了
  14. 小甲鱼Python课后习题028
  15. Snipaste2.7.3下载安装与使用(超实用的截图利器)
  16. powerdesign使用手册
  17. html5教程_最好HTML和HTML5教程
  18. 用计算机将复数转换成角度,卡西欧FX-991ES计算器能计算电路里的复数加减乘除然后换算成角度吗?...
  19. 网站服务器带宽多少合适,服务器选择时带宽选多少合适?
  20. ehcache:Null key returned for cache operation问题解决方法

热门文章

  1. 模块参考资料-硬件资料-Air720UG/UH-功耗指标
  2. EC20 和 Air724 4G模组连接OneNet平台笔记
  3. 购买域名后如何使用?
  4. python怎么找出列表中的重复数据_找出python列表中重复项的方法
  5. matlab如何按行查找重复值?
  6. 高等代数 多项式环(第7章)5* 结式与域
  7. Redis实现消息队列(订阅/发布模式 、LPUSH+BRPOP)
  8. r语言导入spss数据_R软件导入数据_r语言怎么导入数据_R软件导入数据
  9. 常见概率抽样方法及其适用场景总结(简单随机抽样、分层抽样、整群抽样、系统抽样)
  10. android 电源管理驱动