Skip to content

Instantly share code, notes, and snippets.

@senzidee
Created August 15, 2025 14:10
Show Gist options
  • Select an option

  • Save senzidee/9d15fe9758bbbf5805942d91a860724f to your computer and use it in GitHub Desktop.

Select an option

Save senzidee/9d15fe9758bbbf5805942d91a860724f to your computer and use it in GitHub Desktop.
#
# Sofar String Inverter
#
# Reference: ???
#
default:
update_interval: 5
digits: 6
parameters:
- group: PV
items:
- name: "PV Power"
alt: DC Power
mppt: 1
description: Combined power of all inputs
class: "power"
state_class: "measurement"
uom: "W"
rule: 1
scale: 10
sensors:
- registers: [0x0586]
- registers: [0x0589]
validation:
min: 0
max: 50000
invalidate_all:
icon: "mdi:solar-power-variant"
- name: "PV1 Power"
class: "power"
mppt: 1
state_class: "measurement"
uom: "W"
scale: 10
rule: 1
registers: [0x0586]
icon: "mdi:solar-power-variant"
- name: "PV2 Power"
class: "power"
mppt: 2
state_class: "measurement"
uom: "W"
scale: 10
rule: 1
registers: [0x0589]
icon: "mdi:solar-power-variant"
- name: "PV1 Voltage"
class: "voltage"
mppt: 1
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x0584]
icon: "mdi:solar-power-variant"
- name: "PV2 Voltage"
class: "voltage"
mppt: 2
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x0587]
icon: "mdi:solar-power-variant"
- name: "PV1 Current"
class: "current"
mppt: 1
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 1
registers: [0x0585]
icon: "mdi:solar-power-variant"
- name: "PV2 Current"
class: "current"
mppt: 2
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 1
registers: [0x0588]
icon: "mdi:solar-power-variant"
- name: Today Production
friendly_name: Today's Production
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 0.01
rule: 3
registers: [0x0685, 0x0684]
icon: "mdi:solar-power"
validation:
dev: 100
invalidate_all:
- name: "Total Production"
class: "energy"
state_class: "total_increasing"
uom: "kWh"
rule: 3
registers: [0x0687, 0x0686]
icon: "mdi:solar-power"
validation:
min: 0.1
dev: 100
invalidate_all: 2
- name: "Total Production time"
state_class: "measurement"
uom: "h"
rule: 3
registers: [0x0018, 0x0017]
icon: "mdi:clock-outline"
- name: "Today Production time"
state_class: "measurement"
uom: "min"
rule: 1
registers: [0x001A]
icon: "mdi:clock-outline"
- group: Output
items:
- name: "Power"
class: "power"
state_class: "measurement"
uom: "W"
scale: 10
rule: 1
registers: [0x000C]
- name: "Power losses"
description: Includes consumption of the inverter device itself as well AC/DC conversion losses
class: "power"
state_class: "measurement"
uom: "W"
rule: 1
digits: 0
scale: 10
uint: enforce
sensors:
- registers: [0x000A]
- registers: [0x000B]
- operator: subtract
registers: [0x000C]
- name: "Output reactive power"
class: "reactive_power"
state_class: "measurement"
uom: "kvar"
scale: 0.01
rule: 1
registers: [0x000D]
- name: "Grid frequency"
class: "frequency"
state_class: "measurement"
uom: "Hz"
scale: 0.01
rule: 1
registers: [0x0484]
- name: "L1 Voltage"
l: 1
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x048D]
- name: "L1 Current"
l: 1
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 1
registers: [0x048E]
- name: "L2 Voltage"
l: 2
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x0498]
icon: "mdi:home-lightning-bolt"
- name: "L2 Current"
l: 2
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 1
registers: [0x0499]
icon: "mdi:home-lightning-bolt"
- name: "L3 Voltage"
l: 3
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x04A3]
icon: "mdi:home-lightning-bolt"
- name: "L3 Current"
l: 3
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.01
rule: 1
registers: [0x04A4]
icon: "mdi:home-lightning-bolt"
- group: Device
items:
- name: "Device State"
class: "enum"
rule: 1
registers: [0x0404]
icon: "mdi:state-machine"
lookup:
- key: 0x0000
value: "Standby"
- key: 0x0001
value: "Self-test"
- key: 0x0002
value: "Normal"
- key: 0x0003
value: "Alarm"
- key: 0x0004
value: "Fault"
- name: "Inverter module temperature"
class: "temperature"
uom: "°C"
rule: 1
registers: [0x0420]
- name: "Inverter inner temperature"
class: "temperature"
state_class: "measurement"
uom: "°C"
rule: 1
registers: [0x041A]
- name: "Inverter bus voltage"
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x001D]
- name: "PV1 voltage sample by slave CPU"
class: "voltage"
mppt: 1
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [0x048D]
- name: "PV1 current sample by slave CPU"
class: "current"
mppt: 1
state_class: "measurement"
uom: "A"
scale: 0.1
rule: 1
registers: [0x048E]
- name: "Countdown time"
state_class: "measurement"
uom: "s"
rule: 1
registers: [0x0020]
- name: "Inverter alert message"
rule: 1
registers: [0x0021]
- name: "Input mode"
rule: 1
registers: [0x0022]
- name: "Communication Board inner message"
rule: 1
registers: [0x0023]
- name: "Insulation of PV1+ to ground"
state_class: "measurement"
mppt: 1
rule: 1
registers: [0x0024]
- name: "Insulation of PV2+ to ground"
state_class: "measurement"
mppt: 2
rule: 1
registers: [0x0025]
- name: "Insulation of PV- to ground"
state_class: "measurement"
mppt: 1
rule: 1
registers: [0x0026]
- name: "Country"
rule: 1
registers: [0x0027]
lookup:
- key: 0
value: "Germany"
- key: 1
value: "CEI0-21 Internal"
- key: 2
value: "Australia"
- key: 3
value: "Spain RD1699"
- key: 4
value: "Turkey"
- key: 5
value: "Denmark"
- key: 6
value: "Greece"
- key: 7
value: "Netherland"
- key: 8
value: "Belgium"
- key: 9
value: "UK-G59"
- key: 10
value: "China"
- key: 11
value: "France"
- key: 12
value: "Poland"
- key: 13
value: "Germany BDEW"
- key: 14
value: "Germany VDE0126"
- key: 15
value: "Italy CEI0-16"
- key: 16
value: "UK-G83"
- key: 17
value: "Greece Islands"
- key: 18
value: "EU EN50438"
- key: 19
value: "EU EN61727"
- key: 20
value: "Korea"
- key: 21
value: "Sweden"
- key: 22
value: "Europe General"
- key: 23
value: "CEI0-21 External"
- key: 24
value: "Cyprus"
- key: 25
value: "India"
- key: 26
value: "Philippines"
- key: 27
value: "New Zeland"
- key: 28
value: "Reserve"
- key: 29
value: "Reserve"
- group: Alarm
items:
- name: "Device Fault"
class: "enum"
rule: 1
icon: "mdi:message-alert-outline"
registers: [0x0001, 0x0002, 0x0003, 0x0004, 0x0005]
lookup:
- key: 0
value: "OK"
- bit: 0
value: "ID01 Grid Over Voltage Protection"
- bit: 1
value: "ID02 Grid Under Voltage Protection"
- bit: 2
value: "ID03 Grid Over Frequency Protection"
- bit: 3
value: "ID04 Grid Under Frequency Protection"
- bit: 4
value: "ID05 PV Under Voltage Protection"
- bit: 5
value: "ID06 Grid Low Voltage Ride through"
- bit: 6
value: "ID07"
- bit: 7
value: "ID08"
- bit: 8
value: "ID09 PV Over Voltage Protection"
- bit: 9
value: "ID10 PV Input Current Unbalanced"
- bit: 10
value: "ID11 PV Input Mode wrong configuration"
- bit: 11
value: "ID12 Ground-Fault circuit interrupters fault"
- bit: 12
value: "ID13 Phase sequence fault"
- bit: 13
value: "ID14 Hardware boost over current protection"
- bit: 14
value: "ID15 Hardware AC over current protection"
- bit: 15
value: "ID16 Grid current is too high"
- bit: 16
value: "ID17 Grid current sampling error"
- bit: 17
value: "ID18 DCI sampling error"
- bit: 18
value: "ID19 Grid voltage sampling error"
- bit: 19
value: "ID20 GFCI device sampling error"
- bit: 20
value: "ID21 Main chip fault"
- bit: 21
value: "ID22 Hardware auxiliary power fault"
- bit: 22
value: "ID23 Bus voltage zero fault"
- bit: 23
value: "ID24 Output current not balanced"
- bit: 24
value: "ID25 Bus under voltage protection"
- bit: 25
value: "ID26 Bus over voltage protection"
- bit: 26
value: "ID27 Bus voltage unbalanced"
- bit: 27
value: "ID28 DCI is too high"
- bit: 28
value: "ID29 Grid current is too high"
- bit: 29
value: "ID30 Input current is too high"
- bit: 30
value: "ID31"
- bit: 31
value: "ID32"
- bit: 32
value: "ID33 Reserved"
- bit: 33
value: "ID34 Reserved"
- bit: 34
value: "ID35 Reserved"
- bit: 35
value: "ID36 Reserved"
- bit: 36
value: "ID37 Reserved"
- bit: 37
value: "ID38 Reserved"
- bit: 38
value: "ID39 Reserved"
- bit: 39
value: "ID40 Reserved"
- bit: 40
value: "ID41 Reserved"
- bit: 41
value: "ID42 Reserved"
- bit: 42
value: "ID43 Reserved"
- bit: 43
value: "ID44 Reserved"
- bit: 44
value: "ID45 Reserved"
- bit: 45
value: "ID46 Reserved"
- bit: 46
value: "ID47 Reserved"
- bit: 47
value: "ID48 Reserved"
- bit: 48
value: "ID49 Grid voltage sampling value between master and slave DSP vary widely"
- bit: 49
value: "ID50 Grid frequency sampling value between master and slave DSP vary widely"
- bit: 50
value: "ID51 DCI sampling value between master and slave DSP vary widely"
- bit: 51
value: "ID52 GFCI sampling value between master and slave DSP vary widely"
- bit: 52
value: "ID53 Communication failure between master and slave DSP failure"
- bit: 53
value: "ID53 Communication failure between slave and communication board"
- bit: 54
value: "ID55 Relay fault"
- bit: 55
value: "ID56 Insulation resistance between PV array and the earth is too low"
- bit: 56
value: "ID57 Inverter temp is too high"
- bit: 57
value: "ID58 Boost temp is too high"
- bit: 58
value: "ID59 Environment temp is too high"
- bit: 59
value: "ID60 Brak podłączenie falownika do kabla PE"
- bit: 60
value: "ID61 Reserved"
- bit: 61
value: "ID62 Reserved"
- bit: 62
value: "ID63 Reserved"
- bit: 63
value: "ID64 Reserved"
- bit: 64
value: "ID65 Grid current is too high and causes unrecoverable fault"
- bit: 65
value: "ID66 Bus voltage is too high and causes unrecoverable fault"
- bit: 66
value: "ID67 Grid current is unbalanced and causes unrecoverable fault"
- bit: 67
value: "ID68 Input current is unbalanced and causes unrecoverable fault"
- bit: 68
value: "ID69 Bus voltage is unbalanced and causes unrecoverable fault"
- bit: 69
value: "ID70 Grid current is too high and causes unrecoverable fault"
- bit: 70
value: "ID65 PV Input Mode Configuration is wrong and causes unrecoverable fault"
- bit: 71
value: "ID72 Reserved"
- bit: 72
value: "ID73 Reserved"
- bit: 73
value: "ID74 Input current is too high and causes unrecoverable fault"
- bit: 74
value: "ID75 Error reading from EEPROM"
- bit: 75
value: "ID76 Error writing to EEPROM"
- bit: 76
value: "ID77 Relay fauilure causes unrecoverable fault"
- bit: 77
value: "ID78 Reserved"
- bit: 78
value: "ID79 Reserved"
- bit: 79
value: "ID80 Reserved"
- key: default
value: Problem
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment