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
3.9 KiB
3.9 KiB
Meteoblue Forecast for Venus OS
Fetches 7-day weather forecasts from the Meteoblue Forecast API and publishes them on D-Bus for display in the venus-html5-app dashboard.
Features
- 7-day forecast: wind speed, gusts, direction, precipitation, and waves
- Single API call combining basic, wind, and sea packages
- Automatic GPS position from Venus OS D-Bus
- Movement-aware refresh: 6 hours (stationary) / 3 hours (moving)
- Settings via MQTT or config file
- Persists across restarts and firmware updates
Prerequisites
- Venus OS device (Cerbo GX, Venus GX, Raspberry Pi)
- GPS source connected to Venus OS
- Meteoblue API key (register here)
Installation
-
Copy the package to the Venus OS device:
scp -r dbus-meteoblue-forecast root@<venus-ip>:/data/ -
SSH into the device and install:
ssh root@<venus-ip> chmod +x /data/dbus-meteoblue-forecast/install.sh /data/dbus-meteoblue-forecast/install.sh -
Configure your API key:
vi /data/dbus-meteoblue-forecast/forecast_config.jsonSet
"api_key"to your Meteoblue API key.
Configuration
Config file (recommended for initial setup)
Edit /data/dbus-meteoblue-forecast/forecast_config.json:
{
"api_key": "your-meteoblue-api-key"
}
MQTT
Publish to W/<vrm-id>/meteoblueforecast/0/Settings/ApiKey with {"value": "your-key"}.
D-Bus / MQTT Paths
| Path | Type | R/W | Description |
|---|---|---|---|
/Connected |
int | R | 1 when service is running |
/Status |
int | R | 0=Idle, 1=Fetching, 2=Ready, 3=Error |
/ErrorMessage |
string | R | Last error description |
/LastUpdate |
int | R | Unix timestamp of last fetch |
/NextUpdate |
int | R | Unix timestamp of next fetch |
/IsMoving |
int | R | 0=stationary, 1=moving |
/Forecast/Latitude |
float | R | Latitude used for forecast |
/Forecast/Longitude |
float | R | Longitude used for forecast |
/Forecast/Json |
string | R | JSON blob with forecast arrays |
/Settings/Enabled |
int | W | 0=disabled, 1=enabled |
/Settings/ApiKey |
string | W | Meteoblue API key |
/Settings/Units |
int | W | 0=Metric, 1=Imperial |
Forecast JSON Structure
The /Forecast/Json path contains a JSON string with the following arrays:
{
"ts": [1740268800000, ...],
"windspeed": [5.2, ...],
"winddirection": [180, ...],
"gust": [8.2, ...],
"precip": [0.0, ...],
"waves_height": [1.2, ...],
"waves_period": [6.0, ...],
"waves_direction": [180, ...]
}
ts: Timestamps in milliseconds since epoch (UTC)windspeed: Wind speed in m/s (10m above ground)winddirection: Wind direction in degreesgust: Wind gust speed in m/sprecip: Hourly precipitation in mmwaves_height: Significant wave height in meterswaves_period: Mean wave period in secondswaves_direction: Mean wave direction in degrees
Wind speed in knots = windspeed * 1.94384
Service Management
# Check status
svstat /service/dbus-meteoblue-forecast
# View logs
tail -F /var/log/dbus-meteoblue-forecast/current | tai64nlocal
# Restart service
svc -t /service/dbus-meteoblue-forecast
# Stop service
svc -d /service/dbus-meteoblue-forecast
Uninstall
chmod +x /data/dbus-meteoblue-forecast/uninstall.sh
/data/dbus-meteoblue-forecast/uninstall.sh
API Details
Uses the Meteoblue Forecast API:
- Endpoint:
GET https://my.meteoblue.com/packages/basic-1h_wind-1h_sea-1h - basic-1h: windspeed, winddirection, precipitation (hourly, 7-day)
- wind-1h: windgusts (hourly, 7-day)
- sea-1h: wave height, period, direction (hourly, valid 20km+ offshore)
- Rate limit: 500 calls/minute (default)