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
- Sign in: oee.voltrus.id/line/auth/login, with your Voltrus account.
- Subscribe or manage billing: console.voltrus.id/app/oee-line.
- Product page: /voltrus-oee/
Pricing
| Payment | Price | Trial |
|---|---|---|
| Card | $19 per month | 14-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 month | No 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
| Requirement | Details |
|---|---|
| Browser | Any modern browser: Chrome, Safari, Firefox, Edge. Phones and tablets work. |
| Account | A Voltrus account. You sign in through the Voltrus console. |
| Machine data | Operators tap states and counts on a phone, or a PLC, the Voltrus Gateway or a script pushes them over HTTP (optional, see below). |
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.
| State | Meaning | Effect on OEE |
|---|---|---|
| Running | Producing | Counts as run time |
| Idle | Not producing, not a fault (for example nothing scheduled) | Reduces availability |
| Down | Stopped, with a reason code | Unplanned 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" }
| Field | Meaning |
|---|---|
machine | Required. The machine code you created. |
ts | Optional. Unix milliseconds, seconds, or an ISO time. Defaults to now. Not accepted if more than 60 seconds ahead. |
state, reason | Optional. running, idle or down, and the reason code for down. |
good, scrap | Optional. Pieces to add. |
good_total, scrap_total | Optional. 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. |
uid | Optional. 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
- Email: [email protected]
- App: oee.voltrus.id/line/
- Billing: console.voltrus.id/app/oee-line
- Product page: /voltrus-oee/
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.