1
0
Fork 0

Home Assistant Git Exporter

main
31c0fe9c6dbd74bcdde92e1d2aaa03e1d272f75f 2022-08-24 16:25:05 +10:00
parent b1ff0647a9
commit 6617df672a
3 changed files with 141 additions and 17 deletions

View File

@ -28,6 +28,13 @@
# hub: SungrowSHx # hub: SungrowSHx
# mode: single # mode: single
input_boolean:
inverter_charging_schedule_enabled:
initial: true
name: Inverter charging schedule enabled
inverter_charging_schedule_2_enabled:
initial: true
name: Inverter charging schedule 2 enabled
input_datetime: input_datetime:
inverter_charging_schedule_start: inverter_charging_schedule_start:
has_time: true has_time: true
@ -36,13 +43,29 @@ input_datetime:
inverter_charging_schedule_end: inverter_charging_schedule_end:
has_time: true has_time: true
name: Inverter charging schedule end name: Inverter charging schedule end
initial: "14:59:00" initial: "15:00:00"
inverter_charging_schedule_2_start:
has_time: true
name: Inverter charging schedule 2 start
initial: "00:00:00"
inverter_charging_schedule_2_end:
has_time: true
name: Inverter charging schedule 2 end
initial: "00:00:00"
input_number: input_number:
inverter_charging_schedule_target_soc: inverter_charging_schedule_target_soc:
name: Inverter charging target state of charge name: Inverter charging schedule target state of charge
min: 0 min: 0
max: 100 max: 100
unit_of_measurement: "%" unit_of_measurement: "%"
initial: 85
mode: box
inverter_charging_schedule_2_target_soc:
name: Inverter charging schedule 2 target state of charge
min: 0
max: 100
unit_of_measurement: "%"
initial: 0
mode: box mode: box
inverter_battery_reserve: inverter_battery_reserve:
name: Inverter battery reserve name: Inverter battery reserve
@ -59,21 +82,74 @@ automation:
trigger: trigger:
- platform: state - platform: state
entity_id: entity_id:
# Explicit enables
- input_boolean.inverter_charging_schedule_enabled
- input_boolean.inverter_charging_schedule_2_enabled
# Schedule 1 details
- input_datetime.inverter_charging_schedule_start - input_datetime.inverter_charging_schedule_start
- input_datetime.inverter_charging_schedule_end - input_datetime.inverter_charging_schedule_end
- input_number.inverter_charging_schedule_target_soc - input_number.inverter_charging_schedule_target_soc
# Schedule 2 details
- input_datetime.inverter_charging_schedule_2_start
- input_datetime.inverter_charging_schedule_2_end
- input_number.inverter_charging_schedule_2_target_soc
not_from: not_from:
- unknown - unknown
- unavailable - unavailable
not_to: not_to:
- unknown - unknown
- unavailable - unavailable
# I have a theory that being in a schedule window prevents the battery from discharging, EVEN IF the SoC is above
# the target. As such, this automation will also run when the battery level crosses any threshold here and the
# `enabled_1` and `enabled_2` variables below will take this into consideration. In other words, the schedules
# will be automatically turned off when the charge level reaches target, and switched back on if it falls below.
- platform: numeric_state
entity_id: sensor.inverter_battery_level
above: input_number.inverter_charging_schedule_target_soc
- platform: numeric_state
entity_id: sensor.inverter_battery_level
above: input_number.inverter_charging_schedule_2_target_soc
- platform: numeric_state
entity_id: sensor.inverter_battery_level
below: input_number.inverter_charging_schedule_target_soc
- platform: numeric_state
entity_id: sensor.inverter_battery_level
below: input_number.inverter_charging_schedule_2_target_soc
variables:
enabled_1: |
{{ is_state('input_boolean.inverter_charging_schedule_enabled', 'on') and
states('input_number.inverter_charging_schedule_target_soc') | float(default = 0) > states('sensor.inverter_battery_level') | float(default = 0) and
not is_state('input_datetime.inverter_charging_schedule_start', 'unknown') and
not is_state('input_datetime.inverter_charging_schedule_end', 'unknown')
}}
enabled_2: |
{{ is_state('input_boolean.inverter_charging_schedule_2_enabled', 'on') and
states('input_number.inverter_charging_schedule_2_target_soc') | float(default = 0) > states('sensor.inverter_battery_level') | float(default = 0) and
not is_state('input_datetime.inverter_charging_schedule_start', 'unknown') and
not is_state('input_datetime.inverter_charging_schedule_end', 'unknown')
}}
action: action:
- service: script.apply_charging_schedule - service: script.apply_charging_schedule
data_template: data_template:
soc_1: "{{ states('input_number.inverter_charging_schedule_target_soc') | int }}" soc_1: |
start_time_1: "{{ states('input_datetime.inverter_charging_schedule_start') }}" {% if enabled_1 %}
end_time_1: "{{ states('input_datetime.inverter_charging_schedule_end') }}" {{ states('input_number.inverter_charging_schedule_target_soc') | int }}
{% else %}
0
{% endif %}
start_time_1: "{{ states('input_datetime.inverter_charging_schedule_start') | replace('unknown','00:00') }}"
end_time_1: "{{ states('input_datetime.inverter_charging_schedule_end') | replace('unknown','00:00') }}"
soc_2: |
{% if enabled_2 %}
{{ states('input_number.inverter_charging_schedule_2_target_soc') | int }}
{% else %}
0
{% endif %}
start_time_2: "{{ states('input_datetime.inverter_charging_2_schedule_start') | replace('unknown','00:00') }}"
end_time_2: "{{ states('input_datetime.inverter_charging_2_schedule_end') | replace('unknown','00:00') }}"
- id: 7b93d325bfe632a4e890 - id: 7b93d325bfe632a4e890
alias: Inverter - update battery reserve alias: Inverter - update battery reserve

View File

@ -22,7 +22,7 @@
"battery": 44, "battery": 44,
"temperature": 17, "temperature": 17,
"linkquality": 255, "linkquality": 255,
"device_temperature": 16, "device_temperature": 20,
"power_outage_count": 7 "power_outage_count": 7
}, },
"0x00158d0007e7725b": { "0x00158d0007e7725b": {
@ -31,7 +31,7 @@
"battery": 36, "battery": 36,
"temperature": 18, "temperature": 18,
"linkquality": 255, "linkquality": 255,
"device_temperature": 20, "device_temperature": 21,
"power_outage_count": 8 "power_outage_count": 8
}, },
"0x00158d0008091b58": { "0x00158d0008091b58": {
@ -40,7 +40,7 @@
"battery": 50, "battery": 50,
"temperature": 12, "temperature": 12,
"linkquality": 255, "linkquality": 255,
"device_temperature": 15, "device_temperature": 16,
"power_outage_count": 13 "power_outage_count": 13
}, },
"0x00158d0007e4c4f2": { "0x00158d0007e4c4f2": {
@ -49,7 +49,7 @@
"battery": 36, "battery": 36,
"temperature": 21, "temperature": 21,
"linkquality": 255, "linkquality": 255,
"device_temperature": 21, "device_temperature": 24,
"power_outage_count": 41 "power_outage_count": 41
}, },
"0x5c0272fffee93bae": { "0x5c0272fffee93bae": {
@ -71,7 +71,7 @@
"battery": 100, "battery": 100,
"sensitivity": "high", "sensitivity": "high",
"keep_time": "120", "keep_time": "120",
"illuminance": 874, "illuminance": 850,
"linkquality": 127 "linkquality": 127
}, },
"0x84b4dbfffe850fda": { "0x84b4dbfffe850fda": {

View File

@ -332,14 +332,62 @@ config:
- badges: [] - badges: []
cards: cards:
- entities: - entities:
- label: Charge schedule - label: Charge schedule 1
type: section type: section
- entity: input_datetime.inverter_charging_schedule_start - entity: input_boolean.inverter_charging_schedule_enabled
name: Start charging at name: Enable
- entity: input_datetime.inverter_charging_schedule_end - conditions:
name: Finish charging at - entity: input_boolean.inverter_charging_schedule_enabled
- entity: input_number.inverter_charging_schedule_target_soc state: 'on'
name: Charge until row:
entity: input_datetime.inverter_charging_schedule_start
icon: mdi:calendar-start
name: Start charging at
type: conditional
- conditions:
- entity: input_boolean.inverter_charging_schedule_enabled
state: 'on'
row:
entity: input_datetime.inverter_charging_schedule_end
icon: mdi:calendar-end
name: Finish charging at
type: conditional
- conditions:
- entity: input_boolean.inverter_charging_schedule_enabled
state: 'on'
row:
entity: input_number.inverter_charging_schedule_target_soc
icon: mdi:battery-arrow-up
name: Charge until
type: conditional
- label: Charge schedule 2
type: section
- entity: input_boolean.inverter_charging_schedule_2_enabled
name: Enable
- conditions:
- entity: input_boolean.inverter_charging_schedule_2_enabled
state: 'on'
row:
entity: input_datetime.inverter_charging_schedule_2_start
icon: mdi:calendar-start
name: Start charging at
type: conditional
- conditions:
- entity: input_boolean.inverter_charging_schedule_2_enabled
state: 'on'
row:
entity: input_datetime.inverter_charging_schedule_2_end
icon: mdi:calendar-end
name: Finish charging at
type: conditional
- conditions:
- entity: input_boolean.inverter_charging_schedule_2_enabled
state: 'on'
row:
entity: input_number.inverter_charging_schedule_2_target_soc
icon: mdi:battery-arrow-up
name: Charge until
type: conditional
- label: Misc - label: Misc
type: section type: section
- entity: input_number.inverter_battery_reserve - entity: input_number.inverter_battery_reserve