Yep done a full factory reset, and when I set TOU in the app and set discharging/charging times and inverter power it works fine. Integration is getting data and recognises when I make changes in the app (e.g. it says app mode changed when I apply settings), just whenever I try and contr with the integration the inverter just goes to 0.power and doesn’t supply anything.
My integration offers full write access to many SAJ inverter registers.
These write functions are intended for advanced users who know exactly what each register does and what effects writing to that register can have.
If someone without the necessary knowledge writes to a register, the inverter may enter a faulty or problematic state – or even fail.
Therefore, my recommendation is:
Only use the write register functions if you really understand what the register does.
For all other use cases, simple read access is completely sufficient.
So there is no way to disable the charge time slot?
Hi Stanus74,
I have a problem with configuring the SAJ charge/discharge card
I have uploaded the latest saj-h2-inverter-card.js (see screenshot)
I have added the resources (see screenshot)
I’ve done the refresh with the cache
I have added a custom card on my dashboard with these details
“title: SAJ H2 Inverter Control
type: custom:saj-h2-inverter-card
mode: both”
But this card keeps on giving the error:
- Custom element not found: saj-h2-inverter-card
everything is updated to the latest available version
I could use some help here ![]()
the JS FIle is not loaded
see Instructions to Reload Page
it’s working now. thx!
Pre Release v2.6.5 is online
@stanus74
Great work with new charging card and 7 time slots.
I installed today the v2.6.5
Cleared cache on my webbroser and than was the new card showing.
The first try of charging was not startet ,after i opend the first discharging slot than charging of the batterie startet.
I dont now , have we enable both charging and discharging ?
The values are sent to the inverter at intervals. This can take up to 1 minute.
You must always enter the start time, end time and power.
Yeah…
I’ve got my senes set up that control the charge/discharge and swapping of modes to self-consumption to save power.
Now when i set discharge time to 0 in my “CHARGE” scene, the slot still remains… It used to disable it…?
So now i have a charge slot - 00:00 - 23:59 @ 9900 SUN-SAT
and a discharge slow 00:00 - 23:59 @ 9900 SUN-SAT
and they wont apply now because the inverter refuses to apply overlapping time slots…
Simultaneous charging and discharging isn’t technically possible — overlapping time slots are correctly rejected by the inverter.
@stanus74 You are correct and thats the point I’m trying to make.
To explain better - there are 2 specific scenes i set up:
-
“Charge” (Settings Below)
1.1 App Mode (Input) = 1
1.2 Charge Time Enable (Input) = 1
1.3 Charge 1 Start Time = 00:00
1.4 Charge 1 End Time = 23:59
1.5 Charge 1 Power = 9900
1.6 Charge 1 Power Percent (Input) = 100%
1.7 DISCHARGE Time Enable (Input) = 0 -
“Sell” (Settings Below)
2.1 App Mode (Input) = 1
2.2 Discharge Time Enable (Input) = 1
2.3 Discharge 1 Start Time = 00:00
2.4 Discharge 1 End Time = 23:59
2.5 Discharge 1 Power = 9900
2.6 Discharge 1 Power Percent (Input) = 100%
2.7 CHARGE Time Enable (Input) = 0
Every time i have changed the Charge or Discharge Time Enable (Inputs) to 0, they have removed the corresponding time slot. Meaning there is only 1 time slot active when the charge or sell scenes are run. However when i have run these scenes recently the inverter isn’t applying this because of the automatic rejection of 2 overlapping time slots. I believed setting the time slots to 0 was deleting them… Is this still the case?
I’ve been very careful to only the settings you can adjust in the app because I don’t want to damage the inverter or battery. But I’ve noticed it goes offline frequently and resets all of the default parameters when it comes online such as setting the charge times back to 01:00 & 01:10 and the discharge times to 02:00 & 02:10 and also setting discharge percents to 5%…? Would you have any insight as to why this is happening??
Without a log, it is difficult to understand exactly what is happening.
What is 1.5 Charge 1 Power = 9900 ? What is the exact entity?
There is only an input entity for charging/discharging power > Power Percent Input
number.saj_charge_time_enable_input and
number.saj_discharge_time_enable_input
are binary registers
1 activates slot 1
2 activates slot 2
3 activates slot 1 and slot 2
0 deactivates all
Make it simpler.
Write start and end time Slot 1.
Write power / day mask (if necessary)
also for discharge slot 1.
And use the charge or discharge control switches.
switch.saj_charging_control
switch.saj_discharging_control
I just tested it.
number.saj_app_mode_input = 1 set
number.saj_charge_time_enable_input = 1
Time of Use Mode Slot 1 active
and then
number.saj_discharge_time_enable_input = 1
Discharge Slot 1 active
Leave times and power as set.
You Sir - ARE A LEGEND.
Thank you!
Still a novice at this and i’m looking at setting up your solar/battery/ home usage card you mentioned previously.
Logger: homeassistant.components.switch.reproduce_state
Source: components/switch/reproduce_state.py:39
integration: Switch (documentation, issues)
First occurred: 01:13:13 (5 occurrences)
Last logged: 01:19:41
Invalid state specified for switch.saj_charging_control: unavailable
This error originated from a custom integration.
Logger: custom_components.saj_h2_modbus.modbus_readers
Source: custom_components/saj_h2_modbus/modbus_readers.py:76
integration: SAJ H2 Modbus (documentation, issues)
First occurred: 23 November 2025 at 21:17:51 (204 occurrences)
Last logged: 01:19:36
Error reading modbus data: Modbus Error: [Input/Output] General Modbus read error
Error reading modbus data: Modbus Error: [Input/Output] No response received after 3 retries, continue with next request
Error reading modbus data: Failed to connect to 192.168.10.175:502 due to Client failed to connect to 192.168.10.175:502
Connection error
Are you using the AIO3 or a TCP/Modbus converter?
This has nothing to do with the integration; the connection is unstable.
The AIO3 can allow a maximum of 2 connections, for example.
SAJ H2-10K-S3-A with an AIO3 - I can connect it with ethernet if its better for stability. Thats Easy.
But it still has to be connected into the AIO3 module right? The other ports on the Inverter aren’t capable of internet connectivity right?
I’ve been connecting via HA (Through Virtual box on Mac Mini) therefore through its webpage and The Elekeeper App. So if your’e saying i have more than 2 instances - then i think youre right.
The only reason I hesitated using the charge control was because when i added it to a scene, you couldn’t set it to only turn on or only turn off.
You just added it and it showed a toggle and the state (on/off).
Which wasn’t really helpful in a scene/automation because you want a device/entity to do what you set it to (like a set and forget) and not show a toggle that would have to be activated.
I noticed when i activated my scene, it automatically turned on the charge control or discharge control automatically when it was set to time of use and between the start/end times.
The elekepper app establishes an MQTT connection. This does not count towards the total.
If the connection does not work, reloading the AIO3 often helps. There is a button on the AIO3 for this purpose.
Does the AIO3 have the latest firmware version V1.2.11?
Previous versions had an unstable Modbus connection.
Are you familiar with the eSolar SET app?

