UDP-based IoT telemetry protocol.
# Ubuntu/Debian
sudo apt install iproute2 tcpdump
# Arch Linux
sudo pacman -S iproute2 tcpdumppip install -r requirements.txtReceives data from sensors and logs to CSV.
python3 collector.py --port 8787 --csv results/data.csvOptions:
--port- UDP port to listen on (default: 8787)--csv- Output CSV file path
Simulates an IoT sensor sending temperature/humidity readings.
python3 sensor.py --port 8787 --device-id 0x0101Options:
--device-id- Device ID in hex (default: 0x0101)--port- Server port (default: 8787)--host- Server address (default: localhost)--collect-interval- Seconds between collecting readings (default: 1.0)--send-interval- Seconds between sending batches (default: 5.0)--enable-ack- Wait for server acknowledgment
Examples:
# Collect every 0.5s, send every 10s (batch of 20 readings)
python3 sensor.py --port 8787 --collect-interval 0.5 --send-interval 10 --heartbeat-interval 1
# With acknowledgments enabled
python3 sensor.py --port 8787 --enable-ack
# Multiple sensors
python3 sensor.py --port 8787 --device-id 0x0101
python3 sensor.py --port 8787 --device-id 0x0102Runs 16 predefined experiments with different configurations.
python3 run_experiments.pyOptions:
--experiments 1 2 3- Run specific experiments only--duration 60- Set experiment duration in seconds
Output: results/experiments_YYYYMMDD_HHMMSS/
Runs comprehensive tests: scalability, packet loss, latency, stress tests.
python3 run_phase2_tests.pyOutput: results/phase2_YYYYMMDD_HHMMSS/
All results go to results/ folder:
| File/Folder | Description |
|---|---|
data.csv |
Server logs from manual runs |
experiments_*/ |
Results from run_experiments.py |
phase2_*/ |
Results from run_phase2_tests.py |
Simulate packet loss or delay:
# 5% packet loss
sudo tc qdisc add dev lo root netem loss 5%
# 100ms delay
sudo tc qdisc add dev lo root netem delay 100ms
# Remove simulation
sudo tc qdisc del dev lo root