espmodbus
esphome:
name: modbus
friendly_name: ModBus
globals:
- id: deye_sn
type: std::string
initial_value: '""'
- id: last_deye_reading
type: unsigned long
initial_value: "0"
substitutions:
name: deyeinverterreader
device_description: "Esphome component for Deye SUN-6K-SG04LP1" #Description in ESPhome
modbus_controller_id: sg04lp1 #just a random name for the modbus controler
esp8266:
board: nodemcuv2
# Enable logging
logger:
level: INFO
baud_rate: 0
hardware_uart: UART1
web_server:
port: 80
captive_portal:
uart:
id: modbus_uart
rx_pin:
number: GPIO13
mode: INPUT_PULLUP
tx_pin: GPIO1 # D10 — Default UART0 TX
baud_rate: 9600
data_bits: 8
parity: NONE
stop_bits: 1
# ❌ REMOVED hardware_uart: UART0 — this line caused the error
# Modbus
modbus:
id: modbus_bus
uart_id: modbus_uart
flow_control_pin: GPIO5 # D1 — MAX485 DE+RE pin
send_wait_time: 400ms # ⬅️ Increase from 200 to 300 or 400
modbus_controller:
- id: deye
address: 1 # Deye default slave ID
modbus_id: modbus_bus
update_interval: 30s
# Example Sensors
sensor:
- platform: modbus_controller
modbus_controller_id: deye
name: "Battery SOC"
device_class: battery
state_class: measurement
address: 184
register_type: holding
value_type: U_WORD
unit_of_measurement: "%"
- platform: modbus_controller
modbus_controller_id: deye
name: "Battery Power"
device_class: power
state_class: measurement
address: 190
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: deye
name: "Battery Current"
device_class: current
state_class: measurement
address: 191
register_type: holding
value_type: S_WORD
filters:
multiply: 0.01
unit_of_measurement: "A"
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: deye
name: "Grid Power"
device_class: power
state_class: measurement
address: 169
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: deye
name: "Grid Power (Total)"
device_class: energy
address: 78
register_type: holding
value_type: U_WORD
filters:
- multiply: 0.0001
unit_of_measurement: "MWh"
accuracy_decimals: 2
state_class: total_increasing
- platform: modbus_controller
modbus_controller_id: deye
name: "Grid Power (Daily)"
device_class: energy
state_class: total_increasing
address: 76
register_type: holding
value_type: U_WORD
unit_of_measurement: "kWh"
filters:
- multiply: 0.1
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: deye
name: "Grid Voltage"
address: 150
device_class: voltage
state_class: measurement
filters:
- multiply: 0.1
accuracy_decimals: 1
register_type: holding
value_type: U_WORD
unit_of_measurement: "V"
- platform: modbus_controller
modbus_controller_id: deye
name: "Load Power (Daily)"
device_class: energy
state_class: total_increasing
address: 84
register_type: holding
filters:
- multiply: 0.1
value_type: U_WORD
accuracy_decimals: 1
unit_of_measurement: "kWh"
- platform: modbus_controller
modbus_controller_id: deye
name: "Load Power"
device_class: power
state_class: measurement
address: 178
register_type: holding
value_type: U_WORD
unit_of_measurement: "W"
- platform: modbus_controller
name: "Load Power (Total)"
device_class: energy
state_class: total_increasing
modbus_controller_id: deye
address: 85
register_type: holding
value_type: U_DWORD_R
unit_of_measurement: "MWh"
filters:
multiply: 0.0001
accuracy_decimals: 2
- platform: modbus_controller
modbus_controller_id: deye
name: "PV Production (Daily)"
state_class: total_increasing
device_class: energy
address: 108
register_type: holding
value_type: U_WORD
unit_of_measurement: "kWh"
filters:
- multiply: 0.1
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: deye
name: "PV Production (Total)"
device_class: energy
state_class: total_increasing
address: 96
register_type: holding
value_type: U_DWORD_R
unit_of_measurement: "MWh"
filters:
- multiply: 0.0001
accuracy_decimals: 2
- platform: modbus_controller
modbus_controller_id: deye
name: "PV1 Power"
device_class: power
state_class: measurement
address: 186
register_type: holding
value_type: U_WORD
unit_of_measurement: "W"
id: pv1
- platform: modbus_controller
modbus_controller_id: deye
name: "PV2 Power"
device_class: power
state_class: measurement
address: 187
register_type: holding
value_type: U_WORD
unit_of_measurement: "W"
id: pv2
- platform: modbus_controller
modbus_controller_id: deye
name: "Battery Temperature"
device_class: temperature
state_class: measurement
address: 182
register_type: holding
value_type: U_WORD
unit_of_measurement: "°C"
filters:
- lambda: return (x - 1000.0) / 10.0;
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: deye
name: "Inverter Temperature"
device_class: temperature
state_class: measurement
address: 90
register_type: holding
value_type: U_WORD
unit_of_measurement: "°C"
filters:
- lambda: return (x - 1000.0) / 10.0;
accuracy_decimals: 1
- platform: template
name: "PV Power"
id: pv_power
unit_of_measurement: "W"
device_class: power
state_class: measurement
lambda: |-
return id(pv1).state + id(pv2).state;
# added
- platform: modbus_controller
modbus_controller_id: deye
register_type: holding
address: 70
name: "Battery Charge (Daily)"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: deye
register_type: holding
address: 71
name: "Battery Discharge (Daily)"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
espmodbus.txt · Last modified: by jwan
