Voltrus OEE Line Documentation: Setup and Troubleshooting

Sign up and start the trial

Voltrus OEE Line is a hosted, self-serve service: there is nothing to install or maintain. You sign in from any browser (phone, tablet, or desktop) at oee.voltrus.id/line/. Each workspace covers one line and up to 3 machines, and its data is isolated from every other workspace.

Get access

Pricing

PaymentPriceTrial
Card$19 per month14-day free trial. The card is collected at start, nothing is charged until day 14, and you can cancel any time before.
QRIS (Indonesia)Rp 299.000 per monthNo trial

One line and up to 3 machines per workspace, with up to 10 people. Extra machines or lines are not sold. For more machines, work orders and traceability, see Voltrus MES.

Requirements

RequirementDetails
BrowserAny modern browser: Chrome, Safari, Firefox, Edge. Phones and tablets work.
AccountA Voltrus account. You sign in through the Voltrus console.
Machine dataOperators tap states and counts on a phone, or a PLC, the Voltrus Gateway or a script pushes them over HTTP (optional, see below).
Nothing to host. Updates and hosting are included in the subscription.

Quick Start

1. Sign in

Open oee.voltrus.id/line/ and sign in with your Voltrus account.

2. Create a workspace

Give it a name and a time zone. The workspace starts with one line, one shift (Shift 1, Monday to Saturday, 07:00 to 15:00, 30 minute break) and a starter set of downtime reasons. Edit all of them.

3. Add machines and their ideal cycle

Add up to 3 machines. Each has a short code (letters, digits, - and _, up to 32 characters), a name, and an ideal cycle time in seconds per piece. Performance is calculated from the ideal cycle, so set it to the best realistic cycle, not the average. A 4th machine is refused with a machine limit message.

4. Set your shifts

Set start and end times, working days and break minutes for each shift. A shift that ends before it starts crosses midnight.

5. Share the operator link

Create an operator link and open it on a phone or tablet at the machine. No login is needed. The link is shown once when you create it, so copy it then. You can revoke a link at any time.

6. First taps

On the operator screen, tap a machine, then its state (running, idle, down) and, for down, the reason. Count good and scrap pieces. Made a mistake? Undo the last count. The dashboard updates as soon as the first state and count arrive.

Configuration

States and reason codes

A machine is always in one of three states.

StateMeaningEffect on OEE
RunningProducingCounts as run time
IdleNot producing, not a fault (for example nothing scheduled)Reduces availability
DownStopped, with a reason codeUnplanned reasons reduce availability. Planned reasons shorten planned time instead.

Every reason code is either planned (changeover, meeting, planned maintenance) or unplanned (breakdown, jam, material shortage). Add, rename or archive reasons as your process needs. A down event without a reason is allowed and can be given one afterwards.

Shifts and break minutes

Each shift has a start, an end, working days and break minutes. Break minutes are taken out of the shift time before OEE is calculated. States and counts only count inside shift time: anything recorded outside a shift is ignored by OEE.

OEE formula

Planned time = shift time - break - planned stops
Availability = run time / planned time
Performance  = ideal cycle x (good + scrap) / run time   (capped at 100%)
Quality      = good / (good + scrap)
OEE          = Availability x Performance x Quality

The line figure is a weighted roll-up of its machines, not a simple average. Quality shows as blank until something has been counted.

Alerts

Create an alert rule with a number of minutes, for one machine or for all of them. When a machine has been down longer than that, an email goes to the workspace members who opted in to notifications.

Team

Up to 10 people per workspace. The owner adds people by email, and they sign in with that email through the Voltrus console to join. Each member can switch alert emails on or off.

Operator links

Operator links open the phone-friendly screen with no login. Make one per station or per shift, label it, and revoke it if a phone is lost. Anyone holding a link can record states and counts, so share it only with the people on the floor.

Reports

  • Shift report as PDF or CSV: line and per machine availability, performance, quality and OEE, run, down and idle minutes, good and scrap, downtime by reason, and the event list.
  • CSV exports: OEE per machine by day or by shift, every downtime event, every count entry.

You can also correct a mistake after the fact: edit the reason or times of a downtime event, or void a count.

HTTP Ingest (optional)

If a machine already knows its own state or count, push it instead of tapping. Create an ingest key in the workspace settings (shown once, starts with vlk_) and send JSON to:

POST https://oee.voltrus.id/line/api/ingest
X-API-Key: vlk_your_key_here
Content-Type: application/json

Send one event, or { "events": [ ... ] } with up to 200 events per call.

Event fields

{ "machine": "M1", "ts": 1792800000000, "state": "running", "reason": "breakdown",
  "good": 12, "scrap": 1, "good_total": 5021, "scrap_total": 40, "uid": "plc-1-000123" }
