Sensors, coders, fillers, printers, and a COBOL-era ERP each hold a fragment of the truth. Connected, they become one operating picture: what ran, what's running, what breaks next — feeding planning instead of paperwork.
Everything below runs today at a multi-channel food manufacturer. Not a pilot. The plant.
A managed Raspberry Pi edge fleet on the floor, talking to the machines in whatever language they speak, publishing into the same platform as the ERP and the storefronts.
Dry-contact sensors on production machines publish every cycle over MQTT; a Pi bridge aggregates and uploads. Three-layer storage designed for ~21K writes a month. Downtime is visible while it's happening, not at shift end.
Inkjet date coders polled on their own TCP protocol — lifetime counts every 30 seconds, health every 60 — with idle-versus-offline logic and latched alerts so nobody chases a coder that's just between runs.
Per-bag fill records pulled off the HMI's datalog over FTP — millisecond resolution, per-lane weights. The true line count, straight from the filler, not the whiteboard.
Facility temperature, humidity, occupancy, and thermostat state into the cloud on a five-minute cadence — consumer sensor clouds and HomeKit-paired thermostats alike, in a three-container Pi stack.
Ten services, two timers, and three containers on a single shop-floor Pi — print, sensors, alerting, and finance-file jobs as managed units with heartbeats. Cheap hardware, production discipline.
Device-level polling and print-queue agents for the industrial and office printers on the floor, so a stuck queue pages someone before the line notices.
A twenty-module production planning app — scheduling, MRP forward-look, line utilization, BOMs, daily entry, live production — reading a live mirror of the ERP instead of last week's export. Seven tabs run on fully live data; none are static.
Marketplace demand comes in decomposed to base SKUs (41 marketplace listings mapped to 23 manufactured items) and rides every planning module as a demand adder. The advanced scheduler models stockout ripple, safety stock, and line eligibility, with a documented dependency matrix for every demand source.
Parcel, LTL, and retail-partner compliance handled from ERP data — printed in pick order, reconciled against the printer itself, and back-tested against what the carrier actually charged.
Detects unlabeled retail orders in the mirror and prints UPS labels in exact import order at the shipping station — every five minutes across the shift, running on the station itself with zero laptop dependency.
Batches label jobs to a Zebra ZT410 and reconciles against the printer's own counter before marking anything printed. Never claims a label that didn't come out; keeps an fsync'd in-flight journal.
Collect and VICS bills of lading built to each partner's routing guide, GS1 pallet-label templates, and a 15-distribution-center directory — compliance changes absorbed on their effective date.
3,514 real orders back-tested against live carrier rating over six months: an ~$85K-per-year service delta identified and a $42K refund claim put on record. The order bot that stages, ships, and invoices daily was rebuilt mirror-driven so it survives outages.
Audit readiness is mostly paperwork discipline, and paperwork discipline is exactly what software is for. Controlled documents arrive by email from anyone, get OCR'd, versioned, and filed with sender-revision-wins semantics — nobody hunting for the current copy the week before the auditor arrives.
We also mapped an existing program against the new code edition ahead of its audit cycle and came back with three prioritized core-clause gaps instead of a binder.
The ERP in the middle — even when the ERP is COBOL from the 1990s.