This Python script automates bandwidth simulation and logs telemetry from Starlink and Victron systems. It's tailored for off-grid performance testing, capturing system metrics alongside controlled browsing activity.
- ✅ Chrome bandwidth usage via
nettop - ✅ Starlink telemetry via gRPC (uptime, throughput, power)
- ✅ Victron SmartShunt data via Modbus TCP
- ✅ Simulated browsing, downloads, YouTube, and speed tests
- ✅ Optional screen recording via
ffmpeg - ✅ Logs to structured CSV including task feedback
- ✅ Uses
.envfor test setup, logging interval, etc.
- Python 3.9+
- macOS (uses
nettop,avfoundation) - Google Chrome + compatible
chromedriver - Starlink user terminal (Dishy) on local network
- Victron Cerbo with Modbus TCP enabled
pip install -r requirements.txt- Copy
.env.exampleand update it:
cp .env.example .env- Modify
.envto reflect your test configuration:TEST_NAMELOG_INTERVAL_SECONDS- Page URLs, download settings, Victron IP, etc.
Activate your environment and run:
python starlink_test_runner.py| Flag | Description |
|---|---|
--log_console |
Print log output to console |
--quiet |
Suppress screen output |
- CSV logs stored in
test_data/{TEST_NAME}:- Includes timestamps, Starlink, Victron, Chrome deltas, and task notes
- Optional screen recording (
.mov) ifffmpegis enabled
Timestamp, Starlink State, Starlink Uptime, Starlink Uplink (bps),
Starlink Downlink (bps), Starlink Power (W),
Chrome TX, Chrome RX,
Victron Voltage, Current, DC Power,
Task, Last Error
ffmpegmust be accessible via path (FFMPEG_PATH)- Ensure Modbus TCP is enabled in Victron Cerbo settings
- Starlink diagnostics require local network access to Dishy
MIT