Skip to content

DoctorYanmar/ShipNetMonitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Desktop internet quality monitor for maritime VSAT and Starlink links

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors