Inverter Basics - celsworth/lxp-bridge GitHub Wiki

This page attempts to cover some technical details about the inverter. Might split it up into more basic/advanced topics as it grows.

Registers

There are two types of registers; input registers (read-only) and holding registers (read-write), as per standard modbus. They're referred to throughout lxp-bridge as inputs (or "power data" and suchlike) and hold respectively, for example in MQTT messages.

All the registers are 16bits. Sometimes data is split over multiple registers, eg serial number occupies 2-6, the time is in 12-14. Some inputs also split their data over two registers to get 32bits (in particular, total energy from PV etc).

There's a third type which seems to be specific to the datalogger stick, these are called params. Little is known about these apart from param 0 is the interval between data broadcasts.

Packet Broadcasting - aka Luxpower Can See What You Are Doing

The inverter transmits the same thing to every connected client. That is to say, if client 1 requests the contents of a register, client 2 will see the reply to it as well as client 1. You can see this if you go to the Luxpower cloud portal and press "Read" on the remote management page; lxp-bridge will also see the registers it reads (all of them!) and spit them out into logs and MQTT.

This is worth knowing, as it means Luxpower can basically see everything you're doing while your inverter is connected to them. If you read a register, they'll get the reply to it as well. If you were already connected to them then they already know everything about your inverter, but now they can see you're doing a bit more with it than they might expect most users to. This may or may not be a problem depending on how paranoid you want to be, just bear it in mind.

Also, if you request inputs manually too often, you'll spam them as well and eventually they might not be too impressed with the frequency of data they have to record from your inverter. It has been seen they've gradually decreased the frequency of periodic inputs broadcasts over time; they started at 2 minute intervals when I got my inverter, and have increased to 3 minutes, and now 5. Presumably to manage the amount of data storage they have to deal with.

Ultimately the goal of this project is to be completely self-sufficient and be able to disconnect from Luxpower entirely, and still have a fully working controllable inverter.

Heartbeats

These inverters send a "heartbeat" packet occasionally, and this packet must be responded to for the inverter to then broadcast power data (which you probably want to monitor for graphing etc, or you wouldn't be using this software).

When an inverter is connected to Luxpower's cloud servers, they respond to these packets and all is well.

However, if you don't want to connect to, or can't connect to their servers, you will find no input registers are broadcast. You just get a heartbeat, every minute or so.

If this is the case for you, try setting the inverter.heartbeats option to true in the configuration.

This is disabled by default because I'm not sure how the inverter will respond to getting two heartbeats, so you probably only want to enable this if Luxpower disappear and have no servers for you to connect to, or you explicitly prevent your inverter from connecting to them, because they're in China.