教室室内设计平面图网站建设和优化那本书好
2026/4/6 5:57:54 网站建设 项目流程
教室室内设计平面图,网站建设和优化那本书好,wordpress修改导航字体,nas做网站需要备案吗使用 Docker 搭建 EMQX#xff0c;并通过 MicroPython 实现 MQTT 控制 ESP32 LED 在物联网项目中#xff0c;MQTT 是最常用的消息通信协议之一。本文将通过一个完整示例#xff0c;演示如何#xff1a; 使用 Docker 快速部署 EMQX解决端口冲突问题使用 MicroPython 作为 MQ…使用 Docker 搭建 EMQX并通过 MicroPython 实现 MQTT 控制 ESP32 LED在物联网项目中MQTT是最常用的消息通信协议之一。本文将通过一个完整示例演示如何使用Docker 快速部署 EMQX解决端口冲突问题使用MicroPython作为 MQTT 客户端通过 MQTT 消息远程控制 ESP32 LED一、使用 Docker 快速启动 EMQX1. 基础启动命令最基础的 EMQX 容器启动方式如下dockerrun-itd\--nameemqx\-p1883:1883\-p8083:8083\-p8084:8084\-p8883:8883\-p18083:18083\emqx/emqx容器启动成功后会返回类似 ID185326ea778710a12c77ad3b3e24800ce7591c30f4feb0196742bfd70f655d14这样宿主机1884容器内部1883MQTT 默认端口二、访问 EMQX 控制台浏览器访问HTTPShttps://服务器IP:18083默认账号密码用户名admin 密码public控制台界面如下三、MicroPython MQTT 客户端实现ESP32 使用MicroPythonMQTT 客户端代码基于simple.py实现。1. MQTT 客户端库simple.py文件名simple.pyimportusocketassocketimportustructasstructfromubinasciiimporthexlifyclassMQTTException(Exception):passclassMQTTClient:def__init__(self,client_id,server,port0,userNone,passwordNone,keepalive0,sslNone,):ifport0:port8883ifsslelse1883self.client_idclient_id self.sockNoneself.serverserver self.portport self.sslssl self.pid0self.cbNoneself.useruser self.pswdpassword self.keepalivekeepalive self.lw_topicNoneself.lw_msgNoneself.lw_qos0self.lw_retainFalsedef_send_str(self,s):self.sock.write(struct.pack(!H,len(s)))self.sock.write(s)def_recv_len(self):n0sh0while1:bself.sock.read(1)[0]n|(b0x7F)shifnotb0x80:returnn sh7defset_callback(self,f):self.cbfdefset_last_will(self,topic,msg,retainFalse,qos0):self.lw_topictopic self.lw_msgmsg self.lw_qosqos self.lw_retainretaindefconnect(self,clean_sessionTrue):self.socksocket.socket()addrsocket.getaddrinfo(self.server,self.port)[0][-1]self.sock.connect(addr)premsgbytearray(b\x10\0\0\0\0\0)msgbytearray(b\x04MQTT\x04\x02\0\0)sz102len(self.client_id)msg[6]clean_session1ifself.user:sz2len(self.user)2len(self.pswd)msg[6]|0xC0i1whilesz0x7F:premsg[i](sz0x7F)|0x80sz7i1premsg[i]sz self.sock.write(premsg,i2)self.sock.write(msg)self._send_str(self.client_id)ifself.user:self._send_str(self.user)self._send_str(self.pswd)respself.sock.read(4)ifresp[3]!0:raiseMQTTException(resp[3])defsubscribe(self,topic,qos0):self.cbisnotNonepktbytearray(b\x82\0\0\0)self.pid1struct.pack_into(!BH,pkt,1,22len(topic)1,self.pid)self.sock.write(pkt)self._send_str(topic)self.sock.write(qos.to_bytes(1,little))defcheck_msg(self):self.sock.setblocking(False)try:resself.sock.read(1)except:returnifresb\x30:self.sock.read(1)tlenself.sock.read(2)tlen(tlen[0]8)|tlen[1]topicself.sock.read(tlen)msgself.sock.read()self.cb(topic,msg)四、ESP32 主程序控制 LED文件名main.pyfromsimpleimportMQTTClientfrommachineimportPinimportnetwork ledPin(2,Pin.OUT)SSIDwifi名称PASSWORDwifi密码wlannetwork.WLAN(network.STA_IF)wlan.active(True)ifnotwlan.isconnected():wlan.connect(SSID,PASSWORD)whilenotwlan.isconnected():passprint(Network config:,wlan.ifconfig())SERVER192.168.31.219PORT1884CLIENT_IDmy_micropython_clientdefsub(topic,msg):print(topic,msg)iftopicbled002:ifmsgbon:led.value(0)elifmsgboff:led.value(1)clientMQTTClient(CLIENT_ID,SERVER,PORT,test,123456)client.set_callback(sub)client.connect()client.subscribe(bled002)whileTrue:client.check_msg()五、测试效果通过 EMQX 控制台或其他 MQTT 客户端Topicled002Payloadon→ LED 亮off→ LED 灭设备成功订阅并响应

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询