Logging · getting started
Supervisor viewEvery machine on its block, recognised from the phone in its cab.
Nobody on the crew enters anything. One sample day, run on the server's own rules.
- Blocks
- staged: one stage per block today
- Stages
- KR-112 falling · KR-104 skidding · KR-097 processing · KR-089 loading and hauling
- Phones
- 5 cab phones · 3 operator phones
- Sync
- daily at camp, live when there's signal
| Machine | Model | Phone | Now |
|---|
06:00 to 06:50The phones start themselves.
Each cab phone rides on a charger wired to the ignition. It starts at boot, writes a point every 5 seconds and keeps going with no signal. The operator never opens the app.
Data coming in
raw points, newest first| Time | Phone | Lat | Lon | ±m | Power | Vib m/s² |
|---|
Tonight's sync
Everything goes up the first time a phone sees a connection: camp, the truck, the office. Live tracking is optional; the sync is the record.
06:50 to 07:20 · SK2, grapple skidderEvery 30 seconds becomes a state.
Speed from successive positions, vibration from the accelerometer, power from the charger. Four rules, smoothed over 2.5 minutes. Idles under 5 minutes count as work.
SK2 · the last hour
05:50 to 06:50Speed, m/s
Vibration, m/s² RMS
Charger power
Recognised
The rules
server/activity.py- Off
- The charger has no power: the ignition is off.
- Travelling
- Faster than 9 km/h. For a truck, driving is the work.
- Working
- Vibration of 0.6 m/s² or more, or moving slowly.
- Idle
- Engine on, nothing else. Five minutes of it is a delay.
Today · four blocks, one stage each
state recognised from each phoneProduction
m³ by where it's measuredUtilisation
productive ÷ engine onWhere the wood is
m³15:40 · supervisor's boardFound on their own. You say why.
Any stop of 5 minutes or more with the engine running becomes a delay. Operators can't edit a shift. A supervisor or PM labels it, and every change is logged with who and when.
Every delay today
0 foundThe longest ones, waiting for a reason
Corrections log
append-only- Nothing labelled yet. Pick a reason on the left.
A load, signed by both machines, with no signal.
The loader's phone writes the receipt and signs it. The truck's phone checks that signature and countersigns, over Bluetooth, as it pulls away. Whichever reaches service first sends it in.
Making demo keys in this browser…
LD1John Deere 2656G · loader
- Truck beside me · −71 dBm · hello
- Loading TR1
- Asked for the receipt
- Signed load 56 · sent
- Countersignature checks · kept
The receipt
canonical JSON · the bytes that get signedWritten when the truck pulls away.
TR1Kenworth T880 super-B · truck
- Loader's beacon · connected
- Moving 2 m/s+ for 3 fixes
- Asked LD1 for the receipt
- Loader's signature checks · countersigned
- Carrying it to service
Every load, with its scale ticket.
The receipt says which loader filled which truck, and when. The mill's scale ticket adds the m³ when the truck weighs in.
KR-089, the hauling block, so far
Tickets reconcile each block's total. Over a season, the rate per phase is fitted against slope, skid distance and piece size, which forecasts the next block before it starts.
Premium · sealed loadsWe check them. We can't read them.
Each receipt is encrypted on the loader's phone to your organisation's key before it's signed. Our server verifies both signatures on the sealed bytes, refuses tampering and drops duplicates, without opening a single field.
What Blockline's server storesthe header, and ciphertext
| load_id | org | loader_device | truck_device | kid | ct |
|---|
What your browser opens, with your keymade here, never sent
| Load | Loader → truck | Block | Loaded | Cycles | Position |
|---|
Sealing the day's receipts in this browser…
18:10. The last ticket's in.
Nobody on the crew entered a single thing. All of it came from eight phones riding in the cabs, the processor's file and the mill's scale tickets.
See it on your own block.
We'll run a day like this one with your machines, your phases and your haul, and walk your supervisors through the board.
Book a demo