Omniksol solar inverter
ESP32 | Omniksol Solar PV to MQTT Gateway
Nov 28, 2017

Local ESP32 bridge from Omniksol inverter telemetry to MQTT with OLED status.

In 2017 I replaced my Soladin 600 with an Omniksol inverter. The official Omniksol setup works with a WiFi module and cloud portal, but I wanted a local, low-latency setup under my own control.

With a 602-series WiFi module, the inverter can be queried directly over TCP port 8899, so there is no hard dependency on the vendor cloud.

Project goal

The goal was simple:

  • read inverter telemetry locally
  • publish measurements to MQTT
  • show key stats on-device
  • keep everything stable enough to run unattended

I first did this with a Raspberry Pi and a modified Python script. Later, after finding a C implementation of the same protocol, I ported the full flow to an ESP32.

Omniksol protocol in practice

The WiFi module responds to a binary request frame. A typical frame looks like this:

{0x68, 0x02, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x16}

The payload must be personalized with your inverter serial data. Once that request is correct, you can poll live operating values directly from the module.

Why move from Raspberry Pi to ESP32

The Pi setup worked, but ESP32 gave me a compact all-in-one node:

  • lower power footprint
  • fewer moving parts
  • integrated WiFi
  • OLED support for local status

That makes it easy to install near the inverter and run it as a dedicated telemetry bridge.

MQTT integration

The bridge publishes inverter metrics to MQTT, so other systems can consume them (for dashboards, automations, or historical storage).

Typical use cases:

  • daily production tracking
  • current output and status monitoring
  • alerts when output drops unexpectedly

Local display

The ESP32 build also drives a small OLED display so you can read important stats at a glance without opening any dashboard.

Practical notes

If you build this yourself, check these points first:

  • confirm you have a compatible 602-series WiFi module
  • verify inverter serial handling in the request frame
  • keep reconnect/retry logic robust for long-running uptime
  • validate parsed values before publishing to MQTT

Video

If this kind of build is useful, you can subscribe to my YouTube channel.

Resources