60 lines
1.3 KiB
Python
60 lines
1.3 KiB
Python
import json
|
|
import paho.mqtt.client as mqtt
|
|
|
|
|
|
HOST = "192.168.7.3"
|
|
PORT = 1883
|
|
TOPIC = "qingping/CCB5D131BA93/up"
|
|
|
|
|
|
def on_connect(client, userdata, flags, reason_code, properties):
|
|
print("Connected:", reason_code)
|
|
|
|
client.subscribe(TOPIC)
|
|
|
|
|
|
def on_message(client, userdata, message):
|
|
try:
|
|
payload = json.loads(message.payload.decode("utf-8"))
|
|
except Exception:
|
|
print("RAW:", message.payload)
|
|
return
|
|
|
|
message_type = str(payload.get("type"))
|
|
message_id = payload.get("id")
|
|
message_timestamp = payload.get("timestamp")
|
|
|
|
sensor_timestamps = []
|
|
|
|
sensor_data = payload.get("sensorData")
|
|
|
|
if isinstance(sensor_data, list):
|
|
for sample in sensor_data:
|
|
timestamp = sample.get("timestamp")
|
|
|
|
if isinstance(timestamp, dict):
|
|
timestamp = timestamp.get("value")
|
|
|
|
sensor_timestamps.append(timestamp)
|
|
|
|
print(
|
|
f"id={message_id!s:<4} "
|
|
f"type={message_type:<3} "
|
|
f"msg_ts={message_timestamp!s:<12} "
|
|
f"samples={sensor_timestamps}"
|
|
)
|
|
|
|
|
|
client = mqtt.Client(
|
|
callback_api_version=mqtt.CallbackAPIVersion.VERSION2,
|
|
client_id="qingping-raw-debug",
|
|
)
|
|
|
|
client.on_connect = on_connect
|
|
client.on_message = on_message
|
|
|
|
client.connect(HOST, PORT, keepalive=60)
|
|
|
|
print(f"Listening: {TOPIC}")
|
|
|
|
client.loop_forever() |