1
0
Fork 0

Home Assistant Git Exporter

main
31c0fe9c6dbd74bcdde92e1d2aaa03e1d272f75f 2022-08-31 13:25:05 +10:00
parent 239cf3069e
commit 0cb83728b8
3 changed files with 63 additions and 31 deletions

View File

@ -234,7 +234,6 @@ automation:
entity_id: input_number.inverter_forced_mode_battery_power
data_template:
value: "{{ states('sensor.inverter_battery_forced_charge_discharge_power') | int }}"
hub: SungrowSHx
# The inverter can only generate 5kW of AC power. IFF the battery is not-full, it can generate 5kW of AC _and_ charge
# battery at up to 6.6kW, which saturates our 8.46 kW of PV
@ -263,13 +262,9 @@ automation:
alias: Inverter - maximise output
mode: restart
trigger:
- platform: numeric_state
entity_id: sensor.inverter_pv_power
above: 4900
for:
minutes: 1
- platform: state
entity_id:
- sensor.inverter_pv_power
- sensor.inverter_battery_level
- sensor.inverter_active_power
- sensor.home_weather_cloud_coverage
@ -285,17 +280,48 @@ automation:
- unavailable
- unknown
variables:
# Magic numbers
ems_self_consume: 0
ems_forced: 2
battery_charge: 0xAA
battery_discharge: 0xBB
battery_stop: 0xCC
active_power_limit: 4999 # W
active_power_buffer: 200 # W - how much below limit we want to sit
battery_lower_limit: 50 # %
battery_capacity: 12.8 # kWh
# Shorthands
current_active_power: "{{ states('sensor.inverter_active_power') | int }}"
current_pv_power: "{{ states('sensor.inverter_pv_power') | int }}"
current_ems_mode: "{{ states('sensor.inverter_ems_mode_raw') | int(default=-1) }}"
current_battery_mode: "{{ states('sensor.inverter_forced_battery_mode_raw') | int(default=0) }}"
battery_level: "{{ states('sensor.inverter_battery_level') | float }}"
forced_battery_power: "{{ states('sensor.inverter_battery_forced_charge_discharge_power') | int }}"
forecast_remaining: "{{ states('sensor.solcast_forecast_remaining_today') | float }}"
target_active_power: "{{ active_power_limit - active_power_buffer }}"
desired_forced_battery_power: 2000
is_forced_charging: >
{{ current_ems_mode == ems_forced and current_battery_mode == battery_charge }}
is_self_consuming: >
{{ current_ems_mode == ems_self_consume }}
kwh_until_full: >
{{ 12.8 * ((100 - states('sensor.inverter_battery_level') | float)/100) }}
{{ battery_capacity * ((100 - battery_level)/100) }}
enough_in_day: >
{{2*kwh_until_full < forecast_remaining}}
battery_high_enough: "{{ battery_level > battery_lower_limit }}"
sunsetting: >
{{ now() + timedelta(hours = 1) > state_attr('sun.sun', 'next_setting')| as_datetime }}
should_slow_battery: >
{{ states('sensor.inverter_pv_power') | float > 5100 and
states('sensor.inverter_active_power') | float < 4200 }}
enough_in_day: >
{{2*kwh_until_full < states('sensor.solcast_forecast_remaining_today') | float}}
condition: []
action:
- service: input_number.set_value
target:
entity_id: input_number.inverter_forced_mode_battery_power
data_template:
value: "{{ desired_forced_battery_power }}"
- choose:
- conditions:
- "{{ should_slow_battery and not sunsetting and enough_in_day }}"
@ -1147,24 +1173,26 @@ modbus:
# swap: word
# precision: 0
# scan_interval: 10
# - name: EMS Mode Selection raw
# slave: 1
# address: 13049 # 13050
# input_type: holding
# count: 1
# data_type: uint16
# swap: word
# scan_interval: 10
# - name: Inverter charge command (raw)
# unique_id: d1158bbfa40d73933a72
# slave: 1
# address: 13050 # 13051
# input_type: holding
# count: 1
# data_type: uint16
# swap: word
# precision: 0
# scan_interval: 60
- name: Inverter EMS mode (raw)
unique_id: e48a4229b845475df29e
slave: 1
address: 13049 # 13050
input_type: holding
count: 1
data_type: uint16
swap: word
scan_interval: 10
- name: Inverter forced battery mode (raw)
unique_id: d1158bbfa40d73933a72
slave: 1
address: 13050 # 13051
input_type: holding
count: 1
data_type: uint16
swap: word
precision: 0
scan_interval: 10
- name: Inverter battery forced charge/discharge power
slave: 1

View File

@ -13,7 +13,7 @@
"battery": 41,
"temperature": 19,
"linkquality": 255,
"device_temperature": 21,
"device_temperature": 23,
"power_outage_count": 8
},
"0x00158d00080915bd": {
@ -22,7 +22,7 @@
"battery": 44,
"temperature": 17,
"linkquality": 255,
"device_temperature": 13,
"device_temperature": 18,
"power_outage_count": 7
},
"0x00158d0007e7725b": {
@ -40,7 +40,7 @@
"battery": 50,
"temperature": 12,
"linkquality": 255,
"device_temperature": 15,
"device_temperature": 14,
"power_outage_count": 13
},
"0x00158d0007e4c4f2": {

View File

@ -491,6 +491,10 @@ config:
entity: script.inverter_force_battery_stop
icon: mdi:stop
name: Stop
- entity: input_number.inverter_forced_mode_battery_power
name: Set forced power
- entity: sensor.inverter_battery_forced_charge_discharge_power
name: Current forced power
title: Battery mode
type: entities
- entities: