python3 mqtt sub永不斷連

2021-10-13 09:53:33 字數 2306 閱讀 7928

mqtt 組成

1、mqtt 伺服器 2、mqtt 訂閱者 sub 3、mqtt 傳送者 pub

搭建mqtt  使用emqx,我的本地機器是centos 8 雲服務是 centos 7.8,搭建大同小異

搭建服務的話,看官網最好  

然後就是測試啥的了,用python 測試 訂閱 傳送

先寫訂閱 建立 sub_car.py

class mqttsub(object):

def __init__(self, topic):

self.client = mqtt.client()

self.topic = topic

self.username = 'caoyong'

self.password = 'admin123'

def on_connect(self, client_driver, userdata, flags, rc):

logger.info("connected with result code: " + str(rc))

print("connected with result code: " + str(rc))

print(rc)

if rc == 0:

client_driver.subscribe(self.topic, qos=0)

@classmethod

def on_message(cls, client_driver, userdata, msg):

logger.info(f' ')

print(f' ')

sub_data = json.loads(msg.payload.decode('utf-8'))

logger.info(f'')

print(sub_data)

start_time = sub_data['time']

end_time = time.time() - start_time

print('訊息從傳送到接收的時間', end_time)

logger.info(f'訊息從傳送到接收的時間')

if 'open_door' in sub_data.keys():

open_door()

end_time = time.time() - start_time

print(end_time)

logger.info(f'最終時間')

def mqtt_main(self):

self.client.username_pw_set(username=self.username, password=self.password)

self.client.connect('192.168.22.70', 61883, 600)

self.client.on_connect = self.on_connect

self.client.on_message = self.on_message

self.client.loop_forever(retry_first_connection=true) # 保持連線

if __name__ == '__main__':

now_topic = 'door'

mqttsub(topic=now_topic).mqtt_main()

然後 發布  pub_car.py

import json

import time

import paho.mqtt.client as mqtt

if __name__ == '__main__':

control_topic = 'control'

client = mqtt.client()

client.username_pw_set(username='caoyong', password='admin123')

client.connect('192.168.22.70', 61883, 600) # 600為keepalive的時間間隔

push_new = ,

'camera_left_right': ,

'car_left_right': ,

'car_up_down': ,

'cat_stop': 1

}client.publish(control_topic, payload=json.dumps(push_new), qos=0)

然後發現乙個問題,mqtt 使用本地電腦 檢視時間 要 0.015s  使用其他電腦 訂閱  居然要 2s+ 不知道為啥,計畫用mqtt 控制,但是 實際操作起來 不太可行 延遲太大

鐵血社群宣布將於2023年3月1日正式永久關閉

鳳凰網科技訊 12月20日訊息,今日,鐵血社群宣布 將於2程式設計客棧02程式設計客棧1年12月20日 今日 停止使用者發帖 回帖功能,2022年3月1日起,鐵血nxmwzod社群將正式永久關閉。據悉,鐵血社群,又稱鐵血論壇,建立於2001年,前身是創始人蔣磊於2001年建立的 虛擬軍事 2001年...

python3 切片 python3 切片

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...

python3安裝 Python3的安裝

1.anaconda安裝 2.安裝包安裝 3.linux下的命令列安裝 centos red hat 1 sudo yum install y sudo yum update3 sudo yum install y python35u python35u libs python35u devel p...