Limiter inverter with RS485 load setting

I did test the dynamic limiter without the RS485 board on my soyo with broken LCD and custom esp8266 as replacement. Removed the rs485 and connect directly to the socket on the RX pin. The socket where the RS485 board was installed, 5-pin, pins have white marking. Then have the esp8266 send the limiter 4800 baud messages over softserial. Works.

I am pretty sure you can make the KlausiLi firmware work without the RS485 devices too. Note the dev-boards with built-in usb-to-serial will not allow receive to work properly, and you need a 1kohm resistor since soyo is 5V, esp is 3.3V. Should use a "swap();" for serial but unluckily his code is not opensource.

Do not try this if you have USB connected, only OTA updates or you will fry your PC and your Soyo!

I plan to use this with my battery project. Charges bat with PV excess and then feeds back into the net when sun is down. Net usage is measured with shelly 3EM. Tested with $30 Y&H 150W inverter which knows only on/off and overheats. Soyo will be able to adjust dynamically from 100W to 500W.

This: is the battery project with the Y&H inverter which will be replaced by the soyo once i merge those projects together.


  • wiring.png
    708.9 KB · Views: 50
  • IMG_20230925_112643.jpg
    1.2 MB · Views: 51
Last edited:
Soyosource, Grid Tie inverter and RS485
i'm aware, that this is an elder thread, but i did not find any newer...
Well i try to integrate this inverter in my home elctric, and try to communivate with the inverter via RS485. My actual problem is, tha i have to send a hex string with the required power and the string ends with a crc. Seems, it is CRC8, but im not familiar to that. Can annybody tell me how to calculate this CRC? Perhaps someone has a working C-Code or knows where to find???

Thanks and regards
Hi friends,

// -- Compute serial packet and send it to inverter (just the 3 bytes that change) --

byte4 = int(L1demand/256); // (2 byte watts as short integer xaxb)
if (byte4 < 0 or byte4 > 256){
byte4 = 0;}
byte5 = int(L1demand)-(byte4 * 256); // (2 byte watts as short integer xaxb)
if (byte5 < 0 or byte5 > 256) {
byte5 = 0;}
byte7 = (264 - byte4 - byte5); //checksum calculation
if (byte7 > 256){
byte7 = 8;}

Hi friends,

my Soyosource GTN 1000 with display! bought this year, does not response the status requests via RS485. Is it possible that newer versions of the firmware do not support status requests anymore?
i have such a Soyosource inverter running. i send the wattage i want via microcontroller and RS485, but i don't get any answer on RS485. Do you send a specific command to get a status?

Hi Gerhard,

there is no direct response from the inverter after a power set command. What I do is discussed in this thread: a special command to get the inverter status like amperes, voltage, temperature. With regard to your question, there are a couple of messages in this thread with sample power set scripts in python (with CRC calculation).
Ah ok, thanks, but i dont understand that Phyton-code pack.struct/unpack.struct.... What is really sent to the inverter?