前言
這一篇文章介紹的是使用運行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,觀察終端是否啓動成功,最後就可以看到控制檯有客戶端連接上了。
結語
自此,使用基於ESP8266的MicroPython連接MQTT服務器的步驟就到這裏。