← Back to Skills Marketplace
lkilpatrick

Victron Power System Monitor - Boat, RV and Power Systems

by Luke Kilpatrick · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
265
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install boat-daily-check
Description
Monitor Victron Energy power systems and generate beautiful daily email reports with battery status, solar generation, and active alarms. Integrates with Vic...
README (SKILL.md)

Boat Daily Check — Victron VRM API Monitor

Monitor 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.

Overview

This skill:

  • 📊 Fetches live power system metrics from Victron VRM API
  • 📧 Generates professional HTML email reports
  • ⚓ Supports multiple installations (boats, RVs, homes)
  • 🎨 Beautiful, responsive email design
  • 🔄 Integrates seamlessly with OpenClaw cron jobs
  • 📱 Mobile-friendly HTML output

What You'll Get

Each morning, a clean HTML email with:

  • Battery Status: SOC %, voltage, current, temperature
  • Solar Data: Power, today's yield, max charge, PV voltage
  • Inverter/AC Info: Input voltage, status (for grid/shore power)
  • Active Alarms: Real-time alerts from your system
  • Hardware Status: Gateway version, last contact time
  • Dashboard Links: Direct links to VRM dashboards for quick access

Setup

1. Get Your Victron VRM API Token

  1. Visit https://vrm.victronenergy.com/access-tokens
  2. Create a new access token
  3. Copy the token (you'll need this for configuration)

2. Find Your Installation IDs

Each Victron system has an installation ID visible in the VRM URL:

https://vrm.victronenergy.com/installation/000000/dashboard
                                         ^^^^^^
                                    Installation ID

3. Identify Your SmartShunt Instance

The skill uses the SmartShunt (battery monitor) to fetch battery data. Find its instance number:

  • Check your VRM diagnostics or alarms endpoint
  • Default instance is usually 279 (adjust if yours differs)

4. Configure Your Installation

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,
    }
}

Usage

Generate a Report Now

python3 /home/jeanclaude/.openclaw/workspace/skills/boat-daily-check/scripts/boat-email-report.py

This generates:

  • HTML Email: out/boat-daily-email.html
  • JSON Data: out/boat-status.json
  • CSV Export: out/boat-status.csv

Integrate with OpenClaw Cron

Add 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.

API Reference

The skill queries the Victron VRM API v2:

Endpoint: Battery Summary

GET /v2/installations/{id}/widgets/BatterySummary/latest?instance={instance}

Returns: SOC%, voltage, current, temperature, time to go, and alarm states.

Endpoint: Diagnostics

GET /v2/installations/{id}/diagnostics

Returns: All device metadata including solar charger power, inverter status, etc.

Endpoint: Alarms

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.

Files

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)

Customization

Change Email Recipients

Edit boat-email-report.py and modify the email sending logic:

# Change recipient email
recipients = ["[email protected]"]

Customize HTML Template

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 More Installations

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.

Modify Metric Selection

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.

Troubleshooting

"Child 'BatterySummary' not found"

  • Check that your installation ID is correct
  • Verify the SmartShunt instance number

Missing solar/inverter data

  • Run python3 boat-email-report.py manually to debug
  • Check the JSON output for missing fields
  • Verify your devices are online in VRM

Email not sending

  • Ensure OpenClaw cron job is enabled
  • Check delivery mode: "delivery": {"mode": "announce"}
  • Verify recipient email is correct

Empty data in email

  • Check VRM API token is valid
  • Confirm installation IDs are correct
  • Verify SmartShunt instance number

Performance

  • Data fetch time: ~5-10 seconds (3 API calls per installation)
  • HTML generation: ~1 second
  • Email delivery: Handled by OpenClaw (async)
  • Total execution: \x3C30 seconds for 2 installations

Requirements

  • Python 3.7+
  • requests library (pip install requests)
  • Victron VRM API token with read access
  • OpenClaw cron job support (for scheduling)

Limitations

  • VRM API has ~10 req/sec rate limit
  • Historical data not available (only latest values)
  • Some widget types not yet supported (add via custom implementation)
  • Email delivery depends on OpenClaw email infrastructure

Next Steps

  1. ✅ Get your VRM API token
  2. ✅ Find your installation IDs and battery instance numbers
  3. ✅ Update the Python script with your details
  4. ✅ Test with: python3 boat-email-report.py
  5. ✅ Set up a cron job for daily automated reports

Support & Contributions

License

This skill is open source. Feel free to fork, modify, and share!

