← Back to the feed
2026 · Automation / n8n

Solar State of Charge

One number, every hour, wherever I am.

Automation · n8n · Victron VRM · Telegram

A small scheduled workflow. It asks the Victron VRM API for the current battery state of charge, then sends it to a Telegram chat. Four nodes, no server to keep running.

The n8n canvas showing four connected nodes: Schedule Trigger, HTTP Request, Edit Fields and Send a text message
The workflow: hourly trigger, one API call, one field, one message. Open the full screenshot.

Why bother

The solar installation reports everything, but opening a monitoring dashboard for one number is more effort than it is worth. A message in a chat I already read answers the question without a new app or a login.

The four steps

  1. Schedule Trigger — runs the workflow every hour.
  2. HTTP Request — callsvrmapi.victronenergy.com/v2/installations/<id>/diagnosticswith an X-Authorization: Token … header.
  3. Edit Fields — picks the state of charge out of the response. VRM returns a long records array, so the field is read by index and renamed to Charge.
  4. Telegram — sends State of Charge: …with the charge value to a chat ID.

The only awkward part

The diagnostics endpoint returns every record for the installation, not a named object. There is no key to look up, so the node readsrecords[175] and takes its formattedValue. It works, but it is brittle: if Victron adds or reorders a record, the index moves and the message reports the wrong number.

The next version should find the record by its code or description instead of its position. The trigger also carries continue on regular output, so a failed API call does not stop the workflow.

Next automation: Bus 351 ↗