330 lines
8.1 KiB
YAML
330 lines
8.1 KiB
YAML
number:
|
||
- platform: modbus_controller
|
||
modbus_controller_id: inverter1
|
||
id: remote_on_off
|
||
name: "Remote On⁄Off" # Inverter Off:0, Inverter On:1, BDC Off: 2, BDC On: 3
|
||
address: 0
|
||
register_type: holding
|
||
value_type: U_WORD
|
||
min_value: 0
|
||
max_value: 3
|
||
step: 1
|
||
icon: mdi:eye
|
||
entity_category: diagnostic
|
||
|
||
- platform: modbus_controller
|
||
modbus_controller_id: inverter1
|
||
id: max_output_power
|
||
name: "Max Output Power"
|
||
address: 3
|
||
register_type: holding
|
||
value_type: U_WORD
|
||
min_value: 0
|
||
max_value: 100
|
||
step: 1
|
||
unit_of_measurement: "%"
|
||
entity_category: config
|
||
|
||
sensor:
|
||
- platform: modbus_controller
|
||
name: "status_code"
|
||
skip_updates: $skip_updates_slow
|
||
address: 0
|
||
register_type: "read"
|
||
internal: true
|
||
accuracy_decimals: 0
|
||
id: status
|
||
|
||
- platform: modbus_controller
|
||
name: "Input Power"
|
||
address: 1
|
||
register_type: "read"
|
||
unit_of_measurement: W
|
||
device_class: power
|
||
state_class: measurement
|
||
icon: mdi:solar-power-variant
|
||
value_type: U_WORD
|
||
accuracy_decimals: 0
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "PV1 voltage"
|
||
address: 3
|
||
register_type: "read"
|
||
unit_of_measurement: V
|
||
device_class: voltage
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 0
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "PV1 current"
|
||
address: 4
|
||
register_type: "read"
|
||
unit_of_measurement: A
|
||
device_class: current
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "PV1 Active power"
|
||
id: pv1_power
|
||
address: 5
|
||
register_type: "read"
|
||
unit_of_measurement: W
|
||
device_class: power
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_DWORD
|
||
accuracy_decimals: 0
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "PV2 voltage"
|
||
address: 7
|
||
register_type: "read"
|
||
unit_of_measurement: V
|
||
device_class: voltage
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 0
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "PV2 current"
|
||
address: 8
|
||
register_type: "read"
|
||
unit_of_measurement: A
|
||
device_class: current
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "PV2 Active power"
|
||
id: pv2_power
|
||
address: 9
|
||
register_type: "read"
|
||
unit_of_measurement: W
|
||
device_class: power
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_DWORD
|
||
accuracy_decimals: 0
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "Frequency"
|
||
address: 37
|
||
register_type: "read"
|
||
unit_of_measurement: Hz
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.01
|
||
|
||
- platform: modbus_controller
|
||
name: "Voltage Phase A"
|
||
address: 38
|
||
register_type: "read"
|
||
unit_of_measurement: V
|
||
device_class: voltage
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "Current Phase A"
|
||
address: 39
|
||
register_type: "read"
|
||
unit_of_measurement: A
|
||
device_class: current
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_WORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "Power Phase A"
|
||
address: 40
|
||
register_type: "read"
|
||
unit_of_measurement: W
|
||
device_class: power
|
||
state_class: measurement
|
||
icon: mdi:flash
|
||
value_type: U_DWORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "Grid Active Power"
|
||
address: 35
|
||
register_type: "read"
|
||
unit_of_measurement: W
|
||
device_class: power
|
||
state_class: measurement
|
||
icon: mdi:solar-power
|
||
value_type: U_DWORD
|
||
accuracy_decimals: 0
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: template
|
||
id: pv_power
|
||
name: "PV Active Power"
|
||
unit_of_measurement: W
|
||
device_class: power
|
||
state_class: measurement
|
||
icon: mdi:solar-power-variant
|
||
accuracy_decimals: 0
|
||
lambda: |-
|
||
return float((id(pv1_power).state + id(pv2_power).state));
|
||
|
||
- platform: modbus_controller
|
||
name: "Today's generation"
|
||
skip_updates: $skip_updates_slow
|
||
address: 53
|
||
register_type: "read"
|
||
unit_of_measurement: kWh
|
||
state_class: total_increasing
|
||
device_class: energy
|
||
icon: mdi:solar-power
|
||
value_type: U_DWORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "Lifetime generation"
|
||
skip_updates: $skip_updates_slow
|
||
address: 55
|
||
register_type: "read"
|
||
unit_of_measurement: kWh
|
||
state_class: total_increasing
|
||
device_class: energy
|
||
icon: mdi:solar-power
|
||
value_type: U_DWORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
|
||
- platform: modbus_controller
|
||
name: "Inverter temperature"
|
||
address: 93
|
||
register_type: "read"
|
||
unit_of_measurement: °C
|
||
device_class: temperature
|
||
state_class: measurement
|
||
entity_category: diagnostic
|
||
icon: mdi:thermometer
|
||
value_type: U_WORD
|
||
accuracy_decimals: 1
|
||
filters:
|
||
- multiply: 0.1
|
||
skip_updates: $skip_updates_slow
|
||
|
||
select:
|
||
- platform: modbus_controller
|
||
name: "AC charging"
|
||
icon: mdi:battery-charging-100
|
||
address: 1092
|
||
value_type: U_WORD
|
||
optionsmap:
|
||
"Disabled": 0
|
||
"Enabled": 1
|
||
skip_updates: $skip_updates_slow
|
||
|
||
- platform: modbus_controller
|
||
name: "Inverter priority"
|
||
icon: mdi:arrow-decision-outline
|
||
address: 1044
|
||
value_type: U_WORD
|
||
optionsmap:
|
||
"Load first": 0
|
||
"Battery first": 1
|
||
"Grid first": 2
|
||
skip_updates: $skip_updates_slow
|
||
|
||
text_sensor:
|
||
- platform: template
|
||
name: "Status state"
|
||
icon: mdi:eye
|
||
entity_category: diagnostic
|
||
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: modbus_controller
|
||
name: "Fault code"
|
||
address: 105
|
||
register_type: "read"
|
||
icon: mdi:eye
|
||
entity_category: diagnostic
|
||
raw_encode: HEXBYTES
|
||
lambda: |-
|
||
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
|
||
switch (value) {
|
||
case 0: return std::string("No error");
|
||
case 24: return std::string("Auto test failed");
|
||
case 25: return std::string("No AC connection");
|
||
case 26: return std::string("PV isolation low");
|
||
case 27: return std::string("Residual I high");
|
||
case 28: return std::string("Output high DCI");
|
||
case 29: return std::string("PV voltage high");
|
||
case 30: return std::string("AC voltage out of range");
|
||
case 31: return std::string("AC frequency out of range");
|
||
case 32: return std::string("Module too hot");
|
||
// case 1~23 " Error: 99+x
|
||
default: return std::string("Fault code: " + to_string(value));
|
||
}
|
||
return x;
|