【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服務器地址

因爲博主使用的本地的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服務器的步驟就到這裏。

相關文章

  1. 基於ESP8266的MicroPython入門筆記
  2. 使用uPyLoader調試運行MicroPython的ESP8266
  3. 使用ESP8266原生SDK進行MQTT連接(C語言)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章