The shop floor lacks stable internet, workers wear gloves and face vibration. Paper route sheets and Excel reports prevent full traceability — any ERP integration fails. Our mobile MES application for production control integrates output accounting and quality control modules. With over 10 years of experience and more than 15 successful implementations, our team specializes in industrial mobile solutions. Developing a mobile application for production control (MES) solves these issues: we create apps that collect shop floor data in real time, integrate with SAP ME, Siemens Opcenter, and any SCADA system. The solution has been deployed in over 15 implementations across Russian and CIS enterprises, from machine building to pharmaceuticals. On average, order processing time is reduced by 40%, and data entry errors drop by 70%.
How We Develop a Mobile MES Application for the Shop Floor
A shop floor is not an office. Devices must work with gloved hands (stylus or large touch zones), under vibration, and in the presence of industrial Wi-Fi interference from frequency converters. Screens must be readable in bright light or in dark areas. These requirements dictate device selection.
For heavy industry — rugged terminals: Panasonic Toughbook FZ-T1, Zebra MC9300, Honeywell CT40. They run Android 8+, support DataWedge, RFID, NFC. For light manufacturing — standard smartphones or tablets in protective cases. The average cost ranges from $1,000 to $2,000 per unit, but the solution pays for itself in 4-6 months through reduced defects.
| Parameter | Rugged Terminal | Smartphone in Case |
|---|---|---|
| Drop protection | IP67, 1.8 m drop | Depends on case |
| Glove mode | Special mode, stylus | Capacitive screen — worse |
| Sunlight readability | 800+ nits | 400-600 nits |
| Service life | 5+ years | 2-3 years |
| Cost | Higher | Lower |
Integrating the Mobile App with Existing MES
Most industrial MES (SAP ME, Siemens Opcenter, Wonderware) offer OData or REST APIs. However, SAP ME versions before 15.x use SOAP — requiring XML mapping. Retrofit with SimpleXml converter handles this, but WSDL schemas from SAP ME are large: auto-generation via wsdl2java saves time. REST APIs are 3 times faster than SOAP for frequent requests, so we migrate to REST when possible.
Production task synchronization uses a pull model with caching. The worker receives the shift task list upon login and then works offline. Critical events (start operation, stop, defect logging) are immediately queued for sending via WorkManager:
val syncRequest = OneTimeWorkRequestBuilder<OperationSyncWorker>() .setConstraints( Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED) .build() ) .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 15, TimeUnit.SECONDS) .build() WorkManager.getInstance(context).enqueueUniqueWork( "operation_sync_${operationId}", ExistingWorkPolicy.KEEP, syncRequest ) The KEEP policy is important: if the network fails and the worker presses "complete" twice, only one sync task should be in the queue.
Common integration mistakes: forgetting MES API versioning — if the MES is updated without backward compatibility, the mobile app will stop syncing. We recommend testing integration on a staging environment before updates. Also ignoring data volume: at shift start, there may be 500+ tasks — pagination is necessary.
| Protocol | Speed | Complexity | Usage |
|---|---|---|---|
| REST | High | Low | Modern MES |
| SOAP | Medium | High | Legacy SAP |
| OPC UA | Medium | High | SCADA and equipment |
Output Accounting and Component Traceability
Scanning parts, assemblies, and finished products is a core function. Each part has a unique QR or DataMatrix with a serial number. During assembly: the worker scans the component → the system checks if it is suitable for the current operation → allows continuation or blocks with a reason. This processes up to 300 operations per hour with 99.9% accuracy.
At the application level, we make a request to the MES API with serial_number + work_order_id + operation_id. The response: "allowed" / "wrong component" / "component already used". The last case is critical: it catches duplicate scans and prevents double counting.
Quality Control and Defect Logging
The defect marking form is not just a "quantity" field. It requires selecting a defect code from a classifier (GOST or internal reference), attaching a defect photo, and indicating the location on the part.
On Android, we use CameraX ImageCapture for photos, compressing via Bitmap.compress(JPEG, 70) before sending — 50 MP photos are unnecessary. Location annotation uses a Canvas overlay on ImageView, storing tap coordinates as a percentage of the image size (not pixels, which change on resize). This system reduces complaints by 15-20% through accurate logging.
Why Offline Mode Matters
A production shop is an area of unstable Wi-Fi. Without offline mode, the app is useless. We design the architecture with local storage (Room) and synchronization via WorkManager. This guarantees that no operation is lost, even if the network goes down for 2 hours. In one project, offline mode reduced downtime by 30%: workers no longer waited for data to load.
Equipment Monitoring via OPC UA
If the MES is integrated with SCADA through OPC UA (OPC Foundation), the mobile app can display real-time machine parameters: RPM, temperature, vibration. The Prosys OPC UA SDK for Android is a commercial library with good documentation. Subscribing to MonitoredItem with a sampling interval of 1000 ms is sufficient for a production dashboard. Without this SDK, Eclipse Milo via JVM requires careful thread management and increases app size.
Role-Based Access
In production, roles are fundamental: a worker sees only their own tasks, a foreman sees tasks for their area, and a technologist sees all operations with editing permissions for norms. We use Spatie Permissions on the Laravel backend, with JWT tokens containing role claims. On mobile, permissions are checked before rendering screens, and also enforced on the backend with every request.
What Is Included in Mobile MES App Development?
We provide a full cycle:
- Analysis: audit of your production, device selection, integration scheme design (REST/SOAP/OPC UA).
- Prototype: in 2 weeks, we deliver an MVP using real data.
- Development: Android/Kotlin + Jetpack Compose, code covered with unit and UI tests.
- Integration: connecting to MES, SCADA, ERP; testing on the shop floor.
- Documentation: API specs, user manuals.
- Training: workshops for foremen and technologists.
- Support: 12-month code warranty, 4-hour SLA for critical bugs.
Timeline and Economic Efficiency
A basic MES app (tasks, operations, defects, sync): 8-12 weeks. Full cycle with OPC UA, component traceability, defect photos, and BI integration: 4-7 months. Pricing is determined individually after analyzing the integration scheme. Typical investment is between $30,000 and $60,000, with ROI in 4-6 months. On average, the implementation pays for itself in 4-6 months, saving the enterprise up to $25,000 per year through reduced defects and paper workflow. Our clients report a 25% increase in overall equipment effectiveness (OEE).
We will assess your project in 2 days — just write to us. Request a custom mobile MES application to improve your shop floor productivity. Receive a detailed plan and accurate estimate.







