• Have you tried out dark mode?! Scroll to the bottom of any page to find a sun or moon icon to turn dark mode on or off!

diy solar

diy solar

Deye 12kw inverter error: F21 Tz HV OverCurr Fault

InverterSpace

New Member
Joined
Jan 27, 2023
Messages
10
Location
Karachi
Hello,

I am reaching out for assistance with an error code "F21 Tz_HV_OverCurr_Fault" I'm encountering on my Deye 12kw inverter.
Here are the details of my setup:

Inverter Model: SUN-12K-SG04LP3-EU
Lithium Batteries: 2 Narada 48NPFC100
Solar Panels:
* 525 watts - 14 panels
* 405 watts - 16 panels (8X8 panels connected 2 strings for 1 MPP tracker)

Additional Details:
All AC and heavy loads are connected with a smart load on each phase, except for one AC unit, and most of the time I encounter that issue in the morning or during peak load

I would greatly appreciate any insights, suggestions, or troubleshooting steps you can provide to help me resolve this error code.

I have attached screenshots of the configuration for reference in the thread. Please take a look.
 

Attachments

  • Screenshot 2023-06-06 at 12.32.10 PM.png
    Screenshot 2023-06-06 at 12.32.10 PM.png
    150.8 KB · Views: 35
  • jink-405.jpeg
    jink-405.jpeg
    48.4 KB · Views: 37
  • 525w.jpeg
    525w.jpeg
    274.6 KB · Views: 34
  • Screenshot 2023-06-06 at 12.33.11 PM.png
    Screenshot 2023-06-06 at 12.33.11 PM.png
    66.2 KB · Views: 31
  • Screenshot 2023-06-06 at 12.33.01 PM.png
    Screenshot 2023-06-06 at 12.33.01 PM.png
    251.2 KB · Views: 27
  • Screenshot 2023-06-06 at 12.32.46 PM.png
    Screenshot 2023-06-06 at 12.32.46 PM.png
    172.5 KB · Views: 29
  • IMG_20230319_092051.jpeg
    IMG_20230319_092051.jpeg
    208.6 KB · Views: 31
  • IMG_20221122_213502.jpeg
    IMG_20221122_213502.jpeg
    261.6 KB · Views: 35
Last edited:
If they are 1 string then that is were your problem is 14 X 49V= 686V

Edit,
I think the max voltage is 500V but read the manual to be sure.
 
PV1 405 watts - 16 panels (8X8)
PV2 525 watts - 14 panels
 

Attachments

  • WhatsApp Image 2023-06-06 at 6.07.23 PM.jpeg
    WhatsApp Image 2023-06-06 at 6.07.23 PM.jpeg
    42.3 KB · Views: 12
  • WhatsApp Image 2023-06-06 at 6.07.24 PM.jpeg
    WhatsApp Image 2023-06-06 at 6.07.24 PM.jpeg
    32.3 KB · Views: 12
I didn't update the inverter firmware but I have updated the BMS version since it was not supporting Narada batteries
 
anyway f21 is a dc bus over voltage error...
you panels are putting more voltage on the bus than what it can handle
 
i would suggest you look at the voltage comming into your mppt's and make sure it's not more than the rating....
watts actually is useless in this case , need to know the voltage ( VOC)
 
i would suggest you look at the voltage comming into your mppt's and make sure it's not more than the rating....
watts actually is useless in this case , need to know the voltage ( VOC)
What is the solution to solve this issue? and how I can check the VOC and voltage
 
What is the solution to solve this issue? and how I can check the VOC and voltage
a multimeter would tell you the actual voltage of the string
the maximums are on the inverter label on the side ( it states 600, but i stay below 550)
use less panels in one string... or split the string
 
a multimeter would tell you the actual voltage of the string
the maximums are on the inverter label on the side ( it states 600, but i stay below 550)
use less panels in one string... or split the string
I will check the voltage using a multimeter, but I didn't see where 600 was mentioned on the inverter. Furthermore, I have already split the 405-watt panel into an 8-panel string, which is connected to PV1, and in PV2, all 525 watts from the 14 panels are connected.
 
I will check the voltage using a multimeter, but I didn't see where 600 was mentioned on the inverter. Furthermore, I have already split the 405-watt panel into an 8-panel string, which is connected to PV1, and in PV2, all 525 watts from the 14 panels are connected.
your VOLTAGE is the problem here.....

simply put , if you series a string ( + to - ) you add voltage, and one of your strings puts out too much voltage...

this really has nothing to do with watts ( watts = voltage x amps)
 
today my technician visited the site, and he mentioned that the panels are installed within the acceptable range. The error only occurs when we turn on the 3KW AC on the smart load L1. However, we were unable to reproduce the F21 error on the smart load L2, even with the same AC model. Additionally, we couldn't replicate the error with a high load on the smart load L3. The only notable difference is that we have a 1-ton AC running on the L1 as a normal load. let me know if you need any further details
 
https://www.deyeinverter.com
borked firmware
DeyeInverter
Homeass
interesting? The WritableRegisters.GridExportLimit register can be used if the grid export is not desired when the battery is charged and the PV generation exceeds the load.
tested with:
  • SUN-12K-SG04LP3 / LSW-3

I would love to code this thing. I bet this is a beast when coded properly. Very few on git and that's not good because someone is the fall guy with coding. I'm probably going to get one of these beasts. looks awesome. Looks like this is the beginning stages so place this outside of your house ?UL rated
 
Last edited:
  • InverterState: Represents the state of the inverter. The states include StandBy, SelfCheck, Normal, Alarm, and Fault. If an undefined state is encountered, it defaults to Fault.
  • ControlMode: Represents the control mode of the inverter. The modes include LeadBattery and LithiumBattery. If an undefined mode is encountered, it defaults to LeadBattery.
  • BatteryControlMode: Represents the control mode of the battery. The modes include ByVoltage, ByCapacity, NoBattery, and Error. If an undefined mode is encountered, it defaults to Error.
  • BMSMode: Represents the Battery Management System (BMS) mode. It includes several modes corresponding to different BMS protocols. If an undefined mode is encountered, it defaults to PYLONTech_CAN.
  • TimeOfUse: Represents the Time of Use settings on the inverter screen. It includes flags for each day of the week and an ENABLED flag. The from_int method converts an integer into a list of enabled settings.
  • ChargeGridGen: Represents the Grid / Generator charge states. The states include GridGenDisabled, GridEnabled, GenEnabled, and GridGenEnabled. If an undefined state is encountered, it defaults to GridGenDisabled.
  • TwoBitState: Represents a two-bit state as described for register 178. The states include Undefined_1, Undefined_2, Disabled, and Enabled. If an undefined state is encountered, it defaults to Undefined_1
DEYE 12K Inverters using the MODBUS protocol. The MODBUS protocol is a communication protocol that allows devices to interact with each other over a network. In this case, the script is designed to interact with DEYE 12K Inverters, which are devices used to convert direct current (DC) into alternating current (AC).

The script defines several classes, each representing a different type of register or data type in the MODBUS protocol. These classes include InverterType, Register, IntType, FloatType, BoolType, LongType, DeviceType, DeviceSerialNumber, DeviceTime, SellTimePoint, ChargeTimePoint, TimeOfUseSell, GridFrequency, RunState, InverterControlMode, BatteryControl, BMSBatteryTemp, BMSLiProto, MicroinverterExportCutoff, and HoldingRegisters.

Each class has methods for formatting and interacting with the data in the registers. For example, the IntType class has a format method that returns the value of the register as an integer. The FloatType class has a similar format method, but it returns the value of the register as a float.

The HoldingRegisters class is a collection of all the registers that can be read from or written to. It includes methods for setting and getting the values of these registers.

The script also defines lists of registers that are specific to certain types of devices or operations, such as BatteryOnlyRegisters and TotalPowerOnly.

Since I would never sell a dime back to Con ed I would disable SellTimePoint, this subclass of Register represents specific time points for selling.
I would bet based upon that code that during a reboot/hang/freeze/bork this could possibly unintendedly SELL energy back to the grid and if you are like me stealth bomber that's a no-go. Either use a separate non main transfer switch (boring v1.0) or better yet I would disable that setting if you never want to add to the grid. (Not boring v2.0)
Of course, it could brick the device or have unattended consequences like working better. Pickem at eventually it would be trust worthly on the sell side not sure about internals we can't fix that with code.
 
Last edited:
set all the SellModeKWPoint variables to 0 to indicate that no power should be sold at any of the time points. Similarly, you might set all the SellModeBattCapacity variables to 100% to indicate that the battery should always be kept at full capacity, which might prevent power from being sold.

No SELLING to the grid ever only pulling:
SellModeKWPoint1 = IntType(154, 'sell_point_t1_watts', suffix='W')
SellModeKWPoint2 = IntType(155, 'sell_point_t2_watts', suffix='W')
SellModeKWPoint3 = IntType(156, 'sell_point_t3_watts', suffix='W')
SellModeKWPoint4 = IntType(157, 'sell_point_t4_watts', suffix='W')
SellModeKWPoint5 = IntType(158, 'sell_point_t5_watts', suffix='W')
SellModeKWPoint6 = IntType(159, 'sell_point_t6_watts', suffix='W')

To this:
SellModeKWPoint1 = IntType(154, 'sell_point_t1_watts', 0, suffix='W')
SellModeKWPoint2 = IntType(155, 'sell_point_t2_watts', 0, suffix='W')
SellModeKWPoint3 = IntType(156, 'sell_point_t3_watts', 0, suffix='W')
SellModeKWPoint4 = IntType(157, 'sell_point_t4_watts', 0, suffix='W')
SellModeKWPoint5 = IntType(158, 'sell_point_t5_watts', 0, suffix='W')
SellModeKWPoint6 = IntType(159, 'sell_point_t6_watts', 0, suffix='W')

If I get one I'll add SMS alerts, Phone Call Alerts, and email alerts because that's possible. maybe even compare data for all users.
This thing could be great but I wouldn't want to waste time on inferior-quality products. Hopefully, the internals stand up are somewhat comparable to

XW Pro 120/240V

Someone test these because Schneider electric I know is quality stuff but GUI is not so good.
https://solar.se.com/us/en/product/xw-pro-120-240v/
 
Last edited:
I'd really like to reverse these bin files. No way should these contact foreign country servers even for updates.
Plus, you can really fix this or bork it, OR worst case but possibly you could imagine hacking an unsecured solar inverter pushing evil updates and burning a house down. Unsecured Connection: HTTP is not a secure protocol. If you're downloading firmware updates over HTTP, it's possible for an attacker to intercept the connection and replace the firmware update with malicious software. This is known as a Man-in-the-Middle (MitM) attack. I'd better be a ghost on this topic. Whoever has this installed should probably take a wireshark deep look at packet inspection. Or just trust the process. ?
 
Last edited:
Hello,

I am reaching out for assistance with an error code "F21 Tz_HV_OverCurr_Fault" I'm encountering on my Deye 12kw inverter.
Here are the details of my setup:

Inverter Model: SUN-12K-SG04LP3-EU
Lithium Batteries: 2 Narada 48NPFC100
Solar Panels:
* 525 watts - 14 panels
* 405 watts - 16 panels (8X8 panels connected 2 strings for 1 MPP tracker)

Additional Details:
All AC and heavy loads are connected with a smart load on each phase, except for one AC unit, and most of the time I encounter that issue in the morning or during peak load

I would greatly appreciate any insights, suggestions, or troubleshooting steps you can provide to help me resolve this error code.

I have attached screenshots of the configuration for reference in the thread. Please take a look.
i have the same error. My panel voltages and currents, and the loads are all within spec.
It happen whenever my system is operating off-grid with PV power, batteries' SOC at 100%, and running a load > 20% system capacity.
As long as batteries SOC haven't reached 100%, this error doesn't occur.
I thought it was related to the batteries (Felicity) where one batteries asks to be charged while the other is overcharged, but it is likely to be a firmware bug now that i have this issue happen with a different set of batteries.
Only workaround i know so far is to set battery charging to a very low value such that they reach 100% about 1 or 2 hours before sunset.
Will need to sort this out before Winter where i need the batteries to charge rapidly whenever sunlight is available.
 

diy solar

diy solar
Back
Top