Automated Warehouse Control
One monitoring surface for a fleet of automated guided vehicles, built on top of a vendor fleet interface instead of replacing it.
This is an educational architecture pattern, not a claim about a named client deployment. Requirements, technologies, controls, and results vary by site.
Project Overview
Warehouses running automated guided vehicles (AGVs) usually already have a vendor-supplied fleet controller. What's missing is a single, browser-based view that operations staff can watch without opening each controller's own interface, and a durable event history for investigating congestion or repeated faults after the fact.
Engineering Problem
AGV fleet controllers report state (position, battery, mission, faults) at their own pace and through their own protocol, and that state is transient - if no one is watching the controller's screen at the moment a fault happens, the information is gone. The engineering problem is turning a stream of vendor telemetry into a durable, queryable operational record, and doing it without gaining any command authority the vendor's safety systems don't already grant.
Operational Constraints
Requirements
System Architecture
Representative architectureAn adapter service polls or subscribes to the vendor's fleet API and normalizes vehicle events into a common schema. Each event is appended to a SQL event log (not overwritten in place), so current state is a derived view, not the source of truth. A WebSocket layer pushes normalized state to connected dashboard clients; the dashboard itself holds no business logic beyond rendering what it's given.
Data Flow
Integration Approach
Integration is entirely through the vendor's documented fleet API or protocol adapter - this pattern assumes that interface exists and is stable, and does not attempt to bypass it. Any command relay (e.g., "acknowledge fault" or "resume mission") only forwards actions the vendor API already exposes to an authorized operator.
Implementation
The adapter and event log are the parts worth getting right first: a schema that separates 'vehicle state' from 'event history' lets the dashboard stay simple while still supporting after-the-fact investigation. Command permissions are checked at the API boundary, separately from read/monitoring access, so a viewer account can never accidentally have write scope.
Reliability and Failure Handling
Stale telemetry is treated as its own state, not folded into 'offline' or 'idle' - a vehicle that hasn't reported in 30 seconds during normal operation is a different situation from one that reported 'stopped, charging' a minute ago. Event ingestion should buffer briefly during a short network interruption and reconcile rather than drop events, though the acceptable buffer window and reconciliation behavior are decisions the vendor's own retry/backoff behavior constrains.
Security Considerations
Monitoring (read) and command-relay (write) capabilities are modeled as separate permissions from the start, not as one "operator" role with everything enabled. Any relayed command is logged with the acting user, separately from the vehicle-generated event stream, so the audit trail distinguishes machine-reported events from human-initiated actions.
Testing and Validation
Before trusting the dashboard operationally, the adapter's handling of a dropped connection, a malformed or partial vendor message, and a burst of simultaneous vehicle events all need explicit test cases - these are the conditions most likely to actually occur on a warehouse floor, not the happy path of one vehicle reporting cleanly.
Deployment
Rollout depends entirely on the vendor's fleet API and the site's network segmentation between the warehouse floor and the network this system runs on. A production deployment needs sign-off from the equipment vendor and the site's safety process before it's treated as anything more than a monitoring aid.
Results
The intended outcome is a single observable fleet view with visible connection health and a queryable event history, replacing the need to check each controller separately. Whether that reduces investigation time or improves response to faults depends on the site's current process and would need to be measured against it - no such measurement exists for this pattern in the abstract.
Lessons Learned
Technologies Used
- Python
- WebSockets
- REST APIs
- SQL
Key Features
- Real-time battery and status monitoring
- Live routing and zone visualization
- Alerting for offline or low-battery units
- Web-based dashboard, no special hardware needed