Open arizzi opened 1 year ago
You can do this by switching to the custom_parameters.yaml file. Simply copy and paste the config you're using now into that then modify. I have a Solis S5 and using the RS485 Modbus guide I've made lots (relatively speaking) of changes. I also run it now as a manual sensor rather than as "integration" so I can get a faster refresh rate. My yaml is as follows:
# S5-GR1P(3-6)K
# Modbus information retrieved from:
# https://www.scss.tcd.ie/coghlan/Elios4you/RS485_MODBUS-Hybrid-BACoghlan-201811228-1854.pdf
# Ntries marked #OK seem to work correctly, those marked #BORKED are not yet working.
requests:
- start: 3005
end: 3024
mb_functioncode: 0x04
- start: 3035
end: 3043
mb_functioncode: 0x04
- start: 3056
end: 3058
mb_functioncode: 0x04
- start: 3066
end: 3071
mb_functioncode: 0x04
parameters:
- group: InverterStatus
items:
- name: "Inverter Status" #OK
class: ""
state_class: ""
uom: ""
scale: 1
rule: 1
registers: [3043]
isstr: true
lookup:
- key: 0
value: "Stand-by"
- key: 1
value: "Open Run"
- key: 2
value: "Soft Run"
- key: 3
value: "Generating"
icon: 'mdi:home-lightning-bolt'
- name: "Operating Status" #BORKED
class: ""
state_class: ""
uom: ""
scale: 1
rule: 2
registers: [3071]
icon: 'mdi:home-lightning-bolt'
- name: "Working Mode" #OK
class: ""
state_class: ""
uom: ""
scale: 1
rule: 1
registers: [3040]
isstr: true
lookup:
- key: 0
value: "No Response"
- key: 1
value: "Volt-Watt"
- key: 2
value: "Volt-VAr"
- key: 3
value: "Fixed PF"
- key: 4
value: "Fixed VAr"
- key: 5
value: "Power-PF"
- key: 6
value: "Rule21"
icon: 'mdi:home-lightning-bolt'
- name: "Inverter Temperature" #OK
class: "temperature"
state_class: "measurement"
uom: "°C"
scale: 0.1
rule: 2
registers: [3041]
icon: 'mdi:thermometer'
# - name: "Fault Status 01 (Grid)" #BORKED
# class: ""
# state_class: ""
# uom: ""
# scale: 1
# rule: 6
# registers: [3066]
# icon: 'mdi:alert'
# - name: "Fault Status 02 (DC)" #BORKED
# class: ""
# state_class: ""
# uom: ""
# scale: 1
# rule: 6
# registers: [3067]
# icon: 'mdi:alert'
# - name: "Fault Status 03 (Protection)" #BORKED
# class: ""
# state_class: ""
# uom: ""
# scale: 1
# rule: 6
# registers: [3068]
# icon: 'mdi:alert'
# - name: "Fault Status 04 (Device)" #BORKED
# class: ""
# state_class: ""
# uom: ""
# scale: 1
# rule: 6
# registers: [3069]
# icon: 'mdi:alert'
- group: InverterDC
items:
- name: "PV1 Voltage" #OK
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [3021]
icon: 'mdi:solar-power'
- name: "PV1 Current" #OK
class: "current"
uom: "A"
scale: 0.1
rule: 1
registers: [3022]
icon: 'mdi:current-dc'
- name: "PV2 Voltage" #OK
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [3023]
icon: 'mdi:solar-power'
- name: "PV2 Current" #OK
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.1
rule: 1
registers: [3024]
icon: 'mdi:current-dc'
- name: "Inverter DC Power" #OK
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 3
registers: [3007,3008]
icon: 'mdi:solar-power'
- group: InverterAC
items:
- name: "Inverter Voltage" #OK
class: "voltage"
state_class: "measurement"
uom: "V"
scale: 0.1
rule: 1
registers: [3035]
icon: 'mdi:transmission-tower'
- name: "Inverter Current" #OK - relative to apparent power
class: "current"
state_class: "measurement"
uom: "A"
scale: 0.1
rule: 1
registers: [3038]
icon: 'mdi:current-ac'
- name: "Inverter Active Power" #OK
class: "power"
state_class: "measurement"
uom: "W"
scale: 1
rule: 4
registers: [3005,3006]
icon: 'mdi:transmission-tower'
- name: "Inverter Reactive Power" #OK
class: "reactive_power"
state_class: "measurement"
uom: "VAr"
scale: 1
rule: 4
registers: [3056]
icon: 'mdi:transmission-tower'
- name: "Inverter Apparent Power" #OK
class: "apparent_power"
state_class: "measurement"
uom: "VA"
scale: 1
rule: 4
registers: [3058]
icon: 'mdi:transmission-tower'
- name: "Inverter Frequency" #OK
class: "frequency"
state_class: "measurement"
uom: "Hz"
scale: 0.01
rule: 1
registers: [3042]
icon: 'mdi:sine-wave'
- name: "Power Limitation" #BORKED
class: ""
state_class: "measurement"
uom: "%"
scale: 0.01
rule: 1
registers: [3050]
icon: 'mdi:alert'
- group: Generation
items:
- name: "Daily Generation" #OK
class: "energy"
state_class: "measurement"
uom: "kWh"
scale: 0.1
rule: 1
registers: [3014]
icon: 'mdi:solar-power'
- name: "Monthly Generation" #OK
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [3011,3012]
icon: 'mdi:solar-power'
- name: "Yearly Generation" #OK
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [3017,3018]
icon: 'mdi:solar-power'
- name: "Total Generation" #OK
class: "energy"
state_class: "total_increasing"
uom: "kWh"
scale: 1
rule: 3
registers: [3009,3010]
icon: 'mdi:solar-power'
The borked ones need me to figure out how to read the values of the individual bits in a string....and I'm not that smart (yet). As for last month, yesterday generation data you just copy the equivalent ones and insert the register references (bearing in mind you always need the register number - 1 as the read location, so if the document says you need #3041 your config has to call #3040....just because we sraet counting at 1 but the register starts at 0).
in solisman3 library there are plenty of other registers not implemented in solarman (see https://github.com/NosIreland/solismon3/blob/master/config/registers.py) A few nice one to add would be those for "yesterday's" "this/last month" and "this/last year" production.
If it is considered useful I can add them to the solis_hybrid.yaml (not sure if they work ok with other brands)