ESP32 code for SNRE inverter.
unknown
yaml
2 hours ago
18 kB
4
Indexable
esphome:
name: 8channel-relay-new
friendly_name: Solar-Relay-new
min_version: 2026.4.0
name_add_mac_suffix: false
esp32:
variant: esp32
framework:
type: esp-idf
logger:
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# --- I2C BUS ---
i2c:
sda: GPIO21
scl: GPIO22
scan: true
# --- UART BUSES ---
uart:
- id: inverter_uart
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 9600
stop_bits: 1
rx_buffer_size: 1536
# --- MODBUS & CONTROLLERS ---
modbus:
- id: srne_inverter_modbus
uart_id: inverter_uart
modbus_controller:
- id: srne_inverter_controller
modbus_id: srne_inverter_modbus
setup_priority: -10
update_interval: 22s
address: 1
command_throttle: 200ms
# --- SENSORS ---
sensor:
# ----------------------------------
# Local Environment Sensors
# ----------------------------------
- platform: bme280_i2c
temperature:
name: "Solar Room Temperature"
oversampling: 16x
pressure:
name: "Solar Room Pressure"
humidity:
name: "Solar Room Humidity"
address: 0x76
- platform: adc
pin: GPIO34
name: "Solar Room Gas Sensor"
update_interval: 10s
# ----------------------------------
# SRNE Inverter Modbus Registers
# ----------------------------------
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery State of Charge"
register_type: holding
address: 0x0100
value_type: U_WORD
unit_of_measurement: "%"
device_class: battery
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Voltage"
id: battery_voltage
register_type: holding
address: 0x0101
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Current"
id: battery_current
register_type: holding
address: 0x0102
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: -0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Temperature"
register_type: holding
address: 0x0103
value_type: S_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV1 Voltage"
register_type: holding
address: 0x0107
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV1 Current"
register_type: holding
address: 0x0108
value_type: U_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV1 Power"
register_type: holding
address: 0x0109
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV Power (Total)"
register_type: holding
address: 0x010A
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV+AC Power"
register_type: holding
address: 0x010E
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV2 Voltage"
register_type: holding
address: 0x010F
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV2 Current"
register_type: holding
address: 0x0110
value_type: U_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "PV2 Power"
register_type: holding
address: 0x0111
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Grid L1 Voltage"
id: grid_l1_voltage
register_type: holding
address: 0x0213
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Grid L1 Current"
id: grid_l1_current
register_type: holding
address: 0x0214
value_type: U_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Grid Frequency"
register_type: holding
address: 0x0215
value_type: U_WORD
unit_of_measurement: "Hz"
device_class: frequency
state_class: measurement
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Output L1 Voltage"
register_type: holding
address: 0x0216
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Output L1 Current"
register_type: holding
address: 0x0217
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Output Frequency"
register_type: holding
address: 0x0218
value_type: U_WORD
unit_of_measurement: "Hz"
device_class: frequency
state_class: measurement
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Load L1 Current"
register_type: holding
address: 0x0219
value_type: U_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Load L1 Power"
id: load_l1_power
register_type: holding
address: 0x021B
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Load L1 Apparent Power"
register_type: holding
address: 0x021C
value_type: U_WORD
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "DC Temperature"
register_type: holding
address: 0x0220
value_type: S_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "AC Temperature"
register_type: holding
address: 0x0221
value_type: S_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Inverter Internal Temperature"
register_type: holding
address: 0x0222
value_type: S_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Grid L2 Voltage"
id: grid_l2_voltage
register_type: holding
address: 0x022A
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Output L2 Voltage"
register_type: holding
address: 0x022C
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Output L2 Current"
register_type: holding
address: 0x022E
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Load L2 Current"
register_type: holding
address: 0x0230
value_type: U_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Load L2 Power"
id: load_l2_power
register_type: holding
address: 0x0232
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Load L2 Apparent Power"
register_type: holding
address: 0x0234
value_type: U_WORD
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Grid L2 Current"
id: grid_l2_current
register_type: holding
address: 0x0238
value_type: U_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Today Production"
register_type: holding
address: 0xF02F
value_type: U_WORD
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Total Production"
register_type: holding
address: 0xF038
value_type: U_DWORD_R
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Today Energy Export"
register_type: holding
address: 0xF02C
value_type: U_WORD
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Total Energy Export"
register_type: holding
address: 0xF032
value_type: U_DWORD_R
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Today Energy Import"
register_type: holding
address: 0xF03D
value_type: U_WORD
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Total Energy Import"
register_type: holding
address: 0xF048
value_type: U_DWORD_R
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Today Load Consumption"
register_type: holding
address: 0xF030
value_type: U_WORD
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Total Load Consumption"
register_type: holding
address: 0xF03A
value_type: U_DWORD_R
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Today Battery Charge"
register_type: holding
address: 0xF02D
value_type: U_WORD
unit_of_measurement: "Ah"
state_class: total_increasing
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Today Battery Discharge"
register_type: holding
address: 0xF02E
value_type: U_WORD
unit_of_measurement: "Ah"
state_class: total_increasing
# ----------------------------------
# CUSTOM TEMPLATE SENSORS
# ----------------------------------
- platform: template
name: "Total AC Load Active Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
update_interval: 10s
lambda: |-
return id(load_l1_power).state + id(load_l2_power).state;
- platform: template
name: "Battery Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
update_interval: 10s
lambda: |-
return id(battery_voltage).state * id(battery_current).state;
- platform: template
name: "Total Grid Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
update_interval: 10s
lambda: |-
return (id(grid_l1_voltage).state * id(grid_l1_current).state) + (id(grid_l2_voltage).state * id(grid_l2_current).state);
# --- CONFIGURABLE SETTINGS ---
number:
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Discharge Limit"
register_type: holding
address: 0xE00F
value_type: U_WORD
unit_of_measurement: "%"
min_value: 0
max_value: 100
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Charge Limit"
register_type: holding
address: 0xE01D
value_type: U_WORD
unit_of_measurement: "%"
min_value: 0
max_value: 100
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Discharge Stop"
register_type: holding
address: 0xE01F
value_type: U_WORD
unit_of_measurement: "%"
min_value: 0
max_value: 100
- platform: modbus_controller
modbus_controller_id: srne_inverter_controller
name: "Battery Discharge Start"
register_type: holding
address: 0xE020
value_type: U_WORD
unit_of_measurement: "%"
min_value: 0
max_value: 100
# --- RELAYS ---
switch:
- platform: gpio
pin:
number: 32
inverted: true
name: "Victron Solar Reset"
id: relay_1
icon: "mdi:restart"
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 33
inverted: true
name: "System EMO"
id: relay_2
icon: "mdi:alert-octagon"
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 25
inverted: true
name: "Solar Room Fans"
id: relay_3
icon: "mdi:fan"
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 26
inverted: true
name: "Inverter Power Switch"
id: relay_4
icon: "mdi:power"
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 27
inverted: true
name: "Relay 5"
id: relay_5
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 14
inverted: true
name: "Relay 6"
id: relay_6
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 12
inverted: true
name: "Relay 7"
id: relay_7
restore_mode: ALWAYS_ON
- platform: gpio
pin:
number: 13
inverted: true
name: "Relay 8 (RS485 Power)"
id: relay_8
restore_mode: ALWAYS_ON
- platform: gpio
pin: 23
name: "Board Status LED"
id: board_led
restore_mode: ALWAYS_OFFEditor is loading...
Leave a Comment