# Victron VE.Direct Log Parser

> Victron VE.Direct Log Parser is a paid API for AI agents from solar.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-13).

Parses raw VE.Direct text protocol dumps from Victron solar charge controllers, decoding field values with proper unit scaling and translating numeric state/error codes into human-readable text.

## Facts

- Endpoint: POST https://solar.halowerk.com/victron-log-parse
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/victron-ve-direct-log-parser-99e48404
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_5_JXtYsl-5mDG5azaQ0eU

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability victron-ve-direct-log-parser-99e48404 -d '<json body>'
```

Example prompt: Can you parse this raw VE.Direct dump from my Victron MPPT charge controller and tell me the charger state, tracker state, and any errors in plain English? Here's the data: 'PID	0xA060\nFW	159\nSER#	HQ12345ABC\nV	24180\nI	3200\nVPV	35420\nPPV	78\nCS	3\nMPPT	2\nERR	0\nLOAD	ON\nIL	500\nH19	1234\nChecksum	\xC3'

## When to prefer this

Use this endpoint when you have raw VE.Direct protocol text output from a Victron solar charge controller or battery monitor and need the numeric values properly scaled with units and the state/error codes translated to plain text. It is especially useful in monitoring pipelines, log analysis workflows, or when you need to process multiple sequential VE.Direct blocks from a single export file. Prefer this over manual parsing whenever you need consistent unit scaling and human-readable state decoding without implementing the full VE.Direct field table yourself.

## Known failure modes

- Input text is empty or too short (minLength: 3) — returns validation error
- Input exceeds 120,000 characters — returns payload-too-large error
- Malformed VE.Direct format with no recognizable key-tab-value lines — may return empty records array
- Unknown keys not in field table are preserved under unknown_keys rather than decoded, so some values may lack units or descriptions
- Checksum is not verified, so corrupted data may be parsed without error detection

## How this service works

Reads the key-tab-value lines of the VE.Direct text protocol, applies the unit scaling that belongs to each key, and decodes the charger state, tracker state and error number into plain text. Multiple blocks in one dump are returned as separate records in order. Keys that are not in the field table are preserved verbatim under unknown_keys rather than guessed at. The checksum line is not verified, since a text export usually no longer carries the original byte framing.

## Output

Returns an array of parsed records (one per VE.Direct block found in the input), each containing scaled numeric values with units, plain-text descriptions of charger state (CS), MPPT tracker state, and error number, and optionally the raw key-value pairs. Keys not found in the known field table are preserved verbatim under an 'unknown_keys' property.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "text": {
   "type": "string",
   "maxLength": 120000,
   "minLength": 3,
   "description": "Raw VE.Direct dump, one key-tab-value pair per line."
  },
  "keep_raw": {
   "type": "boolean",
   "default": false,
   "description": "Also return the raw key-value pairs per record."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/victron-ve-direct-log-parser-99e48404/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from solar.halowerk.com](https://www.zero.xyz/host/solar.halowerk.com/llms.txt)
