Label print API

This commit is contained in:
2026-02-07 06:41:39 -05:00
parent dd5aa7c4bc
commit 3d1c007609
5 changed files with 132 additions and 1 deletions

View File

@@ -0,0 +1,57 @@
import os
import json
import logging
from typing import Optional
import paho.mqtt.client as mqtt
logger = logging.getLogger(__name__)
# MQTT Configuration from environment
MQTT_BROKER_HOST = os.getenv("MQTT_BROKER_HOST", "localhost")
MQTT_BROKER_PORT = int(os.getenv("MQTT_BROKER_PORT", "1883"))
MQTT_USERNAME = os.getenv("MQTT_USERNAME", "")
MQTT_PASSWORD = os.getenv("MQTT_PASSWORD", "")
MQTT_LABEL_TOPIC = os.getenv("MQTT_LABEL_TOPIC", "vet/labels/print")
def publish_label_print(label_data: dict) -> bool:
"""
Publish a label print request to MQTT broker
Args:
label_data: Dictionary containing label print information
Returns:
True if successful, False otherwise
"""
try:
# Create MQTT client
client = mqtt.Client()
# Set username and password if provided
if MQTT_USERNAME and MQTT_PASSWORD:
client.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)
# Connect to broker
client.connect(MQTT_BROKER_HOST, MQTT_BROKER_PORT, 60)
# Start network loop to process connection
client.loop_start()
# Publish message with QoS 0 (fire and forget)
message = json.dumps(label_data)
result = client.publish(MQTT_LABEL_TOPIC, message, qos=0)
# Stop loop and disconnect
client.loop_stop()
client.disconnect()
if result.rc == mqtt.MQTT_ERR_SUCCESS:
logger.info(f"Successfully published label print request to {MQTT_LABEL_TOPIC}")
return True
else:
logger.error(f"Failed to publish label print request: {result.rc}")
return False
except Exception as e:
logger.error(f"Error publishing MQTT message: {str(e)}")
return False