• 【ESP8266】基于ESP8266的MicroPython连接MQTT服务器


    前言

    这一篇文章介绍的是使用运行MicroPython的ESP8266去连接MQTT服务器。也算是填了之前的坑。

    开发环境

    • Windows 10 x64
    • NodeMCU
    • uPyLoader
    • MicroPython 1.8.7

    MicroPython的MQTT

    MicroPython是一款可以运行于微控制器的Python语言,除了继承了Python的语言特性以外,当然也继承了Python强大的功能库。不过在MicroPython上使用功能库需要到Github手动下载。当然,为了方便读者下载,我上传该umqtt库到了CSDN资源,点击这里查看。

    MicroPython是支持MQTT客户端的,在上面给出的连接中,找到umqtt.simple文件夹,里面就有使用MQTT接口的例程。在ESP8266的MicroPython官方API文档中,并没有给出这个接口的介绍,所以需要到搜索下相关资料。

    使用MQTT

    本小节将使用uPyLoader下载文件,如果不会uPyLoader也没关系,并不影响理解,对uPyLoader感兴趣的话可以参考后面的相关文章。

    进入umqtt.simple目录,把umqtt文件夹中的simple.py文件下载到ESP8266。再备份一下example_sub.py,然后修改里面的代码如下。

    import time
    from simple import MQTTClient
    
    # ===添加下面参数===
    USER = "admin"
    PWD = "password"
    
    # ……省略……
    
    # 修改main函数,添加port、USER、PWD参数
    def main(server="localhost", port=61613):
        c = MQTTClient("umqtt_client", server, port, USER, PWD)
        print(c.addr) # 打印信息用,可加可不加
        # ……省略……
    
    # ……省略……
    
    if __name__ == "__main__":
            main("192.168.10.70") # 修改为相应的MQTT服务器地址
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    因为博主使用的本地的MQTT服务器(Apache-Apollo),所以端口是61613。MicroPython的MQTT库中默认的是1883,可以按需修改。

    如果也想自己搭建本地MQTT服务器做测试,可以参考这篇文章《在Windows下搭建MQTT服务器》。

    打开uPyLoader的终端(菜单栏->「View」->「Terminal」),然后运行example_sub.py,观察终端是否启动成功,最后就可以看到控制台有客户端连接上了。

    uPyLoader运行example_sub.py

    MQTT控制台和uPyLoader终端

    结语

    自此,使用基于ESP8266的MicroPython连接MQTT服务器的步骤就到这里。

  • 相关阅读:
    什么是子网掩码?(转)
    测试LM414-IOT网关MQTT功能
    连接s7-200时,提示未找到指定的访问点
    github中文件夹后面跟@+数字什么意思?为什么git clone下来里面是空的?
    Java知识32 数据结构 枚举 向量【多测师】
    java知识31 void 、实例化对象后面带参数、 实例变量(重点)【多测师】
    Java知识30 package【多测师】
    Java知识29 接口【多测师】
    java知识28 Java封装【多测师】
    Java知识27 抽象类【多测师】
  • 原文地址:https://www.cnblogs.com/TOLLA/p/9646318.html
Copyright © 2020-2023  润新知