1. Install the app on iOS & Android
MoyaTrace works in any modern browser, but you can also install it as an app on your phone or tablet โ it then opens in its own window, supports the offline dashboard, and feels like a native app.
iPhone / iPad (Safari)
- Open
https://moyatrace.moyaindustries.comin Safari (not Chrome โ Add to Home Screen only works from Safari on iOS). - Tap the Share icon (square with an up-arrow) at the bottom of the screen.
- Scroll down and tap Add to Home Screen.
- Confirm the name MoyaTrace and tap Add.
- Launch the new MoyaTrace icon from your home screen โ it opens full-screen, no browser bar.
Android (Chrome / Edge / Samsung Internet)
- Open
https://moyatrace.moyaindustries.comin Chrome. - Tap the โฎ menu in the top-right corner.
- Tap Install app (or Add to Home screen > Install).
- Confirm Install. The MoyaTrace icon appears on your home screen and app drawer.
- Open it โ Android treats it like a regular app and it works offline for the dashboard.
Online app vs offline dashboard
- Online app (lane scanners, reports, settings, simulator): needs the internet โ writes go directly to the cloud database.
- Offline dashboard: once you have opened the dashboard at least once while online, the installed app caches it so you can still view the most recent shift numbers, lane totals, and per-block info if the connection drops. As soon as the network is back, new data syncs automatically.
- Scans done by lane scanners while offline are queued on the device and sent up the moment the connection returns.
LAN dashboard (Pi 5 relay โ works with no internet)
On site there is also a local dashboard served by the Pi 5 relay box on the packhouse network. It does not need the internet โ it keeps working during ISP outages because every scan is stored on the Pi 5 itself and forwarded to the cloud only when the link returns.
- Connect your phone, tablet, or PC to the same WiFi/LAN as the Pi 5 (e.g.
MoyaTracenetwork). - Open a browser to
http://<pi5-ip>:8080/โ for examplehttp://10.139.86.156:8080/. Ask the installer for the exact IP; it is fixed by the router. - You'll see live lane totals, per-block info, and a green/red indicator showing whether the Pi is currently reaching the cloud.
- You can bookmark it or "Add to Home Screen" (iOS/Android) for a one-tap offline icon, exactly like the online app.
Note: the LAN dashboard is read-only operations data โ to start/stop shifts, edit settings, or run reports, use the online app at moyatrace.moyaindustries.com.
2. Starting a shift (Manager)
- Sign in via Manager login on the home page.
- Go to Dashboard.
- Pick the week number and shift date, then enter the orchard block packed on each enabled lane.
- Press Start shift. The dashboard now shows live totals as boxes are packed.
- If a lane switches to a new block mid-shift, click Change block on that lane card โ all future boxes on that lane will be tagged with the new block.
3. Lane scanning
Each lane has its own scanner page at /scan/lane/A, /scan/lane/B, etc. Open the right one for the lane and leave it running.
- Each carton has a pre-printed QR sticker with packer + size info.
- Scanning a sticker captures the weight from the lane scale and writes the carton to the database.
- The scanner page shows the last few scans, weight, and whether each is in tolerance.
- Out-of-tolerance cartons are highlighted in warning colour.
4. Stickers
The Stickers page lets managers print pre-allocated sticker rolls per packer and carton size. Each sticker carries the unique serial that ties a carton to a packer, lane, and orchard block when scanned.
5. Reports
- Filter by date range, lane, carton code, class, or orchard block.
- The Cartons per class card now shows the % of total cartons for each class.
- Cartons CSV โ full carton-level export, opens directly into Excel columns.
- Class CSV โ a quick summary export of cartons + % per class.
- Export PDF โ a full branded report with summary, per-lane cost, per-class %, packer breakdowns, and the selected packer's performance vs peers.
- Packer performance report โ pick a packer position to compare them against peers at the same position on other lanes, including cost-per-carton.
6. Simulator (testing)
The Simulator lets you generate realistic scan data while a shift is active โ useful for training or for testing the dashboard and reports. Scans are written against the current shift, and each lane uses its own current orchard block (set on the dashboard) so the Per orchard block card breaks the simulated cartons down correctly per block.
7. Settings
The Settings page (manager login required) is where you configure everything the rest of the app reads from โ carton catalog, wages, lanes, staff, and outlet hardware. Changes save per row and take effect immediately for new scans.
Carton types
The catalog of carton SKUs used on stickers and matched by the scanner. Each row has:
- Code โ the SKU printed on the sticker barcode (e.g.
1NLXC). The scanner reads this prefix off the serial to look up the rest. - Class โ the grade label (e.g.
CLASS 1,PREMIUM). Used by the dashboard and reports for the per-class breakdown and % of total. - Target content (kg) โ the fruit weight you're aiming for, excluding packaging. Default 17.5 kg.
- Packaging (kg) โ empty carton + liner weight. This is subtracted from the gross scale reading to derive the true content weight stored against each scan.
- Tolerance ยฑkg โ how far from target counts as "in spec". Underweight/overweight totals on the dashboard use this number.
- Active switch โ turn off a SKU to hide it from stickers and reject incoming scans for it.
Click Save on a row after editing. Codes are uppercased automatically.
Packhouse & wages
- Packhouse name โ shown at the top of the dashboard and on the header of every exported PDF report. Set this once when you commission the system.
- Hourly wage โ the per-hour rate used to compute the live cost-per-carton figure on the dashboard and reports.
- Performance pay โ when enabled, hours over target add bonus hours to the wage calc; when disabled, pay is just shift hours + credit hours.
Live cost per carton
The dashboard shows a live Cost / carton figure (green stat box). Without performance pay:
cost/carton = (staff ร hourly rate ร elapsed hrs) รท cartons packed
With performance pay on, workers earn bonus hours for output above target pace:
bonus hrs = max(0, (cartons โ target ร elapsed hrs) รท target) pay hrs = elapsed hrs + bonus hrs + credit hrs cost/carton = (staff ร hourly ร pay hrs) รท cartons
Once a lane is ahead of target, cost per carton locks at a constant floor:(staff ร hourly) รท target/hrโ going faster does not reduce it further.
Lunch break: the 11:30โ12:00 window is automatically excluded from elapsed hrs, so target counts and cost-per-carton reflect only paid working time.
Lane status
One row per lane (AโE). For each lane:
- Target cartons/hr โ used as the benchmark on the dashboard speedometer and to flag under-performing lanes.
- Staff count per position โ the system adds together all positions: Arrivals + Cutters + Packers + Loadmasters + QC + Departures. Update each position count to match the actual number of people on the floor so the cost-per-carton calculation is accurate.
- Credit hrs โ extra paid hours not from packing (e.g. pre-shift cleaning, training). Added to the wage base.
- Enabled switch โ when off, that lane is excluded from dashboard totals, reports, and cost-per-carton. Use this if a lane is down for maintenance.
The dashboard's Per orchard block card reads each lane's current block, which is set from the Dashboard (not Settings) so block changes mid-shift don't need a manager.
Staff names
Assign a name to each lane ร packer position (e.g. LA-P3 = "John Smith"). Reports then show real names instead of LA-P3 codes. Names are optional โ an empty slot just shows the code.
Loadmaster Nodes (LoRa scanner hardware)
Each LoRa scanner node (NLM1, NLM2, โฆ) is a Pi that runs at the end of the conveyor belt. It scans carton barcodes wirelessly via LoRa radio to the master Pi. The Loadmaster Nodes table shows:
- Scanner ID โ the node identifier (e.g.
NLM1,NLM2). - Status โ green Online if a scan was received in the last 3 minutes, amber Stale (3โ30 min), red Offline if over 30 minutes with no scans. Scans made while offline are stored on the node and delivered automatically when the link is restored.
- Last scan โ timestamp of the most recent carton scanned by that node.
Shift notifications
The Shift notifications card on Settings lets each manager device receive a push notification the moment a shift starts or ends. Alerts arrive even if MoyaTrace is closed, and tapping them opens the relevant page (Dashboard for start, Reports for end).
- Open Settings on the device you want to receive alerts.
- In the Shift notifications card tap Enable notifications and allow the browser prompt.
- Use Send test to confirm delivery, or Disable to stop alerts on that device.
- Every manager who enables it on their own phone/tablet gets both alerts โ start and end.
9. Troubleshooting
- Dashboard shows a node as STALE. The loadmaster scanner node has not sent a scan in 3โ30 minutes. The node is probably idle (nothing to scan). Scans made while stale are stored on the node and flushed automatically โ no data is lost.
- Dashboard shows a node as OFFLINE. No scan received for over 30 minutes. Check that the node Pi is powered on, the LoRa USB dongle is plugged in to the master Pi, and the banana-node service is running on the node. Any queued scans will be delivered automatically when the link is restored.
- Scans are not arriving on the dashboard. Check that a shift is active and the lane is enabled in Settings. If the node shows Offline, scans are queued on the node and will flush when connectivity is restored.
- Per orchard block card shows everything under one block. Set each lane's current block from the dashboard at the start of the shift, or change it when the lane switches blocks.
- App looks small on a PC. Use the browser at full screen โ the layout uses the full width of large monitors.
- CSV opens as one column in Excel. The export already includes
sep=,and a UTF-8 BOM so it should split into columns automatically. If not, open Excel first and use Data โ From Text/CSV. - Installed app is showing old content. Close and re-open it โ the offline cache refreshes on relaunch as soon as it's online.
- No shift notification arrived. Confirm the device shows Enabled on this device under Settings โ Shift notifications and that the browser/system notification permission is granted. On iPhone the app must be opened from the home-screen icon, not Safari.