autohuttli/sph_inverter.yaml
Michael Hope f12b68eaf0
All checks were successful
/ esphome (push) Successful in 21m41s
autohuttli: fix the warnings introduced by the latest esphome
2026-01-31 06:15:36 +01:00

330 lines
8.1 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

number:
- platform: modbus_controller
modbus_controller_id: inverter1
id: remote_on_off
name: "Remote OnOff" # 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;