MANUFACTURING / MQTT / GRPC / ON-PREM

Print Labels When the Line Says So: MQTT and gRPC for PLCs, MES and Robots

Let the line trigger the label. LabelInn takes print commands over MQTT or gRPC on your LAN, answers each one with the job result, and drives Zebra, TSC, Toshiba and Epson printers natively. No print server.

FREE PLAN · NO CREDIT CARD · WINDOWS / MAC / LINUX / WEB

THE PROBLEM

On a production line the controller already knows the moment a carton is full, a pallet is wrapped or a part has passed inspection. What usually happens next is an operator walking to a PC to print the label. That walk is where labels end up on the wrong box.

LabelInn's edge runtime sits on a PC on your network and listens for print commands over MQTT, the messaging protocol most SCADA systems, gateways and Node-RED flows already speak, and over gRPC for MES software and robot cells that prefer typed calls. It renders the label and sends native printer commands. No print server, no Windows driver per printer model.

🏭 Labels triggered by the line, not by a walk to the PC. Publish a message, a label prints. Talk to us about your line →

01 / MQTT

How it works

Connect LabelInn to your existing broker, such as Mosquitto, EMQX or HiveMQ, or switch on its built-in broker. TLS, username and password, and QoS 0, 1 and 2 are supported. LabelInn subscribes to these command topics:

TopicPurpose
labelinn/cmd/printPrint a label or a batch
labelinn/cmd/statusList local printers and broker state

A print command names the printer and says what to print: a saved LabelInn design filled with your data, or raw ZPL, TPCL or ESC/Label if your system already generates printer language.

EXAMPLEJSON
{
  "printerId": "<printer id>",
  "payloadType": "design",
  "designId": "<design id>",
  "designDataRows": [
    { "sku": "A-1042", "lot": "L2610", "qty": "24" }
  ],
  "copies": 1
}

Every command is answered on labelinn/cmd/response with the job result and its id, so the controller can confirm the label before the carton moves on.

02 / GRPC

gRPC: typed calls for MES and robot cells

The same runtime runs a gRPC server on your LAN (port 6633 by default, with an automatic fallback if it is taken). Switch it on in LabelInn's gRPC settings and it starts with the app.

ServiceCalls
PrintServiceSubmitJob prints a design with data or raw ZPL/TPCL/ESC-Label and returns the result; GetJobStatus reads it back by job id
PrinterFleetServiceListPrinters returns every local printer and whether it is online
VerifyServiceVerifyScan checks a scanned barcode against what was printed
SystemServiceHealthCheck and Ping

03 / MES

Why this is easier than a print server

Typical approachLabelInn edge runtime
Windows print server and a driver per modelNative ZPL, TSPL, TPCL and ESC/Label, no driver
Fire-and-forget raw socket to port 9100A job id per command and a status you can query
Label layout hard-coded in PLC or MES logicDesigns edited visually in LabelInn, referenced by id

04 / INDUSTRIAL AUTOMATION

Connecting your line

  • From the PLC side, anything that publishes MQTT or calls gRPC works: an MQTT-capable controller, a SCADA system, Node-RED, an MES, or a protocol gateway in front of the PLC.
  • On the floor, a PC near the printers runs LabelInn and drives them over USB or the network.
  • Prefer plain HTTP? The same runtime takes jobs on POST /local/v1/print/jobs. See printing from a web app.

QUESTIONS / FAQ

Frequently asked questions

Can a PLC print a label with LabelInn?

Yes. Anything that publishes an MQTT message or makes a gRPC call can print: an MQTT-capable controller, SCADA, Node-RED, an MES or a protocol gateway in front of the PLC.

Which MQTT brokers does LabelInn work with?

Standard MQTT brokers such as Mosquitto, EMQX and HiveMQ, with TLS, username and password, and QoS 0 to 2. LabelInn can also run its own built-in broker.

How does the line know the label printed?

Each MQTT command is answered on labelinn/cmd/response with the job result. Over gRPC, SubmitJob returns the result directly and GetJobStatus reads it back by job id.

Can I send raw ZPL instead of a LabelInn design?

Yes. A print command can carry a saved design plus data, or raw ZPL, TPCL or ESC/Label.

NEXT STEP / LABELINN

Let the line trigger its own labels

Run LabelInn next to your printers and connect it to the systems that already run the line. · MQTT commands and gRPC services · A result for every job · Native printer languages, no drivers

Start free →