1. 程式人生 > >mqtt 客戶端 基於Python

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] 是返回的是指令碼所在的位置,這樣比較方便一點