美文网首页
MicroPython利用MQTT实现远程控制2

MicroPython利用MQTT实现远程控制2

作者: 鼾声鼾语 | 来源:发表于2020-03-20 18:46 被阅读0次

先介绍下这个APP(ioT MQTT Panel)怎么用:

安装我就不怎么说了,安装完打开软件是这个样子的:

image

提示没有连接,点那个红色按钮创建一个连接:

image

前两项都是随便填的,值得注意的的是那个Broker Web/IP Address,这个最好自己架个服务器,而不是用我填的这个测试用服务器,当然这里做个例子,先用这个凑数了,填完后点那个CREATE:

image

可以看到名为”测试连接“的项目建成了。然后点近去:

image image image image image

这理解释下:Topic可以理解为一个通道,比如开关,按下后会往ledctl这个通道里发ledon这个信息,再按一下会往ledctl通道里发ledoff这个信息,最终界面如下:

image

下面,我们在MicroPython里边编写一点程序,用来接收这个界面发出的消息:

首先,下载micropython的MQTT库:

https://github.com/micropython/micropython-lib

下找到:umqtt.simple

这个目录下有几个例子,以及一个umqtt的目录(里边的simple.py就是库了)

image

吧simple.py库拷进ESP8266:

然后新建一个ledctl.py内容如下:
import time
from simple import MQTTClient

def sub_cb(topic, msg): #回调函数,收到服务器消息后会调用这个函数
print(topic, msg)

c = MQTTClient("umqtt_client", "test.mosquitto.org") #建立一个MQTT客户端
c.set_callback(sub_cb) #设置回调函数
c.connect() #建立连接
c.subscribe(b"ledctl") #监控ledctl这个通道,接收控制命令
while True:
c.check_msg()
time.sleep(1)


image

然后点手机上的开关,在终端会收到如下信息:

image

好了,我们的ESP8266收到了手机发来的消息!

然后改写代码控制LED(我的板子上的LED为GPIO2)
import time
from simple import MQTTClient
from machine import Pin

led=Pin(2,Pin.OUT)

def sub_cb(topic, msg):
print(topic, msg)
if topic==b'ledctl':
if msg==b'ledon':
led.off() #因为实际IO为0ff时灯是亮的
if msg==b'ledoff':
led.on()

c = MQTTClient("umqtt_client", "test.mosquitto.org")
c.set_callback(sub_cb)
c.connect()
c.subscribe(b"ledctl")
while True:
c.check_msg()
time.sleep(1)

运行代码,发现手机可以正常控制灯的亮灭了
import time
from simple import MQTTClient
from machine import Pin

led=Pin(2,Pin.OUT)

def sub_cb(topic, msg):
print(topic, msg)
if topic==b'ledctl':
if msg==b'ledon':
led.off()
if msg==b'ledoff':
led.on()

c = MQTTClient("umqtt_client", "test.mosquitto.org")
c.set_callback(sub_cb)
c.connect()
c.subscribe(b"ledctl")
while True:
c.check_msg()
if led.value()==1:
c.publish('ledstatus','ledoff')
if led.value()==0:
c.publish('ledstatus','ledon')
time.sleep(1)

再写代码让第二个LED控件显示LED的状态: image image

原文:https://www.cnblogs.com/yafengabc/p/8685028.html

相关文章

  • MicroPython利用MQTT实现远程控制2

    先介绍下这个APP(ioT MQTT Panel)怎么用: 安装我就不怎么说了,安装完打开软件是这个样子的: 提示...

  • MicroPython利用MQTT实现远程控制

    其实你被标题党骗了,0编程那是不可能的( ̄▽ ̄)" 不过也算近似零编程了哈哈 MQTT我就不详细介绍了,毕竟看到这...

  • MicroPython Remote Shell

    rshell与MicroPython rshell是专门针对MicroPython的远程shell,基于串口和网络...

  • 利用PHP SSH2扩展实现远程控制Openwrt

    摘要:这篇文章通过PHP SSH2扩展实现远程控制Openwrt,包括(1)安装PHP SSH2扩展(2)实现远程...

  • mqtt qos2 设计方案

    MQTT Qos2设计方案 mqtt相关协议: qos2整体实现方案: 主要实现步骤如下:mqtt Qos2增加r...

  • 如何使用 MQTT 报文实现发布订阅功能

    MQTT 协议通过交换预定义的MQTT控制报文来通信。下面以 MQTTX 为例,展示如何通过 MQTT 报文实现发...

  • iOS获取耳机事件

    1、获取耳机插拔事件Key 2、耳机控制键 首先允许远程控制 实现

  • MQTT简介

    1、MQTT主要特性 MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。具有以下特性:...

  • MQTT

    MQTT 协议主要特点 MQTT 协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯...

  • 利用IPC漏洞实现远程控制

    0x00 漏洞说明 IPC$ (Internet Process Connection) 是共享“命名管道”的资源...

网友评论

      本文标题:MicroPython利用MQTT实现远程控制2

      本文链接:https://www.haomeiwen.com/subject/fcksyhtx.html