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.