Skip to content
This repository was archived by the owner on Oct 20, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ sensor:
| deye_2mppt.yaml | DEYE Microinverter with 2 MPPT Trackers | e.g. SUN600G3-EU-230 / SUN800G3-EU-230 / SUN1000G3-EU-230 |
| deye_4mppt.yaml | DEYE Microinverter with 4 MPPT Trackers | e.g. SUN1300G3-EU-230 / SUN1600G3-EU-230 / SUN2000G3-EU-230 |
| sofar_lsw3.yaml | SOFAR Inverters | |
| sofar_4ktlm-g3.yaml | SOFAR 4KTLM-G3 (single-phase, 2 MPPT) | tested with LSW3_15_270A_1.68; block-aligned G3 reads |
| sofar_g3hyd.yaml | SOFAR Hybrid Three-Phase inverter | HYD 6000 or rebranded (three-phase), ex. ZCS Azzurro 3PH HYD-ZSS |
| sofar_hyd3k-6k.yaml | SOFAR Hybrid Single-Phase inverter | HYD 6000 or rebranded (single-phase), ex. ZCS Azzurro HYD-ZSS |
| solis_hybrid.yaml | SOLIS Hybrid inverter | |
Expand Down
312 changes: 312 additions & 0 deletions custom_components/solarman/inverter_definitions/sofar_4ktlm-g3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,312 @@
# SOFAR 4KTLM-G3: single-phase, non-hybrid, two MPPT inputs.
# Hardware-tested with LSW3_15_270A_1.68 over Solarman V5, Modbus slave 1.
# Read complete, block-aligned ranges: interior-start requests can return
# non-standard error frames which fail Modbus CRC validation on this logger.
# Other KTLM-G3 models have not been hardware-tested with this profile.
# Fault 1-12 expose raw G3 bitfields; zero means no error. The legacy Sofar
# fault descriptions must not be reused for these registers.
# No batteries, off-grid output, or L2/L3 sensors are requested.

requests:
- start: 0x0400
end: 0x042E
mb_functioncode: 0x03
- start: 0x0480
end: 0x04AF
mb_functioncode: 0x03
- start: 0x0580
end: 0x0589
mb_functioncode: 0x03
- start: 0x0680
end: 0x069B
mb_functioncode: 0x03
parameters:
- group: Solar
items:
- name: PV1 Power
class: power
state_class: measurement
uom: W
scale: 10
rule: 1
registers: [0x0586]
icon: mdi:solar-power
- name: PV2 Power
class: power
state_class: measurement
uom: W
scale: 10
rule: 1
registers: [0x0589]
icon: mdi:solar-power
- name: PV1 Voltage
class: voltage
state_class: measurement
uom: V
scale: 0.1
rule: 1
registers: [0x0584]
icon: mdi:solar-power
- name: PV2 Voltage
class: voltage
state_class: measurement
uom: V
scale: 0.1
rule: 1
registers: [0x0587]
icon: mdi:solar-power
- name: PV1 Current
class: current
state_class: measurement
uom: A
scale: 0.01
rule: 1
registers: [0x0585]
icon: mdi:solar-power
- name: PV2 Current
class: current
state_class: measurement
uom: A
scale: 0.01
rule: 1
registers: [0x0588]
icon: mdi:solar-power
- name: Daily Production
class: energy
state_class: total_increasing
uom: kWh
scale: 0.01
rule: 3
registers: [0x0685, 0x0684]
icon: mdi:solar-power
- name: Total Production
class: energy
state_class: total_increasing
uom: kWh
scale: 0.1
rule: 3
registers: [0x0687, 0x0686]
icon: mdi:solar-power
- group: Output
items:
- name: Output active power
class: power
state_class: measurement
uom: W
scale: 10
rule: 2
registers: [0x0485]
icon: mdi:home-lightning-bolt
- name: Output reactive power
class: ''
state_class: measurement
uom: kVar
scale: 0.01
rule: 2
registers: [0x0486]
icon: mdi:home-lightning-bolt
- name: Grid frequency
class: frequency
state_class: measurement
uom: Hz
scale: 0.01
rule: 1
registers: [0x0484]
icon: mdi:home-lightning-bolt
- name: L1 Voltage
class: voltage
state_class: measurement
uom: V
scale: 0.1
rule: 1
registers: [0x048D]
icon: mdi:home-lightning-bolt
- name: L1 Current
class: current
state_class: measurement
uom: A
scale: 0.01
rule: 1
registers: [0x048E]
icon: mdi:home-lightning-bolt
- group: Inverter
items:
- name: Inverter status
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0404]
lookup:
- key: 0
value: Stand-by
- key: 1
value: Self-checking
- key: 2
value: Normal
- key: 3
value: Emergency Power Supply
- key: 4
value: Recoverable Fault
- key: 5
value: Permanent Fault
- key: 6
value: Upgrade
- key: 7
value: Self-charging
- key: 8
value: SVG
- key: 9
value: PID
icon: mdi:wrench
- name: Inverter inner temperature
class: temperature
state_class: measurement
uom: °C
scale: 1
rule: 2
registers: [0x0418]
icon: mdi:thermometer
- name: Inverter radiator temperature
class: temperature
state_class: measurement
uom: °C
scale: 1
rule: 2
registers: [0x041A]
icon: mdi:thermometer
- group: Fault bitfields
items:
- name: Fault 1
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0405]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 2
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0406]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 3
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0407]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 4
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0408]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 5
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0409]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 6
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x040A]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 7
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x040B]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 8
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x040C]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 9
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x040D]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 10
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x040E]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 11
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x040F]
lookup:
- key: 0
value: No error
icon: mdi:wrench
- name: Fault 12
class: ''
state_class: ''
uom: ''
scale: 1
rule: 1
registers: [0x0410]
lookup:
- key: 0
value: No error
icon: mdi:wrench
Loading