D
So I have had months of trying to get my Serial back when for some reason my BMS decided to have a hissy fit and revert serial to XXXXXXXXX - Chatgpt was pretty useless - obviously no support - my installer blanked me and INVLocal paid didnt work
Claude Id just not tried and thought Id give it a go - 10 seconds later its back
I won't post the code but the prompt is
My GivEnergy All-in-One (AIO) inverter is reporting its serial number as "XXXXXXXXXX" instead of the real serial printed on its label, which is: <YOUR SERIAL, e.g. CH1234G567>. The WiFi dongle is on my local network at <DONGLE IP, e.g. 192.168.1.x>.
Please fix it as follows:
- Check the dongle is reachable on TCP port 8899.
- Write a small Python 3 script (standard library only, no pip installs) that speaks GivEnergy's local protocol: a 0x5959 / 0x0001 / length header, uid 0x01, function id 0x02 (transparent), then a 10-byte adapter serial placeholder, 8 bytes of padding (0x0000000000000008), and a Modbus RTU request (slave address, function code, register, count/value, CRC16-Modbus little-endian).
- READ ONLY first: read holding registers 0–59, trying slave addresses 0x32, 0x11 and 0x31. Show me the dongle serial, the inverter serial in the response header, and HR 13–17 decoded as ASCII (two characters per register, big-endian). Confirm that HR 13–17 are 0x5858 ("XX").
- Show me the five register values you plan to write (HR 13–17 = my serial encoded two ASCII characters per register) and wait for my explicit OK.
- After I confirm, write each register with function code 6 (write single register) on the slave address that responded (0x11 on the AIO I know about), then read back to verify. If a write isn't acknowledged but the read-back is correct, treat it as successful.
- Don't write to any other registers. If the inverter rejects the writes, stop and tell me to contact GivEnergy support instead.