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 entity_id: input_number.inverter_forced_mode_battery_power
data_template: data_template:
value: "{{ states('sensor.inverter_battery_forced_charge_discharge_power') | int }}" 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 # 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 # battery at up to 6.6kW, which saturates our 8.46 kW of PV
@ -263,13 +262,9 @@ automation:
alias: Inverter - maximise output alias: Inverter - maximise output
mode: restart mode: restart
trigger: trigger:
- platform: numeric_state
entity_id: sensor.inverter_pv_power
above: 4900
for:
minutes: 1
- platform: state - platform: state
entity_id: entity_id:
- sensor.inverter_pv_power
- sensor.inverter_battery_level - sensor.inverter_battery_level
- sensor.inverter_active_power - sensor.inverter_active_power
- sensor.home_weather_cloud_coverage - sensor.home_weather_cloud_coverage
@ -285,17 +280,48 @@ automation:
- unavailable - unavailable
- unknown - unknown
variables: 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: > 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: > sunsetting: >
{{ now() + timedelta(hours = 1) > state_attr('sun.sun', 'next_setting')| as_datetime }} {{ now() + timedelta(hours = 1) > state_attr('sun.sun', 'next_setting')| as_datetime }}
should_slow_battery: > should_slow_battery: >
{{ states('sensor.inverter_pv_power') | float > 5100 and {{ states('sensor.inverter_pv_power') | float > 5100 and
states('sensor.inverter_active_power') | float < 4200 }} states('sensor.inverter_active_power') | float < 4200 }}
enough_in_day: >
{{2*kwh_until_full < states('sensor.solcast_forecast_remaining_today') | float}}
condition: []
action: action:
- service: input_number.set_value
target:
entity_id: input_number.inverter_forced_mode_battery_power
data_template:
value: "{{ desired_forced_battery_power }}"
- choose: - choose:
- conditions: - conditions:
- "{{ should_slow_battery and not sunsetting and enough_in_day }}" - "{{ should_slow_battery and not sunsetting and enough_in_day }}"
@ -1147,24 +1173,26 @@ modbus:
# swap: word # swap: word
# precision: 0 # precision: 0
# scan_interval: 10 # scan_interval: 10
# - name: EMS Mode Selection raw - name: Inverter EMS mode (raw)
# slave: 1 unique_id: e48a4229b845475df29e
# address: 13049 # 13050 slave: 1
# input_type: holding address: 13049 # 13050
# count: 1 input_type: holding
# data_type: uint16 count: 1
# swap: word data_type: uint16
# scan_interval: 10 swap: word
# - name: Inverter charge command (raw) scan_interval: 10
# unique_id: d1158bbfa40d73933a72
# slave: 1 - name: Inverter forced battery mode (raw)
# address: 13050 # 13051 unique_id: d1158bbfa40d73933a72
# input_type: holding slave: 1
# count: 1 address: 13050 # 13051
# data_type: uint16 input_type: holding
# swap: word count: 1
# precision: 0 data_type: uint16
# scan_interval: 60 swap: word
precision: 0
scan_interval: 10
- name: Inverter battery forced charge/discharge power - name: Inverter battery forced charge/discharge power
slave: 1 slave: 1

View File

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

View File

@ -491,6 +491,10 @@ config:
entity: script.inverter_force_battery_stop entity: script.inverter_force_battery_stop
icon: mdi:stop icon: mdi:stop
name: 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 title: Battery mode
type: entities type: entities
- entities: - entities: