mqtt 客戶端 基於Python
這幾天一直在搞安全通訊,微信小程式,反向代理等等,為了能讓自己對整個系統做到把控,主要是需要了解每一個細節的地方,所以今天花了3個小時的時間學習了Python,因為我要用它來做Http和WebSocket ,其實還有就是群裡的 "卡狼"一直在說用Python開發8266更方便快捷.
先說學了之後的感受,確實簡單,易上手.現在感覺應該比lua開發更快捷,我並沒有用它來開發8266,只是感覺語言上很容易接受(對我而言,感覺這個語言吧,和lua有相近的地方(變數操作封裝的方法很好),又有點高階語言的味道)
說一下安裝軟體
軟體和原始碼連結:
https://pan.baidu.com/s/1SauB96RMTZUWv3yxUIgynA
其實和學習java的時候安裝虛擬機器就可以用記事本寫java語言一樣,不過記事本多麻煩,敲指令多費時,有些人就用Eclipse這個IDE軟體,其實上面的
PyCharm就是一款IDE,不過現在好像很多人在推崇Intellij IDEA,我倒是沒用過這款IDE
Python安裝教程:
https://baijiahao.baidu.com/s?id=1608325862360990066&wfr=spider&for=pc
PyCharm安裝教程:
https://blog.csdn.net/elegentbeauty/article/details/79871440
https://www.cnblogs.com/pupilheart/p/9853071.html
Python基礎教程:
http://www.runoob.com/python/python-tutorial.html
(對於一樣新知識,可能有些規定的語法和方法不太容易接受,
記住哈:學習某一樣知識,你所糾結的不應該是為什麼這樣規定,為什麼那樣規定,
你所關心的應該是它的用途,就是可以解決什麼問題,知識不是用來背和記的,是用來用的,
秉著自己想解決什麼問題去學知識哈
因為我知道Python能解決我當前的問題,所以我一開始沒學的時候就接受了它,然後又很快吸收了它)
首先是安裝mqtt外掛,我百度的網上大部分呢都是用的 paho.mqtt
所以乾脆跟著別人的腳步,我也用這個吧!(網上大部分都是敲命令安裝,咱有IDE,所以讓IDE自己安裝)
我就做個最簡單的,連線,訂閱
import paho.mqtt.client import time mqtt = paho.mqtt.client def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) #列印連線狀態 client.subscribe("2222") #訂閱2222 def on_message(client, userdata, msg): print(msg.topic+" " + ":" + str(msg.payload)) #列印接受的訊息 client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) client = mqtt.Client(client_id) # ClientId不能重複,所以使用當前時間 client.username_pw_set("yang", "11223344") # 必須設定,否則會返回「Connected with result code 4」 client.on_connect = on_connect client.on_message = on_message client.connect("mnifdv.cn", 1883, 60) client.loop_forever()
有什麼問題自己百度哈
說一下,很多都是這樣
import paho.mqtt.client as mqtt
實際上大家可以百度
意思是 mqtt代替了paho.mqtt.client
我是這樣
mqtt = paho.mqtt.client
當然如果您不想用IDE啟動,那麼
import time import sys sys.path.append('F:/Python/mqttdemo/venv/Lib/site-packages') import paho.mqtt.client mqtt = paho.mqtt.client def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) #列印連線狀態 client.subscribe("2222") #訂閱2222 def on_message(client, userdata, msg): print(msg.topic+" " + ":" + str(msg.payload)) #列印接受的訊息 client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) client = mqtt.Client(client_id) # ClientId不能重複,所以使用當前時間 client.username_pw_set("yang", "11223344") # 必須設定,否則會返回「Connected with result code 4」 client.on_connect = on_connect client.on_message = on_message client.connect("mnifdv.cn", 1883, 60) client.loop_forever()
然後再試一試
或者
import sys sys.path.append(sys.path[0]+'/venv/Lib/site-packages')
sys.path[0] 是返回的是指令碼所在的位置,這樣比較方便一點