Usage Guidance
This skill mostly does what it says (calls Victron VRM API and renders HTML), but several things don't add up and you should clear them before installing or automating it: 1) The code expects a VRM API token (VRM_TOKEN) even though the package metadata declares none — only provide a token with read-only scope and do not paste it into public places. 2) The documentation claims the skill 'sends' emails, but the included Python script appears to only generate local files (out/*.html, .json, .csv) and contains no email-sending code — if you need automatic emailing, review/add safe email delivery (SMTP or service) and ensure secrets (SMTP passwords, API keys) are handled securely. 3) There are inconsistent env-var names across files (VRM_TOKEN vs VRM_API_KEY); standardize on one and use environment variables rather than hard-coding secrets. 4) The Python script appears truncated/buggy (references to undefined variables like 'pg_data', an incomplete 'generate' call) — run the script locally in a safe environment, review and fix the code, and test with a throwaway token before automating. 5) The docs point at a hard-coded user path (/home/jeanclaude/...) — update paths to suit your environment. 6) Install dependencies yourself (pip install -r requirements.txt) and review all code for any unexpected network calls before adding to cron. If you want help pinpointing the exact code fixes (email sending, undefined variables), I can inspect the full script and suggest concrete changes.
Capability Analysis
Type: OpenClaw Skill Name: boat-daily-check Version: 1.0.0 The skill bundle is a legitimate utility for monitoring Victron Energy power systems via the official VRM API (vrmapi.victronenergy.com). While the main script (boat-email-report.py) contains several functional bugs—including a NameError (pg_data), mismatched regex patterns for HTML template manipulation, and hardcoded user paths (/home/jeanclaude/)—these appear to be unintentional artifacts of a specific development environment rather than evidence of malice. The script's behavior is consistent with its documentation, and it lacks indicators of data exfiltration, unauthorized remote control, or prompt injection.
Capability Assessment
Purpose & Capability
The skill's stated purpose (fetch VRM metrics and send daily HTML emails) mostly matches the contained code (it queries the VRM API and generates HTML), but the package repeatedly claims it 'sends' emails while the provided Python code only generates local output (HTML/JSON/CSV) and contains no email-sending implementation. The README/SKILL.md also reference editing email recipients in the script, yet the script does not include sending logic. This mismatch between claimed capability and actual implementation is concerning.
Instruction Scope
Runtime instructions expect a VRM API token and tell users to edit a script at a hard-coded user path (e.g., /home/jeanclaude/...), and to run the Python script or add it to cron. The SKILL.md and other docs instruct setting environment variables (VRM_TOKEN) but the skill metadata declares no required env vars. The documentation also inconsistently refers to VRM_TOKEN and VRM_API_KEY. The script only talks to the VRM API (no external endpoints), which is appropriate, but the instructions give the agent broad discretion to edit and run local scripts and reference a specific username/path — odd but not necessarily malicious.
Install Mechanism
There is no install spec (instruction-only install) and included requirements.txt only requests 'requests'. This is low risk from an installer perspective, but because there is no automated install step, users must manually ensure dependencies (pip install -r requirements.txt).
Credentials
The only sensitive credential the code needs is a Victron VRM token, which is proportionate to the stated purpose. However: (1) the registry metadata claims no required env vars while SKILL.md and code expect VRM_TOKEN (and another file references VRM_API_KEY) — an inconsistency that could cause misconfiguration or accidental exposure; (2) the skill asks users to paste their token into the script or environment, so users should treat the token like a secret. No other unrelated credentials are requested.
Persistence & Privilege
always is false, it is user-invocable and model-invocation is not disabled (normal). The skill does not request persistent platform privileges or attempt to modify other skills. There is no install step that writes to system locations beyond the user's skill workspace.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install boat-daily-check
  3. After installation, invoke the skill by name or use /boat-daily-check
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
- Initial release of the boat-daily-check skill. - Fetches real-time battery, solar, inverter, and alarm data from Victron VRM API for multiple installations. - Generates beautiful, mobile-friendly HTML email reports each morning. - Includes configurable report generation, CSV/JSON exports, and easy integration with OpenClaw cron jobs. - Provides step-by-step setup instructions and troubleshooting tips.
Metadata
Slug boat-daily-check
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Victron Power System Monitor - Boat, RV and Power Systems?

Monitor Victron Energy power systems and generate beautiful daily email reports with battery status, solar generation, and active alarms. Integrates with Vic... It is an AI Agent Skill for Claude Code / OpenClaw, with 265 downloads so far.

How do I install Victron Power System Monitor - Boat, RV and Power Systems?

Run "/install boat-daily-check" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Victron Power System Monitor - Boat, RV and Power Systems free?

Yes, Victron Power System Monitor - Boat, RV and Power Systems is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Victron Power System Monitor - Boat, RV and Power Systems support?

Victron Power System Monitor - Boat, RV and Power Systems is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Victron Power System Monitor - Boat, RV and Power Systems?

It is built and maintained by Luke Kilpatrick (@lkilpatrick); the current version is v1.0.0.

💬 Comments