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 V6 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 V6 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 V6 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 V6 saves ~89% of transmissions with 100% delivery on this 10-node network.