forked from esphome/esphome
-
Notifications
You must be signed in to change notification settings - Fork 11
EASUN ISOLAR SMG II 5.6KW WIFI
papi111 edited this page Dec 14, 2022
·
1 revision
Work on EASUN ISOLAR-SMG-II-5,6KW-WIFI maybe on others EASUN inveters with Modbus communication. Used with RS232/ttl converter prepared from OEM Wifi modul delivered with inverter + 12V to 3.3V converter.
Foto RS232/ttl + 12V/3.3V + ESP32
easun-modbus-1.yaml
esphome:
name: easun-modbus-1
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: ""
ota:
password: ""
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Easun-Modbus-1 Fallback Hotspot"
password: ""
captive_portal:
uart:
id: mod_bus
tx_pin: 17
rx_pin: 16
baud_rate: 9600
stop_bits: 1
modbus:
id: modbus1
modbus_controller:
- id: easun
## the Modbus device addr
address: 0x1
modbus_id: modbus1
setup_priority: -10
update_interval: 1s
packages:
easun_sensors: !include easun/easun_sensors.yaml
easun_read_setting: !include easun/easun_read_setting.yaml
easun_read_textsetting: !include easun/easun_read_textsetting.yaml
sensor:
- platform: modbus_controller
modbus_controller_id: easun
name: "Mains Power"
id: mains_power
register_type: holding
value_type: S_WORD
address: 0xCC
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Average Power"
id: inverter_average_power
value_type: S_WORD
register_type: holding
address: 0xD0
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Charging Power"
id: inverter_charging_power
register_type: holding
address: 0xD1
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "Output Active Power"
id: output_active_power
register_type: holding
address: 0xD5
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "Battery Average Voltage"
id: battery_average_voltage
register_type: holding
address: 0xD7
unit_of_measurement: "V"
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Battery Average Current"
id: battery_average_current
register_type: holding
address: 0xD8
unit_of_measurement: "A"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Battery Average Power"
id: battery_average_power
register_type: holding
address: 0xD9
value_type: S_WORD
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "PV Average Power"
id: pv_average_power
register_type: holding
address: 0xDF
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "PV Charging Average Power"
id: pv_charging_average_power
register_type: holding
address: 0xE0
unit_of_measurement: "W"
- platform: modbus_controller
modbus_controller_id: easun
name: "Battery Average Current +-"
id: battery_average_current2
register_type: holding
address: 0xE8
value_type: S_WORD
unit_of_measurement: "A"
accuracy_decimals: 1
filters:
- multiply: 0.1
easun_sensors.yaml stored on folder easun
sensor:
- platform: modbus_controller
modbus_controller_id: easun
name: "Mains Voltage"
id: mains_voltage
register_type: holding
address: 0xCA
unit_of_measurement: "V"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Mains Frequency"
id: mains_frequency
register_type: holding
address: 0xCB
unit_of_measurement: "Hz"
skip_updates: 5
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Voltage"
id: inverter_voltage
register_type: holding
address: 0xCD
unit_of_measurement: "V"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Current"
id: inverter_current
register_type: holding
address: 0xCE
unit_of_measurement: "A"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Frequency"
id: inverter_frequency
register_type: holding
address: 0xCF
unit_of_measurement: "Hz"
skip_updates: 5
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: easun
name: "Output Effective Voltage"
id: output_effective_voltage
register_type: holding
address: 0xD2
unit_of_measurement: "V"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Output Effective Current"
id: output_effective_current
register_type: holding
address: 0xD3
unit_of_measurement: "A"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Output Frequency"
id: output_frequency
register_type: holding
address: 0xD4
unit_of_measurement: "Hz"
skip_updates: 5
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: easun
name: "PV Average Voltage"
id: pv_average_voltage
register_type: holding
address: 0xDB
unit_of_measurement: "V"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "PV Average Current"
id: pv_average_current
register_type: holding
address: 0xDC
unit_of_measurement: "A"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Load Percentage"
id: load_percentage
register_type: holding
address: 0xE1
unit_of_measurement: "%"
skip_updates: 5
- platform: modbus_controller
modbus_controller_id: easun
name: "DCDC Temperature"
id: dcdc_temperature
register_type: holding
address: 0xE2
skip_updates: 5
unit_of_measurement: "℃"
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Temperature"
id: inverter_temperature
register_type: holding
address: 0xE3
skip_updates: 5
unit_of_measurement: "℃"
- platform: modbus_controller
modbus_controller_id: easun
name: "Battery Percentage"
id: battery_percentage
register_type: holding
address: 0xE5
skip_updates: 5
unit_of_measurement: "%"
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: easun
name: "Output Apparent Power"
id: output_apparent_power
register_type: holding
address: 0xD6
skip_updates: 5
unit_of_measurement: "VA"
- platform: modbus_controller
modbus_controller_id: easun
name: "Inverter Charging Average Current"
id: inverter_charging_average_current
register_type: holding
address: 0xE9
unit_of_measurement: "A"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "PV Charging Average Current"
id: pv_charging_average_current
register_type: holding
address: 0xEA
unit_of_measurement: "A"
skip_updates: 5
accuracy_decimals: 1
filters:
- multiply: 0.1
easun_read_setting.yaml stored on folder easun
sensor:
- platform: modbus_controller
modbus_controller_id: easun
name: Set Output Voltage
id: set_output_voltage
register_type: holding
address: 0x140
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: "Set Output Frequency"
id: set_output_frequency
register_type: holding
address: 0x141
skip_updates: 30
unit_of_measurement: "Hz"
value_type: U_WORD
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: easun
name: Set Bat Overvoltage Protection
id: set_bat_overvoltage
register_type: holding
address: 0x143
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Max Charging Voltage
id: set_max_charging_voltage
register_type: holding
address: 0x144
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Floating Charging Voltage
id: set_floating_charging_voltage
register_type: holding
address: 0x145
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Bat Recovery Voltage
id: set_bat_recovery_voltage
register_type: holding
address: 0x146
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Bat Low Voltage Protection Grid
id: set_bat_low_voltage_grid
register_type: holding
address: 0x147
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Bat Low Voltage Protection Off-Grid
id: set_bat_low_voltage_offgrid
register_type: holding
address: 0x149
skip_updates: 30
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Max Charging Current
id: set_max_charging_current
register_type: holding
address: 0x14C
skip_updates: 30
unit_of_measurement: "A"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: easun
name: Set Max Charging Current Grid
id: set_max_charging_current_grid
register_type: holding
address: 0x14D
skip_updates: 30
unit_of_measurement: "A"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
easun_read_textsetting.yaml stored on folder easun
text_sensor:
- platform: modbus_controller
modbus_controller_id: easun
id: output_mode_text
register_type: holding
address: 0x12C
raw_encode: HEXBYTES
name: Set Output Mode
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("Parallel");
case 2: return std::string("3 Phase L1");
case 3: return std::string("3 Phase L2");
case 4: return std::string("3 Phase L3");
default: return std::string("Single");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
id: output_priority_text
register_type: holding
address: 0x12D
raw_encode: HEXBYTES
name: Set Output Priority
skip_updates: 5
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("PV-Utility-Battery");
case 2: return std::string("PV-Battery-Utility");
default: return std::string("Utility-PV-Battery");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Input Voltage Range
id: input_voltage_range
register_type: holding
address: 0x12E
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("Narrow range");
default: return {"Wide range"};
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Buzzer Mode
id: buzzer_mode
register_type: holding
address: 0x12F
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("Change-Warning-Fault");
case 2: return std::string("Warning-Fault");
case 3: return std::string("Only Fault");
default: return std::string("Mute");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set LCD Backlight
id: lcd_backlight
register_type: holding
address: 0x131
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("Always ON");
default: return std::string("Timed OFF");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set LCD Homepage Autoreturns
id: lcd_homepage_autoreturns
register_type: holding
address: 0x132
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("1 minute return");
default: return std::string("Do not return");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Energy-Saving Mode
id: energysaving_mode
register_type: holding
address: 0x133
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("ON");
default: return std::string("OFF");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Overload Automatic Restart
id: overload_automatic_restart
register_type: holding
address: 0x134
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("ON");
default: return std::string("OFF");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Overtemperature Automatic Restart
id: overtemp_automatic_restart
register_type: holding
address: 0x135
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("ON");
default: return std::string("OFF");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Overload Transfer to Bypass
id: overload_bypass
register_type: holding
address: 0x136
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("ON");
default: return std::string("OFF");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Battery Eq Mode
id: battery_eq_mode
register_type: holding
address: 0x139
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("Enable");
default: return std::string("Disable");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Battery Charg Priority
id: battery_charg_priority
register_type: holding
address: 0x14B
raw_encode: HEXBYTES
skip_updates: 5
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("PV Priority");
case 2: return std::string("PV=Utility");
case 3: return std::string("PV Only");
default: return std::string("Utility");
}
return x;
- platform: modbus_controller
modbus_controller_id: easun
name: Set Turn on Mode
id: turn_on_mode
register_type: holding
address: 0x1A4
raw_encode: HEXBYTES
skip_updates: 60
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 1: return std::string("Only Lokal");
case 2: return std::string("Only Remote");
default: return std::string("Lokal or Remote");
}
return x;