first commit
This commit is contained in:
59
README.md
Normal file
59
README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Vet Label Printer Client
|
||||
|
||||
This is a Docker-based MQTT client that listens for print requests, generates vet drug prescription labels, and prints them using a Brother QL printer.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Configure the environment variables in `.env`:
|
||||
- `MQTT_HOST`: MQTT broker hostname
|
||||
- `MQTT_PORT`: MQTT broker port
|
||||
- `MQTT_TOPIC_SUB`: Topic to subscribe for print requests
|
||||
- `MQTT_TOPIC_PUB_ERRORS`: Topic to publish errors
|
||||
- `PRINTER_DEVICE`: Printer device path (e.g., /dev/usb/lp0)
|
||||
- `PRINTER_MODEL`: Printer model (e.g., QL-800)
|
||||
- `LABEL_SIZE_DEFAULT`: Default label size (e.g., 29x90)
|
||||
|
||||
2. Build and run with Docker Compose:
|
||||
```bash
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
## MQTT Message Format
|
||||
|
||||
The client subscribes to the configured topic and expects JSON messages like:
|
||||
|
||||
```json
|
||||
{
|
||||
"template_id": "vet_label",
|
||||
"label_size": "29x90",
|
||||
"variables": {
|
||||
"practice_name": "Many Tears Animal Rescue",
|
||||
"animal_name": "Rosie 468837",
|
||||
"drug_name": "Amoxicillin 50mg",
|
||||
"dosage": "1 tablet twice daily with food",
|
||||
"quantity": "14 tablets",
|
||||
"vet_initials": "Frank Molina"
|
||||
},
|
||||
"test": false
|
||||
}
|
||||
```
|
||||
|
||||
- `template_id`: Identifier for the label template (currently only "vet_label" supported)
|
||||
- `label_size`: Size of the label (passed to brother-ql)
|
||||
- `variables`: Key-value pairs for label content
|
||||
- `test`: If true, saves PNG to `/app/output/` instead of printing
|
||||
|
||||
## Error Handling
|
||||
|
||||
Any errors during processing are published to the error topic as JSON:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "Error message",
|
||||
"original_payload": "{original message}"
|
||||
}
|
||||
```
|
||||
|
||||
## Adding New Templates
|
||||
|
||||
To add new label templates, edit `templates.py` and add to the `TEMPLATES` dict.
|
||||
Reference in New Issue
Block a user