Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- modbus:
- id: modbus1
- uart_id: mod_bus
- modbus_controller:
- - id: growatt
- ## the Modbus device addr
- address: 0x1
- update_interval: 60s
- modbus_id: modbus1
- setup_priority: -10
- select:
- - platform: modbus_controller
- name: "Inverter AC Charging"
- icon: mdi:battery-charging-100
- address: 3049
- value_type: U_WORD
- optionsmap:
- "Disabled": 0
- "Enabled": 1
- - platform: modbus_controller
- name: "Inverter Anti-Backflow"
- icon: mdi:battery-charging-100
- address: 122
- value_type: U_WORD
- optionsmap:
- "Disabled": 0
- "Enabled": 1
- - platform: modbus_controller
- name: "Inverter"
- icon: mdi:battery-charging-100
- address: 00
- value_type: U_WORD
- optionsmap:
- "Off": 0
- "On": 1
- - platform: template
- name: "Inverter Mode"
- id: chg_mode
- icon: mdi:battery-charging-100
- restore_value: true
- options:
- - "LoadFirst"
- - "BatteryFirst"
- - "GridFirst"
- # when enabling lambda you need to disable restore_value and initial_option, however every boot of the ESP will lead to a Modbus Write command therefore I changed it.
- # lambda:
- # if ((id(priority).state) == 2) {
- # return {"GridFirst"};
- # } else if ((id(priority).state) == 1) {
- # return {"BatteryFirst"};
- # } else {
- # return {"LoadFirst"};
- # }
- set_action:
- - lambda: |-
- id(chg_mode).state = x.c_str();
- id(chg_mode).publish_state(x);
- on_value:
- then:
- - lambda: |-
- if (x == "LoadFirst") {
- esphome::modbus_controller::ModbusController *controller = id(growatt);
- std::vector<uint16_t> load_first={32768,5947};
- int size = load_first.size();
- ESP_LOGI("ModbusLambda","Enqueue Writes");
- //Load first
- controller->queue_command(esphome::modbus_controller::ModbusCommandItem::create_write_multiple_command(controller,3038,size,load_first));
- ESP_LOGI("ModbusLambda","Writes");
- } else if ( x == "BatteryFirst") {
- esphome::modbus_controller::ModbusController *controller = id(growatt);
- std::vector<uint16_t> bat_first={40960,5947};
- int size = bat_first.size();
- ESP_LOGI("ModbusLambda","Enqueue Writes");
- //Load first
- controller->queue_command(esphome::modbus_controller::ModbusCommandItem::create_write_multiple_command(controller,3038,size,bat_first));
- ESP_LOGI("ModbusLambda","Writes");
- } else if ( x == "GridFirst") {
- esphome::modbus_controller::ModbusController *controller = id(growatt);
- std::vector<uint16_t> grid_first={49152,5947};
- int size = grid_first.size();
- ESP_LOGI("ModbusLambda","Enqueue Writes");
- //Load first
- controller->queue_command(esphome::modbus_controller::ModbusCommandItem::create_write_multiple_command(controller,3038,size,grid_first));
- ESP_LOGI("ModbusLambda","Writes");
- }
- button:
- - platform: restart
- name: ${name} "Restart"
- text_sensor:
- - platform: template
- name: "Status"
- icon: mdi:eye
- entity_category: diagnostic
- update_interval: 10s
- lambda: |-
- if ((id(status).state) == 1) {
- return {"Normal"};
- } else if ((id(status).state) == 0) {
- return {"Standby"};
- } else if ((id(status).state) == 2) {
- return {"Discharge"};
- } else if ((id(status).state) == 3) {
- return {"Fault"};
- } else if ((id(status).state) == 4) {
- return {"Flash"};
- } else if ((id(status).state) == 5) {
- return {"PV Charging"};
- } else if ((id(status).state) == 6) {
- return {"AC Charging"};
- } else if ((id(status).state) == 7) {
- return {"Combined Charging"};
- } else if ((id(status).state) == 8) {
- return {"Combined Charging & Bypass"};
- } else if ((id(status).state) == 9) {
- return {"PV Charging & Bypass"};
- } else if ((id(status).state) == 10) {
- return {"AC Charging & Bypass"};
- } else if ((id(status).state) == 11) {
- return {"Bypass"};
- } else if (id(status).state == 12) {
- return {"PV Charge and Discharge"};
- } else {
- return {"Unknown"};
- }
- - platform: template
- name: "Priority"
- icon: mdi:eye
- entity_category: diagnostic
- update_interval: 10s
- lambda: |-
- if ((id(priority).state) == 0) {
- return {"LoadFirst"};
- } else if ((id(priority).state) == 1) {
- return {"BatteryFirst"};
- } else if ((id(priority).state) == 2) {
- return {"GridFirst"};
- } else {
- return {"Unknown"};
- }
- - platform: template
- name: "AC Charge Status"
- icon: mdi:transmission-tower
- entity_category: diagnostic
- update_interval: 10s
- lambda: |-
- if ((id(acchargestatus).state) == 0) {
- return {"Disabled"};
- } else if ((id(acchargestatus).state) == 1) {
- return {"Enabled"};
- } else {
- return {"Unknown"};
- }
- - platform: template
- name: "Anti Backflow Status"
- icon: mdi:transmission-tower
- entity_category: diagnostic
- update_interval: 10s
- lambda: |-
- if ((id(antibackflow).state) == 0) {
- return {"Disabled"};
- } else if ((id(antibackflow).state) == 1) {
- return {"Enabled meter1"};
- } else if ((id(antibackflow).state) == 2) {
- return {"Enabled meter2"};
- } else if ((id(antibackflow).state) == 3) {
- return {"Enabled CT exportlimit"};
- } else {
- return {"Unknown"};
- }
- number:
- - platform: modbus_controller
- name: "Discharge Rate"
- address: 3036
- register_type: holding
- value_type: U_WORD
- min_value: 10
- max_value: 100
- step: 1
- - platform: modbus_controller
- name: "Charge Rate"
- address: 3047
- register_type: holding
- value_type: U_WORD
- min_value: 10
- max_value: 100
- step: 1
- - platform: modbus_controller
- name: "SOC Charge limit"
- address: 3048
- register_type: holding
- value_type: U_WORD
- min_value: 10
- max_value: 100
- step: 1
- - platform: modbus_controller
- name: "SOC Discharge limit"
- address: 3037
- register_type: holding
- value_type: U_WORD
- min_value: 10
- max_value: 100
- step: 1
- - platform: modbus_controller
- name: "Antibackflow Rate"
- address: 123
- register_type: holding
- value_type: S_WORD
- min_value: -1000
- max_value: 1000
- step: 10
- sensor:
- - platform: wifi_signal
- name: "WiFi Signal Sensor"
- update_interval: 60s
- - platform: modbus_controller
- name: "ACChargeEnable"
- internal: true
- address: 3049
- register_type: holding
- id: acchargestatus
- - platform: modbus_controller
- name: "AntiBackflow"
- internal: true
- address: 122
- register_type: holding
- id: antibackflow
- - platform: modbus_controller
- address: 3000
- register_type: "read"
- internal: true
- accuracy_decimals: 0
- id: status
- - platform: modbus_controller
- address: 3144
- register_type: "read"
- internal: true
- accuracy_decimals: 0
- id: priority
- - platform: modbus_controller
- name: "Output Power AC"
- address: 3023
- register_type: "read"
- unit_of_measurement: W
- device_class: power
- icon: mdi:flash
- value_type: S_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Input Power DC"
- address: 3001
- register_type: "read"
- unit_of_measurement: W
- device_class: power
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "DcPower PV1"
- address: 3005
- register_type: "read"
- unit_of_measurement: W
- device_class: power
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "DcVoltage PV1"
- address: 3003
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "DcInputCurrent PV1"
- address: 3004
- register_type: "read"
- unit_of_measurement: A
- device_class: current
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "DcPower PV2"
- address: 3009
- register_type: "read"
- unit_of_measurement: W
- device_class: power
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "DcVoltage PV2"
- address: 3007
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "DcInputCurrent PV2"
- address: 3008
- register_type: "read"
- unit_of_measurement: A
- device_class: current
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcFrequency"
- address: 3025
- register_type: "read"
- unit_of_measurement: Hz
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.01
- - platform: modbus_controller
- name: "AcVoltage PH1"
- address: 3026
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcOutputCurrent PH1"
- address: 3027
- register_type: "read"
- unit_of_measurement: A
- device_class: current
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcPower PH1"
- address: 3028
- register_type: "read"
- unit_of_measurement: W
- state_class: measurement
- device_class: power
- icon: mdi:solar-power
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcVoltage PH2"
- address: 3030
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcOutputCurrent PH2"
- address: 3031
- register_type: "read"
- unit_of_measurement: A
- device_class: current
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcPower PH2"
- address: 3032
- register_type: "read"
- unit_of_measurement: W
- state_class: measurement
- device_class: power
- icon: mdi:solar-power
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcVoltage PH3"
- address: 3034
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcOutputCurrent PH3"
- address: 3035
- register_type: "read"
- unit_of_measurement: A
- device_class: current
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcPower PH3"
- address: 3036
- register_type: "read"
- unit_of_measurement: W
- state_class: measurement
- device_class: power
- icon: mdi:solar-power
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcVoltage RS"
- address: 3038
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcVoltage ST"
- address: 3039
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AcVoltage TR"
- address: 3040
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today Energy Generated"
- address: 3049
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Energy Generated"
- address: 3051
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Runtime"
- #address: 3047
- address: 57
- register_type: "read"
- unit_of_measurement: s
- state_class: total
- device_class: duration
- icon: mdi:clock-outline
- value_type: U_DWORD
- accuracy_decimals: 0
- filters:
- #- multiply: 0.00013888888
- - multiply: 0.5
- - platform: modbus_controller
- name: "Temperature Inverter"
- address: 3093
- register_type: "read"
- unit_of_measurement: °C
- device_class: temperature
- icon: mdi:thermometer
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Temperature IPM"
- address: 3094
- register_type: "read"
- unit_of_measurement: °C
- device_class: temperature
- icon: mdi:thermometer
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Temperature Boost"
- address: 3095
- register_type: "read"
- unit_of_measurement: °C
- device_class: temperature
- icon: mdi:thermometer
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Temperature Communication broad"
- address: 3097
- register_type: "read"
- unit_of_measurement: °C
- device_class: temperature
- icon: mdi:thermometer
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Battery Discharging Power"
- address: 3178
- register_type: "read"
- unit_of_measurement: kW
- state_class: measurement
- device_class: power
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 3
- filters:
- - multiply: 0.0001
- - platform: modbus_controller
- name: "Battery Charging Power"
- address: 3180
- register_type: "read"
- unit_of_measurement: kW
- state_class: measurement
- device_class: power
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 3
- filters:
- - multiply: 0.0001
- - platform: modbus_controller
- name: "Battery Voltage"
- address: 3216
- register_type: "read"
- unit_of_measurement: V
- device_class: voltage
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.01
- - platform: modbus_controller
- name: "Battery Charge"
- address: 3215
- register_type: "read"
- unit_of_measurement: "%"
- icon: mdi:flash
- value_type: U_WORD
- accuracy_decimals: 0
- - platform: modbus_controller
- name: "Today Battery Discharge"
- address: 3125
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Battery Discharge"
- address: 3127
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today Battery Charge"
- address: 3129
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Battery Charge"
- address: 3131
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today From Grid"
- address: 3067
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total From Grid"
- address: 3069
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today To Grid"
- address: 3071
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total To Grid"
- address: 3073
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today To User Load"
- address: 3075
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total To User Load"
- address: 3077
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Forward Power"
- address: 3041
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "AC Load consumption"
- address: 3045
- register_type: "read"
- unit_of_measurement: W
- state_class: measurement
- device_class: power
- icon: mdi:flash
- value_type: S_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Production PV1"
- address: 3057
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today Production PV1"
- address: 3055
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- id: todaypv1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Production PV2"
- address: 3061
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Today Production PV2"
- address: 3059
- register_type: "read"
- unit_of_measurement: kWh
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- id: todaypv2
- filters:
- - multiply: 0.1
- - platform: modbus_controller
- name: "Total Production PVAll"
- address: 3053
- register_type: "read"
- unit_of_measurement: kWh
- state_class: total
- device_class: energy
- icon: mdi:flash
- value_type: U_DWORD
- accuracy_decimals: 1
- filters:
- - multiply: 0.1
- id: totalpvall
- - platform: template
- name: "Today PV ALL"
- unit_of_measurement: 'kWh'
- lambda: return (id(todaypv1).state + id(todaypv2).state);
Advertisement
Add Comment
Please, Sign In to add comment