User Tools

Site Tools


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki