Skip to content

Stops: when standing still becomes meaningful

What this chapter covers

When a truck goes still, three questions follow: is this a real stop or a momentary pause? where is it? and why did it stop? This chapter covers how the engine turns a stationary truck into a confirmed stop, how it enriches that stop with idle time and a place, how it infers the reason — border, customs, weighbridge, rest, breakdown — and how it decides whether the stop is authorized, raising an alert when it is not.

The picture

The behavior

From stationary to a confirmed stop

Stop detection runs on every usable fix while the truck is moving or in the fresh unknown state. The engine asks, in order:

  • Is there a movement signal? If the truck is really moving (the two-part rule), it is not a stop candidate — the stationary clock resets.
  • Is a crawl suppressing the stop? A truck proven to be creeping forward (see Trips) is not stopped just because it paused; a recent proven crawl blocks the stop.
  • Is it a stationary candidate? The truck qualifies when its effective speed is at or below 5 km/h. A wired-ignition-off reading counts as speed zero outright (unless CAN speed contradicts it, marking a flicker). A fix with no speed reading and ignition off is stationary; a fix with no speed but ignition on starts a 5-minute timer, and only if the null-speed condition persists past it does the truck become stationary — a running engine gets the benefit of the doubt for a while.
  • Has it lasted? A candidate only becomes a stop after it has held continuously for 3 minutes. Like a trip's start, the stop is backdated to the moment the truck first went still — ahead of the moment the engine confirmed it.

When the stop confirms during an open trip, the trip closes at the same instant the stop opens. There is exactly one open stop per vehicle at a time.

One geometry guard is worth noting: a trusted fix reporting no speed but sitting well outside the noise radius from the last trusted position is treated as motion, not a stop — the truck clearly moved even though the speedometer went quiet.

Enrichment: idle, place, and aggregates

A bare stop is a start time and a coordinate. At close, the engine enriches it in a single step: the idle time within the stop (engine-on but not moving, derived from engine RPM, voltage, and ignition), the nearest waypoint and whether the truck sat inside its footprint, the reverse-geocoded place label, and speed and idle aggregates. This enrichment is isolated so that if the place lookup or an aggregate fails, only the enrichment rolls back — the stop itself stays closed and correct.

The place label arrives asynchronously. A background reconciliation pass fills in labels the geocoder could not resolve at close time, so a stop that closes in a poorly-mapped area still gains a human-readable place once the label resolves.

Classifying the reason

A closed stop is sorted into one canonical category. Classification is deterministic — the same stop always classifies the same way, so a backfill reproduces live results exactly — and it works from most specific evidence to least:

  • A confirmed waypoint wins. If the truck sat inside an operator-curated waypoint, its type sets the class directly: a border waypoint gives border-crossing, a customs post gives customs, a weighbridge gives weighbridge, a fuel station gives fuel-station, and operational sites (warehouse, depot, port, checkpoint) give a generic authorized-waypoint. A toll gate counts only for a short pass-through (5 minutes or less); a long dwell there falls through to the duration rules. A fuel station is capped at 30 minutes — dwell longer and the truck stopped for more than fuel, so the engine looks at meal or rest instead.
  • Then geocoded place metadata. Outside any curated waypoint, the reverse geocoder's category can still pinpoint a fuel pump, a customs barrier, a police post, a restaurant, or a rest area — used with the same duration gates so an OSM "restaurant" only counts as a meal break in the right window.
  • Then a coincident refuel. A short stop overlapping a detected fill event is a fuel station even where no waypoint exists yet — the pump gives it away.
  • Then duration and time of day, evaluated in the corridor's local clock:
    • Mandatory rest — the driver is near the continuous-driving limit (within 85% of it) and the stop is at least as long as the required break.
    • Overnight rest — at least 6 hours overlapping the local night window (22:00–05:00).
    • Meal break — 30 to 90 minutes during the midday window (11:00–14:59 local).
    • Breakdown — at least 20 minutes with the engine off, away from any waypoint, with no refuel. Engine-off-in-the-open for that long reads as trouble, not a rest.
    • Traffic — a short unscheduled halt under 10 minutes away from any waypoint.
    • Anything the rules can't place stays unknown rather than being guessed.

Authorized versus unauthorized, and the alert

Independently of why the truck stopped, the engine asks whether it was allowed to stop here. A stop is authorized when its nearest waypoint is one of the types where a corridor truck is expected or required to halt — warehouses, depots, rest areas, fuel stations, ports, and the legally-mandatory control points (borders, checkpoints, weighbridges, customs posts, toll gates). A city waypoint marks a zone, so proximity to one does not authorize a stop.

When a stop opens without an authorizing waypoint nearby, the engine raises an unauthorized-stop alert. The alert shares the stop's lifetime: it stays open while the truck is stopped and auto-resolves the moment the stop closes, so a long unauthorized halt is one alert, not a stream of them.

A second, rule-based alert sits alongside it. A fleet can attach a rule set that lists specific waypoints as prohibited stopping places. A stop opening inside one of those fires a prohibited-stop alert — distinct from the unauthorized-stop alert, because it answers a different question (a named blacklist, not the absence of an authorizing type). It too resolves when the stop closes. Fleets with no rule set attached see only the type-based unauthorized-stop behaviour.

Edge cases

  • A short pause resets the stationary clock. A truck idling at a traffic light for 90 seconds never reaches the 3-minute floor, so no stop opens and no trip closes. The stationary clock simply resets when it moves again.
  • A creeping border queue. A truck inching forward under a proven crawl is held back from opening a stop while the crawl is recent, so a slow crossing reads as continuous movement rather than a chain of micro-stops. Where a fragment does slip through, the merged-artifact rule folds it back into one stop.
  • Ignition off with drifting GPS. A parked wired-ignition truck whose GPS drifts a few km/h is still recognised as stopped — the ignition-off reading overrides the noisy speed. A CAN speed above 5 km/h is the only thing that vetoes it, catching a flickering ignition line on a truck that is actually rolling.
  • Null speed with the engine running. A tracker that reports position but no speed while ignition is on waits out a 5-minute timer before it counts as stopped, so a brief speed dropout mid-drive doesn't manufacture a stop.
  • A stop in an unmapped area. The place label may be blank at close time; the reconciliation pass fills it in later. The classification still runs on duration, time of day, and any nearby geocoded category, so the stop is never left uncategorised just because its label lagged.

Known limitations

Detecting that a truck stopped is robust; explaining why is only as good as the map and the evidence around it.

  • Reason classification is bounded by waypoint curation and geocoder coverage. The most specific answers come from an operator-curated waypoint or usable geocoded place metadata. Outside a curated waypoint and in a poorly-mapped stretch, the engine has only duration, time-of-day, and a coincident refuel to work from — enough to name a rest, a meal, or a breakdown, but not enough to pinpoint every stop.
  • "Unknown" is a deliberate outcome. Classification is deterministic and never guesses: a stop the rules cannot place stays unknown rather than being assigned a plausible-but-unproven reason. That keeps the record honest at the cost of leaving some stops uncategorised.
  • Authorization is a property of nearby waypoint types. A stop is authorised when an appropriate waypoint type is close by; the engine cannot know a halt was sanctioned by the office if no waypoint expresses it. A fleet closes that gap by curating waypoints and attaching a rule set.

How it connects

  • A confirmed stop is the most common way a trip closes: Trips.
  • Waypoints, their types, and their footprints — the geometry classification leans on — are in Part 4 — The road network.
  • A refuel overlapping a stop, and its effect on both classification and fill confidence, is in Fuel.
  • The unauthorized-stop and prohibited-stop alerts, and how they reach people, are part of Part 6 — Fleet intelligence.