MC24xx - martgras/esphome GitHub Wiki
MPPT Solar Charge Controller MC2420/30/40/50N10
This device can be connected directly to the esp TX/RX pins without using a RS232/RS485 adapter using the RS232 or the TTL interface. Signal level is 3.3V
Ref: https://www.srnesolar.com/product/mppt-solar-charge-controller-ml4860-2
Kudos to @phpphph for testing the configuration
substitutions:
updates: 60s
unique_id: solarstation
esphome:
name: ${unique_id}
platform: ESP32
board: esp32dev
# Enable logging
logger:
level: DEBUG
uart:
id: mod_bus
tx_pin: 17
rx_pin: 16
baud_rate: 9600
stop_bits: 1
modbus:
#flow_control_pin: 23
send_wait_time: 200ms
id: mod_bus_mcp2420
modbus_controller:
- id: mcp2420
## the Modbus device addr
address: 0x1
modbus_id: mod_bus_mcp2420
command_throttle: 200ms
setup_priority: -10
update_interval: ${updates}
sensor:
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Maximum Voltage"
address: 0xA
bitmask: 0xFF00
unit_of_measurement: "V"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Rated charging current"
address: 0xA
bitmask: 0x00FF
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Rated Discharge current"
address: 0xB
bitmask: 0xFF00
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Battery SOC"
address: 0x100
bitmask: 0x00FF
unit_of_measurement: "%"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Battery Voltage"
id: battery_voltage
address: 0x101
unit_of_measurement: "V"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "recharging current"
id: charging_current
address: 0x102
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Controller Temp"
address: 0x103
bitmask: 0xFF00
unit_of_measurement: "°C"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Surface Temp"
address: 0x103
bitmask: 0x00FF
unit_of_measurement: "°C"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Load Voltage"
address: 0x104
unit_of_measurement: "V"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Load Current"
address: 0x105
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Load Power"
address: 0x106
unit_of_measurement: "W"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Solar Voltage"
address: 0x107
unit_of_measurement: "V"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Solar Current"
address: 0x108
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Solar Power"
id: solar_power
address: 0x109
unit_of_measurement: "W"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Lowest Battery Voltage today"
address: 0x10B
unit_of_measurement: "V"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Highest Battery Voltage today"
address: 0x10C
unit_of_measurement: "V"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Maximum charge current today"
address: 0x10D
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Maximum discharge current today"
address: 0x10E
unit_of_measurement: "A"
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Maximum charge power today"
address: 0x10F
unit_of_measurement: "W"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Maximum discharge power today"
address: 0x110
unit_of_measurement: "W"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total charge ampere hours today"
address: 0x111
unit_of_measurement: "AH"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total discharge ampere hours today"
address: 0x112
unit_of_measurement: "AH"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total power created today"
address: 0x113
unit_of_measurement: "W"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total power consumed today"
address: 0x114
unit_of_measurement: "W"
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total operating days"
address: 0x115
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total battery over-discharge times"
address: 0x116
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total battery charge times"
address: 0x117
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total battery charging ampere hours"
address: 0x118
register_type: holding
value_type: U_DWORD
accuracy_decimals: 0
unit_of_measurement: "AH"
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Total battery discharge ampere hours"
address: 0x11A
register_type: holding
value_type: U_DWORD
accuracy_decimals: 0
unit_of_measurement: "AH"
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Cumulative power"
address: 0x11C
register_type: holding
value_type: U_DWORD
accuracy_decimals: 0
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: mcp2420
name: "Cumulative power consumption"
address: 0x11E
register_type: holding
value_type: U_DWORD
accuracy_decimals: 0
unit_of_measurement: "W"
## Calculate Conversion efficiency
- platform: template
name: "Conversion efficiency"
lambda: "return 100.0f * (id(battery_voltage).state * id(charging_current).state) / id(solar_power).state ;"
unit_of_measurement: "%"
update_interval: ${updates}