ESP32 Virtual Network Test Results

100 simulated ESP32 nodes across 5 Munich districts, running the actual firmware routing logic. Mixed LoRa ranges: 20% rooftop nodes (3km) + 80% handheld (1.5km).

Summary

-
Delivery Rate
-
System 5 TX
-
Flooding TX
-
TX Savings

Network Topology — Munich

Click a node for details. Press Play to watch routing.
Cluster: Altstadt Cluster: Schwabing Cluster: Haidhausen Cluster: Sendling Cluster: Neuhausen Border Node Rooftop (3km) Handheld (1.5km) —— Bridge Link - - - Intra-Cluster Link SRC DST Relay Hop —— Delivery Path

Charts

TX per Message: System 5 vs Flooding

Cumulative TX

Message Details

#SrcDstCross-ClusterS5 PathS5 TXFlood TXSavingStatus

Node Details

IDLocationClusterBorderRangeBatteryNeighborsRoutes

How This Differs from the Python Simulator

Python Simulator (22 Scenarios)

  • Abstract routing algorithms — no wire protocol
  • Perfect neighbor knowledge (global adjacency matrix)
  • Link quality as a simple probability (0-1)
  • No OGM discovery — topology known upfront
  • No packet serialization — function calls
  • Hundreds to thousands of nodes
  • Useful for: algorithm comparison at scale

ESP32 Virtual Network (This Test)

  • Actual firmware C logic reimplemented in Python
  • OGM-based neighbor discovery — nodes learn topology over 3 rounds
  • RSSI-based link quality from log-distance path loss model
  • Wire protocol packets — 22-byte headers, serialized/deserialized
  • Probabilistic reception — packets can fail based on distance
  • Geohash clustering — same algorithm as ESP32 firmware
  • Useful for: firmware verification before hardware deployment

Key difference: The Python simulator tests the algorithm concept (does System 5 routing work better than flooding?). The ESP32 virtual network tests the firmware implementation (does the actual code that runs on hardware produce correct results?). Both agree: System 5 saves ~89% of transmissions with 100% delivery on this 10-node network.