FieldMeaning
machineRequired. The machine code you created.
tsOptional. Unix milliseconds, seconds, or an ISO time. Defaults to now. Not accepted if more than 60 seconds ahead.
state, reasonOptional. running, idle or down, and the reason code for down.
good, scrapOptional. Pieces to add.
good_total, scrap_totalOptional. A PLC's running totals, turned into counts by difference. The first total only sets the baseline, and a smaller total is treated as a counter reset.
uidOptional. An idempotency key: a replayed event with the same uid is ignored.

Response

{ "accepted": 3,
  "ignored": [ { "index": 1, "reason": "unknown_machine" } ] }

ignored[].reason is one of unknown_machine, unknown_reason, stale, duplicate or invalid.

Example with curl

curl -X POST https://oee.voltrus.id/line/api/ingest \
  -H "X-API-Key: vlk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"events":[
    {"machine":"M1","state":"down","reason":"breakdown","uid":"m1-0001"},
    {"machine":"M1","state":"running","uid":"m1-0002"},
    {"machine":"M1","good":12,"scrap":1,"uid":"m1-0003"}
  ]}'

MQTT

The service has no native MQTT listener. Bridge an MQTT topic to the HTTP endpoint with Node-RED (an mqtt in node into a http request node that sets the X-API-Key header) or with a small shell loop:

mosquitto_sub -h broker.local -t 'plant/line1/m1/count' | while read -r n; do
  curl -s -X POST https://oee.voltrus.id/line/api/ingest \
    -H "X-API-Key: vlk_your_key_here" \
    -H "Content-Type: application/json" \
    -d "{\"machine\":\"M1\",\"good_total\":$n}"
done

PLC, Voltrus Gateway or script

Any PLC or program that can make an HTTPS POST can push directly. The Voltrus Gateway speaks gRPC, so it does not post to this endpoint by itself: a small script or a Node-RED flow reads from the gateway and does the push.

Key Features

Machine states with reason codes

Running, idle and down, with each stop tagged planned or unplanned so planned time stays out of the availability loss.

Downtime tracking

Every stop has a start, an end and a reason. A downtime ranking by reason shows where the hours went each shift.

OEE per machine and for the line

Availability, performance and quality, multiplied into OEE, for each machine and as a weighted roll-up for the line.

Shift reports

PDF or CSV per shift, plus CSV exports for OEE, downtime and counts.

Phone-friendly operator screen

Opened from a link with no login. Tap state and reason, count good and scrap, undo the last count.

Email alerts

A machine down longer than N minutes emails the workspace members who opted in.

Up to 10 people, isolated data

Sign in with a Voltrus account. Each workspace's data is isolated from every other workspace.

Troubleshooting

Recording paused (402) after the trial ends

Symptom: Operator taps and ingest calls fail with a 402 and a message that recording is paused.
Fix: The trial or subscription has ended. Setup, dashboards and exports keep working, but nothing new is recorded. Subscribe or renew in the Voltrus console, then refresh the app.

Machine limit message

Symptom: Adding a machine is refused.
Fix: A workspace covers up to 3 machines. Archive a machine you no longer track to free a slot. For more machines or lines, see Voltrus MES.

Ingest event ignored as unknown machine

Symptom: The response lists unknown_machine.
Fix: The machine field must match a machine code exactly. Check spelling and case, and that the machine is not archived. unknown_reason works the same way for the reason code.

Ingest event ignored as stale

Symptom: The response lists stale.
Fix: The event's ts is older than the machine's current state, so it is refused. Send events in time order, and replay a backlog oldest first.

Events rejected or off because of clock skew

Symptom: Events are refused, or land at the wrong time.
Fix: A ts more than 60 seconds ahead of the server clock is not accepted. Sync the clock of the PLC or script with NTP, or leave ts out so the server uses the time it received the event.

OEE looks too high or too low

Symptom: OEE reads 100% on an imperfect shift, or very low on a good one.
Fix: Check the ideal cycle time (set too slow, it inflates performance, which is capped at 100%), the shift times and break minutes, and that planned stops use planned reasons. Counts and states outside shift time are not counted.

Quality shows blank

Symptom: Quality has no value.
Fix: Nothing has been counted in that window. Count good and scrap on the operator screen, or push counts over HTTP.

Can't sign in

Symptom: The sign-in loop returns to the login page.
Fix: Sign in at oee.voltrus.id/line/auth/login with your Voltrus account and make sure your email is verified. To join someone else's workspace, sign in with the email the owner invited.

Support

When you write in, name the machine code, the shift or time window, and what you expected versus what you saw. That is usually enough to resolve it the same day.