Organizes 11 projects for Cerbo GX/Venus OS into a single repository: - axiom-nmea: Raymarine LightHouse protocol decoder - dbus-generator-ramp: Generator current ramp controller - dbus-lightning: Blitzortung lightning monitor - dbus-meteoblue-forecast: Meteoblue weather forecast - dbus-no-foreign-land: noforeignland.com tracking - dbus-tides: Tide prediction from depth + harmonics - dbus-vrm-history: VRM cloud history proxy - dbus-windy-station: Windy.com weather upload - mfd-custom-app: MFD app deployment package - venus-html5-app: Custom Victron HTML5 app fork - watermaker: Watermaker PLC control UI Adds root README, .gitignore, project template, and per-project .gitignore files. Sensitive config files excluded via .gitignore with .example templates provided. Made-with: Cursor
Venus OS Boat Addons
Custom addons for a Cerbo GX running Venus OS on a sailboat. These services extend the system with weather monitoring, tide prediction, navigation tracking, generator management, and custom MFD displays.
All D-Bus services follow the same deployment pattern: build a .tar.gz package, copy it to /data/ on the Cerbo GX, and run install.sh. Services are managed by daemontools and survive firmware updates via rc.local.
Projects
| Project | Type | Language | Description |
|---|---|---|---|
| axiom-nmea | Library + Service | Python | Decodes Raymarine LightHouse protobuf multicast into NMEA 0183 sentences and Venus OS D-Bus services. Includes protocol documentation, debug tools, and a deployable D-Bus publisher. |
| dbus-generator-ramp | D-Bus Service | Python | Gradually ramps inverter/charger input current when running on generator to avoid overload. Features warm-up hold, overload detection with fast recovery, and a persistent power correlation learning model. |
| dbus-lightning | D-Bus Service | Python | Monitors real-time lightning strikes from the Blitzortung network via WebSocket. Filters by distance, analyzes storm approach speed, and estimates ETA. |
| dbus-meteoblue-forecast | D-Bus Service | Python | Fetches 7-day weather forecasts from the Meteoblue API (wind, waves, precipitation, temperature). Adjusts refresh rate based on boat movement. |
| dbus-no-foreign-land | D-Bus Service | Python | Sends GPS position and track data to noforeignland.com. Includes a QML settings page for the Venus OS GUI. |
| dbus-tides | D-Bus Service | Python | Predicts tides by combining depth sensor readings with harmonic tidal models (NOAA stations and coastal grid). Records depth history in SQLite, detects high/low tides, and calibrates to chart depth. |
| dbus-vrm-history | D-Bus Service | Python | Proxies historical data from the VRM cloud API and exposes it on D-Bus/MQTT for the frontend dashboard. |
| dbus-windy-station | D-Bus Service | Python | Uploads weather observations from Raymarine sensors to Windy.com Stations API. Supports both legacy and v2 Venus OS GUI plugins. |
| mfd-custom-app | Deployment Package | Shell | Builds and deploys the custom HTML5 app to the Cerbo GX. Overrides the stock Victron app with custom pages served via nginx. Supports SSH and USB installation. |
| venus-html5-app | Frontend App | TypeScript/React | Fork of the Victron Venus HTML5 app with custom Marine2 views for weather, tides, tracking, generator status, and mooring. Displayed on Raymarine Axiom and other MFDs. |
| watermaker | UI + API Docs | React/JS | Control interface for a watermaker PLC system. React SPA with REST/WebSocket/MQTT integration. Backend runs on a separate PLC controller. |
Common D-Bus Service Structure
All Python D-Bus services share this layout:
dbus-<name>/
├── <name>.py # Main service entry point
├── config.py # Configuration constants
├── service/
│ ├── run # daemontools entry point
│ └── log/run # multilog configuration
├── install.sh # Venus OS installation
├── uninstall.sh # Cleanup
├── build-package.sh # Creates deployable .tar.gz
└── README.md
At install time, install.sh symlinks velib_python from /opt/victronenergy/, registers the service with daemontools, and adds an rc.local entry for persistence across firmware updates.
Deployment
# Build a package
cd dbus-<name>
./build-package.sh
# Copy to Cerbo GX
scp dbus-<name>-*.tar.gz root@<cerbo-ip>:/data/
# Install on device
ssh root@<cerbo-ip>
cd /data && tar -xzf dbus-<name>-*.tar.gz
bash /data/dbus-<name>/install.sh
# Check service status
svstat /service/dbus-<name>
tail -f /var/log/dbus-<name>/current | tai64nlocal
Development Prerequisites
- Python 3.8+ -- for all D-Bus services
- Node.js 20+ and npm -- for venus-html5-app and watermaker UI
- SSH/root access to the Cerbo GX
- Venus OS v3.10+ on the target device
Sensitive Configuration
Some projects require API keys or credentials. These are excluded from version control. Copy the example templates and fill in your values:
dbus-meteoblue-forecast/forecast_config.example.json-->forecast_config.jsondbus-windy-station/station_config.example.json-->station_config.jsonwatermaker/ui/.env.example-->.env
New Project Template
See _template/ for a skeleton D-Bus service with all the boilerplate: main script, config, daemontools service, install/uninstall scripts, and build packaging.