The Reverse Matchpoints Algorithm tracks location with no network coverage of any kind — no WiFi, no cellular, no cabling to the asset — and synchronises the stored history when a connection becomes available.
Positions are recorded continuously while the device is offline. Nothing is lost between contacts, and no infrastructure has to reach the asset for tracking to work. This is the operating mode for underground mines, tunnels and remote sites where network coverage does not exist along the route.
Conventional RTLS places fixed anchors in the infrastructure and tags on assets, and requires those anchors to be powered and networked. RMA inverts the arrangement:
LocatorID and no separate tag identity.RMA is implemented on the Smart Lamp Locator, the Vehicle Anchor and Locator Lite XT.
A matchpoint is a virtual reference point placed on the map in the web portal. Matchpoints are positioned to correspond to known fixed points in the real site — for example survey pegs in an underground mine, shaft stations, intersections, or equipment bays.
Raw RTLS observations are noisy and do not land on a meaningful coordinate. RMA approximates the raw data to the nearest matchpoints, so a position is reported as a location an operator already recognises and can act on, rather than as an approximate coordinate that has to be interpreted.
On the wire, a record identifies the pair of reference points the asset is between, by beacon identifier, and when it was observed:
MatchPoint {
beacon_a // reference point most recently passed
beacon_b // reference point now approaching
timestamp_s // when the observation was made
}
The portal resolves those identifiers to the matchpoints configured on its map, so an operator sees named site locations — survey peg numbers, stations, bays — rather than raw beacon identifiers.
The record carries no coordinate. Position is expressed against the site's own reference points, so no distance is interpolated from signal strength and no accuracy is implied that the measurement does not support.
Matchpoints accumulate on the device and are transferred through the GATT Data Sync drain when a reader appears:
{"cmd":"count","type":"match_points"} -> {"count":N}
{"cmd":"records","type":"match_points"} -> protobuf chunk
On reverse-RTLS devices match_points is the store selected when a command omits type; sensor and gnss are recognised and refused rather than answered from the wrong store. Chunks use the mach_point.proto schema (MatchPoint, MatchPointChunk).
Records are erased only after the response has been read to its end, so a handover interrupted by an asset moving out of range leaves the history intact for the next contact.
Once synchronised, matchpoints reach the backend over MQTT in the {prefix}/Locators/{LocatorID}/ tree, under the device's own ID. Live positions go to RTLS and buffered ones to BufferedData:
{"MessageID":42,"LocatorID":"LXT0042","DeviceType":"bler",
"ArrSize":12,"CurrIndex":3,
"WB0":1041,"WB1":1042,"vBat0":3910,"vBat1":3905,
"TimePos":1755262798,"Mode":"Eco","Lamp_Status":"ONLINE",
"Timestamp":1755262800123}
WB0 and WB1 are the observed beacon pair. TimePos dates the observation — which for buffered records may be long before delivery — while Timestamp is publication time. A consumer ordering an offline device's history uses TimePos.
DeviceType is bler for positions produced this way, distinguishing them from the uwb and uwb2 sources described in MQTT.