Natuurlijk kan ik dat!
Ik ben nu zover dat ik drie automatiseringen heb aangemaakt in samenwerking met ChatGPT.
De script heten : Batterij Laden bij Overschot, Batterij Ontladen bij Tekort en Batterij Laden/Ontladen Stoppen.
Het is de bedoeling dat er zo min mogelijk energie word terug geleverd.
Hysterese toegevoegd: voorkomt snel schakelen bij kleine variaties.
Nachtbuffer (SOC > 40% tussen 18:00 en 08:00): voorkomt dat de batterij ‘s nachts leeg raakt.
Laad- en ontlaadvermogen wordt dynamisch aangepast en blijft altijd binnen veilige grenzen.
Stopt laden en ontladen automatisch bij neutraal verbruik.
Scripts:
Batterij Laden bij Overschot
alias: Batterij Laden bij Overschot
description: ""
triggers:
- entity_id: sensor.netto_verbruik
below: -50
for:
seconds: 30
trigger: numeric_state
conditions:
- condition: numeric_state
entity_id: sensor.lilygo_rs485_marstek_battery_state_of_charge
below: 95
actions:
- target:
entity_id: number.lilygo_rs485_marstek_forcible_charge_power
data:
value: >
{% set overschot = states('sensor.netto_verbruik') | float %} {% if
overschot < 0 %}
{% set overschot = overschot * -1 %}
{% endif %} {% set max_laadvermogen = 2000 %} {% set laadvermogen =
[overschot, max_laadvermogen] | min %} {% if laadvermogen < 0 %}
{% set laadvermogen = 0 %}
{% endif %} {{ laadvermogen | round(0) }}
action: number.set_value
- target:
entity_id: select.lilygo_rs485_marstek_forcible_charge_discharge
data:
option: Charge
action: select.select_option
mode: restart
Batterij Ontladen bij Tekort
alias: Batterij Ontladen bij Tekort
description: ""
triggers:
- entity_id: sensor.netto_verbruik
above: 50
for:
seconds: 30
trigger: numeric_state
conditions:
- condition: numeric_state
entity_id: sensor.lilygo_rs485_marstek_battery_state_of_charge
above: 20
- condition: or
conditions:
- condition: time
before: "08:00:00"
- condition: time
after: "18:00:00"
- condition: numeric_state
entity_id: sensor.lilygo_rs485_marstek_battery_state_of_charge
above: 40
actions:
- target:
entity_id: number.lilygo_rs485_marstek_forcible_discharge_power
data:
value: >
{% set tekort = states('sensor.netto_verbruik') | float %} {% set
max_ontlaadvermogen = 2000 %} {% set ontlaadvermogen = [tekort,
max_ontlaadvermogen] | min %} {% if ontlaadvermogen < 0 %}
{% set ontlaadvermogen = 0 %}
{% endif %} {{ ontlaadvermogen | round(0) }}
action: number.set_value
- target:
entity_id: select.lilygo_rs485_marstek_forcible_charge_discharge
data:
option: Discharge
action: select.select_option
mode: restart
Batterij Laden/Ontladen Stoppen
alias: Batterij Laden/Ontladen Stoppen
description: ""
triggers:
- entity_id: sensor.netto_verbruik
below: 20
for:
seconds: 30
trigger: numeric_state
- entity_id: sensor.netto_verbruik
above: -20
for:
seconds: 30
trigger: numeric_state
actions:
- target:
entity_id: select.lilygo_rs485_marstek_forcible_charge_discharge
data:
option: Stop
action: select.select_option
mode: restart
Ik hoop dat dit een ieder een beetje op weg helpt.
Ik heb de scripts nog niet uitgebreid getest aangezien er niet echt een zonnetje aan de hemel is momenteel
Wel weet ik dat de triggers voor laden en ontladen werken. Vergeet niet dat de "Marstek RS485 Control Mode Select" op enabled moet staan. Die setting vind je in Home Assitant onder je LiyGo apperaat instellingen.
Ik hoor graag van een ieder die hiermee aan de slag gaat of er mogelijk nog fouten in zitten of dat er nog leuke verbeteringen of opties zijn gevonden om toe te voegen.