Install
openclaw skills install boat-daily-checkMonitor Victron Energy power systems and generate beautiful daily email reports with battery status, solar generation, and active alarms. Integrates with Vic...
openclaw skills install boat-daily-checkMonitor your Victron power systems with automated daily reports. Fetch real-time battery state of charge, voltage, current, solar generation, and active alarms from the Victron VRM API, then deliver beautifully formatted HTML emails showing status of all your installations.
This skill:
Each morning, a clean HTML email with:
Each Victron system has an installation ID visible in the VRM URL:
https://vrm.victronenergy.com/installation/000000/dashboard
^^^^^^
Installation ID
The skill uses the SmartShunt (battery monitor) to fetch battery data. Find its instance number:
279 (adjust if yours differs)Edit the Python script with your details:
vim /home/jeanclaude/.openclaw/workspace/skills/boat-daily-check/scripts/boat-email-report.py
Update these variables:
VRM_TOKEN = "your-token-here"
INSTALLATIONS = {
"boat1": {
"id": 000000, # Your installation ID
"name": "Titanic", # Display name
"batteryInstance": 279, # SmartShunt instance number
},
"boat2": {
"id": 000001,
"name": "Endeavour",
"batteryInstance": 279,
}
}
python3 /home/jeanclaude/.openclaw/workspace/skills/boat-daily-check/scripts/boat-email-report.py
This generates:
out/boat-daily-email.htmlout/boat-status.jsonout/boat-status.csvAdd to your morning email report (or standalone):
openclaw cron add -j '{
"name": "boat-daily-check",
"schedule": {"kind": "cron", "expr": "0 7 * * *", "tz": "America/Los_Angeles"},
"payload": {
"kind": "agentTurn",
"message": "Run boat power system check: python3 /path/to/boat-email-report.py"
},
"delivery": {"mode": "announce"},
"sessionTarget": "isolated"
}'
Or embed in an existing job to include boat status with fishing/weather reports.
The skill queries the Victron VRM API v2:
GET /v2/installations/{id}/widgets/BatterySummary/latest?instance={instance}
Returns: SOC%, voltage, current, temperature, time to go, and alarm states.
GET /v2/installations/{id}/diagnostics
Returns: All device metadata including solar charger power, inverter status, etc.
GET /v2/installations/{id}/alarms?limit=10
Returns: Active alarms with details and device information.
Authentication: All requests use X-Authorization: Token {your-token}
Rate Limits: VRM API has reasonable rate limits (~10 req/sec). The daily script respects these.
boat-daily-check/
├── SKILL.md (this file)
├── scripts/
│ └── boat-email-report.py # Main data collection + HTML generation
├── references/
│ ├── victron_attributes.md # Victron attribute code reference
│ └── vrm_api_guide.md # VRM API quick reference
├── out/
│ ├── boat-daily-email.html # Generated email (latest run)
│ ├── boat-status.json # JSON data export
│ └── boat-status.csv # CSV export
└── templates/ (optional)
└── boat-email-template.html # Email template (customizable)
Edit boat-email-report.py and modify the email sending logic:
# Change recipient email
recipients = ["your-email@example.com"]
The email template uses Handlebars-style placeholders. Edit the HTML section in the Python script:
html = html.replace("{{pitterPatter.battery.soc}}", f"{value}%")
Or create a custom template file and modify the script to load it.
Add entries to the INSTALLATIONS dict:
"boat3": {
"id": 999999,
"name": "My Third Boat",
"batteryInstance": 279,
}
Then update the report generation logic to include your new installation.
Pick different metrics from the Victron widget response. Edit the battery data extraction:
def fetch_battery_data(installation_id, instance):
# Returns: soc, voltage, current, temp
# Add fields like: time_to_go, mid_voltage, etc.
python3 boat-email-report.py manually to debug"delivery": {"mode": "announce"}requests library (pip install requests)python3 boat-email-report.pyThis skill is open source. Feel free to fork, modify, and share!