MQTT/subscriber.py

120 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
'''
@project: mqtt
@file: subscriber.py
@version: python3.10
@Author: jcq
@Date : 2024/12/11
@
'''
import sys
import json
from loguru import logger
import paho.mqtt.client as mqtt
# 101.133.163.127
# 1883
# admin
# admin##123
# MQTT Broker 地址和端口
broker = "101.133.163.127" # 在远程服务器上可改为对应的 IP 地址
# broker = "localhost" # 在远程服务器上可改为对应的 IP 地址
port = 1883
topic = "test/topic"
logger.add(sys.stderr,format = "{time}-{level}-{message}",level="INFO")
logger.add("log/mqtt_subscriber.log",rotation="1 MB",retention='5 days')
def on_connect(client,userdata,flags,rc):
print("rc:",rc)
logger.info("connected with result code" + str(rc))
client.subscribe(topic)
print(topic)
# # 消息回调函数
# def on_message(client, userdata, message):
# print('message')
# print(message)
# print(f"Received message: {str(message.payload.decode('utf-8'))} on topic: {message.topic}")
# 当接收到MQTT消息时回调函数
def on_message(client, userdata, data):
# # 将消息解码为JSON格式
# payload = msg.payload.decode('utf-8')
# data = json.loads(payload)
print("line58",data)
# 解析位姿信息
lon = data.get("lon")
lat = data.get("lat")
alt = data.get("alt")
yaw = data.get("yaw")
pitch = data.get("pitch")
roll = data.get("roll")
# 打印无人机的位姿信息
print(f"Longitude: {lon}, Latitude: {lat}, Altitude: {alt}")
print(f"Yaw: {yaw}, Pitch: {pitch}, Roll: {roll}")
# 创建客户端
client = mqtt.Client()
print("line80")
client.on_connect = on_connect
print("line83")
# 设置回调函数
client.on_message = on_message
print("line87")
# 连接到 Broker
client.connect(broker, port)
print("line90")
# client.loop_forever()
# 保持订阅状态
client.loop_forever()
print("line98")
# # 订阅主题
# client.subscribe(topic)
# client.loop_start()
# try:
# while True:
# pass
# except KeyboardInterrupt:
# logger.info("subscriber stopped by user")
# finally:
# client.loop_stop()
# client.disconnect()