Back to news
Solar Monitor Setup

Solar Monitor Setup

By Jared Wolff 4 min read
solar eg4 raspberry-pi rust monitoring

Solar Monitor is an open-source monitoring service for the EG4 6000XP. It communicates with the inverter over Modbus RTU using an RS485 connection, serves a browser-based dashboard, and supports configurable settings and notifications.

I run it on a Raspberry Pi 4 mounted next to the inverter. This guide walks through the complete setup: wiring the USB-to-RS485 adapter, connecting it to the inverter, installing the service, adding the device, and configuring notifications.

The project is open source under GPLv3 and available at github.com/circuitdojo/solar-monitor.

What you’ll need

  • EG4 6000XP
  • Raspberry Pi 4 (the system used in this guide)
  • Waveshare USB to RS485 converter (Amazon link)
  • Cat5e or Cat6 cable + RJ45 connectors
  • RJ45 crimping tool (Klein Tools VDV226-110 or similar)

Hookup Guide

The RS485 connection between your Pi and the inverter uses three wires. The Waveshare USB adapter exposes them as a screw terminal:

Adapter terminalWire (T568B)
B-Brown/White
A+Brown
GNDGreen

Waveshare USB to RS485 adapter with screw terminals wired

I mounted the Raspberry Pi on the wall within reach of the EG4 6000XP:

Raspberry Pi mounted on the wall next to the inverter

On the connector side, the cable is crimped in standard T568B format. I used Cat6e here, but Cat5 works just as well:

RJ45 connector crimped in T568B order

Some crimping tools have the wiring diagram printed on a sticker — like this Klein Tools unit:

Klein Tools crimper with T568A/T568B wiring sticker

The connector plugs into the CT1 port on the inverter (top left). The bottom-left port is for battery BMS communication — don’t confuse the two.

Inverter comms bay with the RS485 cable plugged into the top-left CT1 port

If you have a dongle installed in the CT1 port, remove it before connecting the cable. Once the cable is seated, put the cover back on the inverter. If it’s running, take care not to bump the breakers while re-fitting the cover.

Software Setup

Download a binary

The easiest path is downloading a pre-compiled binary from the Releases page. On a Raspberry Pi, choose the aarch64 build:

tar xzf solar-monitor-v*-aarch64-unknown-linux-gnu.tar.gz
sudo cp solar-monitor /usr/local/bin/

(The binary must live outside /home — the systemd service uses ProtectHome=true.)

Build from source

If you’d rather build from source, clone the repo and build with the embedded web UI:

git clone https://github.com/circuitdojo/solar-monitor.git
cd solar-monitor
(cd web && npm ci && npm run build)
cargo build --release -p solar-monitor --features solar-monitor-api/embed-frontend
sudo cp target/release/solar-monitor /usr/local/bin/

Install the system service

Once the binary is in place, install the systemd service with a single command:

sudo solar-monitor --install

This configures the service to start on boot, with the SQLite database stored at /var/lib/solar-monitor/solar.db. No further setup is required.

Using Solar Monitor

The service listens on port 8080 by default. Navigate to it in your browser:

http://<RPi IP ADDR>:8080

Add a device

Head to the Devices page and click Add Device:

Devices page showing the Add Device button

Add Device dialog with name and serial port fields

Give the inverter a name and select the serial port for your RS485 adapter (typically /dev/ttyUSB0). Solar Monitor follows the adapter’s serial number, so if you unplug it and plug it back in, the connection resumes automatically.

Dashboard

Jump to the Dashboard and you should see live data streaming in — load power, battery state, grid status, and PV production if you have panels connected:

Dashboard showing load, battery, and grid data

All data is polled from the inverter over Modbus RTU and stored locally in SQLite. The dashboard updates in real time via WebSocket.

Changing settings

Most of the 6000XP’s configurable parameters can be changed from the Settings page:

Settings page with inverter parameter controls

Hardware-risky settings — backup output voltage and frequency, charge voltage, equalization voltage, and inverter standby — show a confirmation dialog before writing. Proceed carefully and verify any change against your inverter’s documentation. We take no liability for damaged equipment.

Notifications

The 6000XP has no native way to alert you when the battery is low or the grid goes down. Solar Monitor fills that gap. Configure a notification channel under Notifications — it supports Pushover, ntfy, email, and generic webhooks:

Notifications page with a Pushover channel and alert rules

Once a channel is set up, create rules for the conditions you care about. The setup shown here includes rules for a low battery and for changes to the grid’s up/down state.

What’s next

Solar Monitor is still a work in progress. It was built to be expanded to other inverters, batteries, and related equipment.

Everything is open source under GPLv3, and contributions from the community are welcome over on GitHub. Happy solar invertering!

Last updated July 16, 2026.