IoT Mesh Network

Sensors report to a central gateway. Drag a device to relocate it, click a device to knock it out (dead battery) and watch the mesh reroute, click a flying packet to inspect its path.

Live Metrics

Delivered0
Lost0
Avg latency
Active devices–/–

Controls

Drag a device to move it • Click a device to disable/revive it • Click a packet mid-flight to inspect its route • Drag empty space / scroll to orbit & zoom.

How it works

Every alive device is a node in a graph; an edge exists between two nodes whose distance d ≤ range. Each send picks the lowest-cost route to the gateway with Dijkstra's algorithm, where the edge cost adds a penalty for line-of-sight obstacles crossed: cost = d + obstacles·3. Turn a device off and the graph loses that node — Dijkstra finds a fresh multi-hop path through the survivors on the very next send, which is the re-routing you see happen live.
Each hop then rolls for delivery. Loss probability grows with hop distance, obstruction and interference: P_loss = clamp(0.01 + (d/range)² · 0.25 + obstacles · 0.15 + interference · 0.3, 0, 0.9)
Per-hop travel time (shown as latency) is t = 150ms + d · 50ms · (1 + interference · 0.6), summed across every hop of the route — so a two-hop mesh detour genuinely costs more latency than a lucky direct shot, exactly like a real low-power wireless network.