Inverter dongles and Bluetooth modules
Read an inverter through its Wi-Fi logger stick or its Bluetooth module.
Data sources
Find the right source for your inverter, battery and other devices.
Modbus
Read an inverter or charge controller over RS-485 or Modbus-TCP.
Many inverters come with a small Wi-Fi logger stick, or a Bluetooth module, that normally sends data to the manufacturer's app. The WiFi dongle source lets Epilykos read from it directly, over your network or through the computer's Bluetooth adapter, so there's no cable to run to the inverter.
Supported dongles
| Profile | How it connects | What you'll need |
|---|---|---|
| Deye / SunSynk Hybrid (Solarman V5), SRNE Hybrid Inverter (Solarman V5) | A Solarman stick, port 8899 | The stick's IP address and its serial number (on the sticker) |
| LuxPowerTek Generic Hybrid | A Wi-Fi dongle on port 8000, or Bluetooth | The dongle's IP address, plus the dongle serial and the inverter serial (10 characters each, from their labels); or the Bluetooth address |
| LuxPowerTek GETA 3.6kW 24V | Same as above | Use this instead of the generic profile for that model; it reads only the registers the 24 V single-MPPT unit has |
| Felicity Inverter (TCP/JSON) | Wi-Fi, port 53970 | The inverter's IP address |
| Growatt SPF Series (TCP Server) | The stick connects to Epilykos on port 5279 | Point the stick's server address at the computer running Epilykos |
| Phocos Any-Grid PSW-H (Bluetooth) | Bluetooth only | The Bluetooth address (use Scan) |
Set up a dongle
In Settings → Sources, add a WiFi dongle and give it a name.
Choose the Connection, either TCP/IP (Wi-Fi / LAN) or Bluetooth, and then the Profile. The list only shows profiles that work over the connection you chose; profiles that work only over Bluetooth are grouped separately.
Fill in what the profile needs (see the table above):
- For TCP/IP, enter the dongle's Host / IP Address and Port. It's worth giving the dongle a fixed address in your router so it doesn't change.
- For Bluetooth, press 🔍 Scan and pick the device, or type in its MAC address.
- Serial numbers: Solarman sticks need the Logger Serial Number, and LuxPower needs both the Dongle Serial and the Inverter Serial. Type them exactly as they appear on the labels; upper and lower case matter.
Press 📥 Load Profile Registers to fill in the readings, then keep or change the metric names. 📋 Fetch Profile Entities lists every register the profile knows about, and + Add Mapping adds a single row.
Press Test Connection to check that it reads, then Save changes.
Poll (s) sets how often the dongle is read: every 5 seconds by default for LuxPower over Wi-Fi, 15 seconds for LuxPower over Bluetooth, and 30 seconds for everything else. If one read is still going when the next one is due, the next one is skipped and a note is written to the log.
Metric Prefix (optional) is added to the start of every metric name from this dongle, which keeps things tidy when you have several inverters of the same kind.
Bluetooth modules
Some inverters come with a Bluetooth module that simply carries Modbus over Bluetooth, such as SRNE and Renogy-style BT modules. Set Connection to Bluetooth, pick the profile for your inverter, use 🔍 Scan to find the module, and test.
By default, Epilykos sends commands to the module on characteristic ffd1 and listens for answers on
fff1. If yours uses different ones, a Bluetooth explorer app such as nRF Connect will
show you the right ones; enter them under Write characteristic and Notify characteristic.
A few things to keep in mind:
- Many dongles that have both Wi-Fi and Bluetooth only use Bluetooth to set up Wi-Fi, and don't send live data over it.
- Dongles usually accept just one Bluetooth connection at a time, so close the manufacturer's app first.
- All Bluetooth devices share the computer's adapter and are read one after another, so allow about 10 seconds per device in their poll intervals.
LuxPower
LuxPower dongles connect over Wi-Fi (port 8000) or Bluetooth. Close the LuxCloud app before Epilykos connects, because the dongle may only let one client in at a time.
The card has three LuxPower options. Start with the defaults and only change them if you need to:
| Option | Default | Alternatives |
|---|---|---|
| Local Wi-Fi security | Plain TCP (existing dongles) | Require TLS-PSK; Try TLS, allow plain fallback |
| Bluetooth write strategy | Long write with response | Chunked without response (the way the LuxCloud app does it) |
| Local protocol | 5 | 2 |
If you have the LuxPowerTek GETA 3.6kW 24V, choose its own profile, which reads only what that 24 V single-MPPT model has. LuxPowerTek Generic Hybrid covers the other LuxPowerTek models.
The generic profile reads what the Home Assistant LuxPower integration reads: power, energy, battery and BMS values, the arc-fault (AFCI) readings, and the inverter's settings, from its grid connection and protection limits to its charging, discharging and export settings and battery alarms. Fetch the profile's entities on the dongle card and map the ones you want.
You can change the battery charge limits, the charging and discharging currents and power limits, export to the grid, the grid charging, charge-first and forced-discharge settings and their time windows, and the output priority from the Controls page.
Growatt
The Growatt profile works the other way round: instead of Epilykos asking for data, the stick sends it
to Epilykos about every 5 minutes. Open the stick's web page and change its server address from
server.growatt.com to the address of the computer running Epilykos. Epilykos listens for it on port
5279 (the Port field on the card).
On Docker, open port 5279
The stick can only reach Epilykos on Docker if port 5279 is published. Add it under ports: in the
compose file and run docker compose up -d:
ports:
- "3000:3000"
- "5279:5279"EpilykosOS uses host networking, so it needs nothing extra.
Phocos Any-Grid over Bluetooth
Phocos Any-Grid PSW-H inverters can be read over Bluetooth without pairing. Epilykos picks up their live values, ratings, identity and settings, and it can change a set of settings that are known to be safe from the Controls page. Every change is read first, compared, written, and then read back to confirm it.
This profile was worked out by studying the PhocosLink 2.1.4 app; it hasn't yet been checked against a real unit. So that you know how much to trust each reading, every field is labelled:
| Label | What it means |
|---|---|
app_confirmed | The app shows it the same way: grid and output voltage, load, battery voltage, SOC, charge and discharge current, PV voltage and power, mode, identity, ratings and settings. |
corroborated | It also matches Phocos's RS-232 command document: output apparent power, DC bus voltage and heatsink temperature. |
inferred | PV1 and PV2 current. Don't expect PV voltage times PV current to equal PV power. |
derived / estimated | Worked out by Epilykos: PV power, net battery power and estimated grid power. |
unverified | The fault bytes. |
Settings that have a fixed list of choices are shown with the names the inverter's display and app use, such as charger priority CSO / SNU / OSO and output priority USB / SUB / SBU; behind the scenes, it's the matching number that gets sent.
To connect to the same inverter with a cable instead, see RS232 serial.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Timeout | Epilykos can't reach the dongle | Check the dongle's Wi-Fi signal, and ping its IP address from the computer running Epilykos. |
| Checksum mismatch | The serial number is wrong | Type it exactly as it appears on the sticker; upper and lower case matter. |
| No data | The wrong profile is selected | Pick the profile for your inverter: a Solarman stick is not a Felicity TCP dongle. |
| Bluetooth device not found | It's out of range, or the manufacturer's app is connected | Move the adapter closer, close the app, and scan again. |
There's more in Troubleshooting.
Last updated on