Skip to content

Latest commit

 

History

History
98 lines (70 loc) · 3.06 KB

File metadata and controls

98 lines (70 loc) · 3.06 KB

ShipNetMonitor

Desktop internet-quality monitor for vessels using VSAT, Starlink, or mixed maritime connectivity.

ShipNetMonitor runs as a compact always-on-top widget or an expanded dashboard. It continuously checks latency, jitter, packet loss, DNS, HTTP reachability, and periodic speedtest results, then stores the voyage history in SQLite for charts and reports.

Features

  • Compact status widget for watchkeeping screens.
  • Expanded dashboard with live metric cards and history charts.
  • ICMP ping, HTTP HEAD, DNS resolution, and speedtest monitoring.
  • VSAT, Starlink, and generic threshold profiles.
  • Local SQLite history in data/shipnet.db.
  • CSV export and voyage report generation.
  • Dark/light themes and editable thresholds.

Requirements

  • Python 3.11+
  • Windows is the primary target.
  • macOS/Linux are supported for development and testing.

Quick Start

Windows:

run.bat

macOS/Linux:

./run.sh

The launchers create a local .venv, install dependencies from requirements.txt, and start the app.

Manual setup:

python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python shipnet.pyw

On Windows, use pythonw shipnet.pyw to run without a console window.

Configuration

Edit config.ini or use the Settings tab in expanded mode.

Important settings:

  • vessel_name and voyage label reports and exports.
  • connection_type selects vsat, starlink, or fallback thresholds.
  • ping_hosts, http_check, and dns_resolve define probe targets.
  • speedtest_interval_min = 0 disables speedtests.
  • Threshold sections control quality scoring for each connection profile.

The committed config.ini contains sample values only. No credentials are required.

Data And Privacy

  • Measurements are stored locally in SQLite.
  • The app does not upload reports or telemetry.
  • Network probes go only to the targets configured in config.ini.
  • Generated runtime data is ignored by Git.

Project Layout

.
├── shipnet.pyw              # Application entry point
├── run.bat                  # Windows launcher
├── run.sh                   # macOS/Linux launcher
├── config.ini               # Sample/default configuration
├── requirements.txt         # Python dependencies
├── assets/icon.ico
├── data/.gitkeep            # Runtime database directory
└── src/
    ├── app.py               # CustomTkinter GUI
    ├── monitor.py           # Ping, HTTP, DNS, speedtest workers
    ├── scheduler.py         # Background task scheduler
    ├── database.py          # SQLite persistence
    ├── reporter.py          # Voyage report generation
    ├── quality.py           # Quality scoring
    └── widgets/             # Dashboard widgets

Dependencies

Runtime dependencies are installed from PyPI and are not vendored in this repository. They include CustomTkinter, Matplotlib, Requests, Pandas, Schedule, and speedtest-cli, each under its own upstream license.

License

MIT License. See LICENSE.