194 lines
5.4 KiB
YAML
194 lines
5.4 KiB
YAML
- alias: EMHASS Sigenergy Battery Management
|
|
description: Automatically control the Sigenergy battery system using the EMHASS
|
|
energy plan
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.mpc_batt_power
|
|
- sensor.mpc_grid_power
|
|
from: null
|
|
to: null
|
|
actions:
|
|
- delay:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 1
|
|
milliseconds: 0
|
|
- variables:
|
|
p_batt: '{{ states(''sensor.mpc_batt_power'') | int(0) }}'
|
|
p_batt_kw: '{{ (p_batt / 1000) | round(3) }}'
|
|
p_grid: '{{ states(''sensor.mpc_grid_power'') | int(0) }}'
|
|
max_charge_rate: '{{ states(''sensor.sigen_plant_ess_rated_charging_power'')
|
|
| float(0) }}'
|
|
max_discharge_rate: '{{ states(''sensor.sigen_plant_ess_rated_discharging_power'')
|
|
| float(0) }}'
|
|
max_import_rate_kw: 100
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ p_grid == 0 }}'
|
|
sequence:
|
|
- action: select.select_option
|
|
metadata: {}
|
|
data:
|
|
option: Maximum Self Consumption
|
|
target:
|
|
entity_id: select.sigen_plant_remote_ems_control_mode
|
|
alias: Maximum Self Consumption
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ max_charge_rate }}'
|
|
target:
|
|
entity_id:
|
|
- number.sigen_plant_ess_max_charging_limit
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ max_discharge_rate }}'
|
|
target:
|
|
entity_id:
|
|
- number.sigen_plant_ess_max_discharging_limit
|
|
alias: Check self consume conditions
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ p_batt > 0 or (p_grid < 0 and p_batt == 0) }}'
|
|
sequence:
|
|
- action: select.select_option
|
|
metadata: {}
|
|
data:
|
|
option: Command Discharging (PV First)
|
|
target:
|
|
entity_id: select.sigen_plant_remote_ems_control_mode
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ p_batt_kw }}'
|
|
target:
|
|
entity_id: number.sigen_plant_ess_max_discharging_limit
|
|
alias: Check discharge conditions
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ p_batt < 0 }}'
|
|
sequence:
|
|
- action: select.select_option
|
|
metadata: {}
|
|
data:
|
|
option: Command Charging (PV First)
|
|
target:
|
|
entity_id: select.sigen_plant_remote_ems_control_mode
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ p_batt_kw | abs }}'
|
|
target:
|
|
entity_id:
|
|
- number.sigen_plant_ess_max_charging_limit
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ max_import_rate_kw if p_grid > 0 else 0 }}'
|
|
target:
|
|
entity_id:
|
|
- number.sigen_plant_pcs_import_limitation
|
|
alias: Check charge conditions
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ p_batt == 0 }}'
|
|
sequence:
|
|
- action: select.select_option
|
|
metadata: {}
|
|
data:
|
|
option: Standby
|
|
target:
|
|
entity_id: select.sigen_plant_remote_ems_control_mode
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: 0
|
|
target:
|
|
entity_id:
|
|
- number.sigen_plant_pcs_import_limitation
|
|
alias: Check standby conditions
|
|
mode: single
|
|
- alias: Sigenergy Inverter Curtailment
|
|
description: Automatically manage negative energy prices by curtailing exporting
|
|
and solar generation
|
|
variables:
|
|
max_export_kw: 30
|
|
max_pv_kw: 100
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.home_feed_in_price
|
|
below: 0
|
|
id: negative_fit
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.home_feed_in_price
|
|
id: positive_fit
|
|
above: 0
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.home_general_price
|
|
above: 0
|
|
id: positive_price
|
|
- trigger: numeric_state
|
|
entity_id:
|
|
- sensor.home_general_price
|
|
below: 0
|
|
id: negative_price
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.sigen_plant_grid_connection_status
|
|
from: null
|
|
to: null
|
|
id: grid_connection_change
|
|
actions:
|
|
- alias: Curtail if feedin price is negative
|
|
if:
|
|
- condition: numeric_state
|
|
entity_id: sensor.home_feed_in_price
|
|
below: 0
|
|
then:
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: 0
|
|
target:
|
|
entity_id: number.sigen_plant_grid_export_limitation
|
|
alias: Set export limit to 0
|
|
else:
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ max_export_kw }}'
|
|
target:
|
|
entity_id: number.sigen_plant_grid_export_limitation
|
|
alias: Set export limit to 30
|
|
- alias: Ignore PV if usage price is negative
|
|
if:
|
|
- condition: numeric_state
|
|
entity_id: sensor.home_general_price
|
|
below: 0
|
|
- condition: state
|
|
entity_id: sensor.sigen_plant_grid_connection_status
|
|
state: On Grid
|
|
then:
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: 0
|
|
target:
|
|
entity_id: number.sigen_plant_pv_max_power_limit
|
|
alias: Set PV limit to 0
|
|
else:
|
|
- action: number.set_value
|
|
metadata: {}
|
|
data:
|
|
value: '{{ max_pv_kw }}'
|
|
target:
|
|
entity_id: number.sigen_plant_pv_max_power_limit
|
|
alias: Set PV limit to Maximum
|
|
mode: single
|