Epilykos Wiki
Data sources

Inverter dongles and Bluetooth modules

Read an inverter through its Wi-Fi logger stick or its Bluetooth module.

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

ProfileHow it connectsWhat you'll need
Deye / SunSynk Hybrid (Solarman V5), SRNE Hybrid Inverter (Solarman V5)A Solarman stick, port 8899The stick's IP address and its serial number (on the sticker)
LuxPowerTek Generic HybridA Wi-Fi dongle on port 8000, or BluetoothThe 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 24VSame as aboveUse 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 53970The inverter's IP address
Growatt SPF Series (TCP Server)The stick connects to Epilykos on port 5279Point the stick's server address at the computer running Epilykos
Phocos Any-Grid PSW-H (Bluetooth)Bluetooth onlyThe 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:

OptionDefaultAlternatives
Local Wi-Fi securityPlain TCP (existing dongles)Require TLS-PSK; Try TLS, allow plain fallback
Bluetooth write strategyLong write with responseChunked without response (the way the LuxCloud app does it)
Local protocol52

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:

LabelWhat it means
app_confirmedThe 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.
corroboratedIt also matches Phocos's RS-232 command document: output apparent power, DC bus voltage and heatsink temperature.
inferredPV1 and PV2 current. Don't expect PV voltage times PV current to equal PV power.
derived / estimatedWorked out by Epilykos: PV power, net battery power and estimated grid power.
unverifiedThe 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

SymptomLikely causeFix
TimeoutEpilykos can't reach the dongleCheck the dongle's Wi-Fi signal, and ping its IP address from the computer running Epilykos.
Checksum mismatchThe serial number is wrongType it exactly as it appears on the sticker; upper and lower case matter.
No dataThe wrong profile is selectedPick the profile for your inverter: a Solarman stick is not a Felicity TCP dongle.
Bluetooth device not foundIt's out of range, or the manufacturer's app is connectedMove the adapter closer, close the app, and scan again.

There's more in Troubleshooting.

Last updated on

On this page