Cum să optimizezi eficiența energetică prin automatizări cu Home Assistant. Soluții pentru o casă inteligentă

0

Obiectiv:

Creează automatizări eficiente în Home Assistant care să controleze dispozitivele menționate mai jos, respectând prioritățile, condițiile specificate și optimizând consumul de energie în funcție de producția panourilor fotovoltaice. Sistemul trebuie să minimizeze ciclurile de pornire/oprire, să mențină dispozitivele pornite cât mai mult timp posibil și să asigure că dispozitivele nu depășesc timpul dorit de funcționare zilnic.

Crearea de automatizări în Home Assistant care să controleze eficient mai multe dispozitive din casă, în funcție de:

  • Producția de energie electrică a panourilor fotovoltaice.
  • Consumul casei.
  • Prioritățile dispozitivelor.
  • Condițiile meteo.
  • Timpul de funcționare al fiecărui dispozitiv.

Dispozitive și entități:

  1. Aer Condiționat (AC) în Dormitorul Matrimonial:
    • Consum: 950 W/h.
    • Preferință de funcționare: 2 ore pe zi, dar poate funcționa mai puțin dacă nu este soare.
    • Entitate: switch.daikinap94622_power.
    • Control automatizare: input_boolean.ac_m_solar.
    • Senzor timp de funcționare: sensor.ac_dormitor_matrimonial_runtime.
    • Condiții speciale:
      • Să nu funcționeze dacă input_boolean.vacation_mode este activat.
  2. Boiler:
    • Consum: Aproximativ 2200 W/h.
    • Preferință de funcționare: 2 ore pe zi, dar poate funcționa mai puțin sau deloc dacă nu este soare.
    • Entitate: switch.priza1_relay.
    • Control automatizare: input_boolean.boiler.
    • Senzor timp de funcționare: sensor.boiler_runtime.
    • Condiții speciale:
      • Să pornească după ce AC-ul a funcționat 2 ore sau dacă surplusul de energie este suficient pentru ambele.
  3. Dezumidificator:
    • Consum: Aproximativ 300 W/h.
    • Preferință de funcționare: 2 ore pe zi, dar poate funcționa mai puțin sau deloc dacă nu este soare.
    • Entitate: switch.shelly_plug_s_1.
    • Control automatizare: input_boolean.dezumidificator_automatizare.
    • Senzor timp de funcționare: sensor.dezumidificator_runtime.
    • Condiții speciale:
      • Să funcționeze dacă umiditatea în dressing (sensor.dressing_humidity) este peste 65%.

Senzori și entități suplimentare:

  • Producție energie fotovoltaică: sensor.inverter_input_power.
  • Consum casă: sensor.principal_power.
  • Surplus energie: sensor.surplus_energie (calculat ca diferența dintre producție și consum).
  • Factor de ajustare în funcție de prognoza meteo: sensor.factor_ajustare.
  • Mod Vacanță: input_boolean.vacation_mode.
  • Senzor binar pentru depășirea consumului timp de 5 minute: binary_sensor.depasire_consum.

Cerințe pentru automatizări:

  1. Prioritizarea dispozitivelor:
    • Prioritatea 1: AC Dormitor Matrimonial.
    • Prioritatea 2: Boiler.
    • Prioritatea 3: Dezumidificator.
  2. Condiții de pornire:
    • Dispozitivele să pornească în ordinea priorităților, doar dacă dispozitivele cu prioritate mai mare au atins timpul dorit de funcționare sau sunt deja pornite.
    • Fiecare dispozitiv să pornească doar dacă surplusul de energie este suficient pentru consumul său.
    • Să se țină cont de timpul de funcționare acumulat al fiecărui dispozitiv în ziua curentă.
  3. Condiții de oprire:
    • Dacă consumul casei depășește producția timp de 5 minute, dispozitivele să se oprească în ordinea inversă a priorităților, verificând după fiecare oprire dacă mai este necesar să oprească și alte dispozitive.
    • Un dispozitiv să se oprească și dacă a atins timpul de funcționare stabilit pentru ziua respectivă.
  4. Monitorizarea timpului de funcționare:
    • Pentru fiecare dispozitiv, să se monitorizeze timpul de funcționare zilnic folosind senzori history_stats.
    • Dispozitivele să nu funcționeze mai mult decât timpul dorit (ex: 2 ore pe zi).
  5. Notificări detaliate:
    • La pornirea sau oprirea unui dispozitiv, să se trimită notificări care să includă:
      • Numele dispozitivului.
      • Motivul pornirii/opririi.
      • Timpul de funcționare al dispozitivului.
      • Surplusul de energie sau producția și consumul casei în momentul respectiv.
  6. Vizualizarea datelor:
    • Crearea de grafice în tabloul de bord Home Assistant pentru:
      • Timpul de funcționare al fiecărui dispozitiv.
      • Evoluția surplusului de energie.
  7. Flexibilitate și extindere:
    • Sistemul să permită adăugarea de noi dispozitive și ajustarea priorităților.
    • Parametrii precum timpul maxim de funcționare să poată fi modificați ușor.

Iată soluția completă care include toate modificările, cu toți senzorii necesari, automatizările și scripturile necesare.


1. Actualizare configuration.yaml

Asigură-te că ai următoarele componente activate și fișierele incluse în configuration.yaml:

# configuration.yaml

# Activare componente necesare
automation: !include automations.yaml
script: !include scripts.yaml
sensor: !include sensor.yaml
binary_sensor: !include binary_sensor.yaml
input_boolean: !include input_boolean.yaml

# Definirea input_number pentru priorități
input_number:
prioritate_ac_matrimonial:
name: "Prioritate AC Dormitor Matrimonial"
initial: 1
min: 1
max: 10
step: 1

prioritate_boiler:
name: "Prioritate Boiler"
initial: 2
min: 1
max: 10
step: 1

prioritate_dezumidificator:
name: "Prioritate Dezumidificator"
initial: 3
min: 1
max: 10
step: 1

2. Definirea input_boolean pentru controlul automatizărilor

Creează fișierul input_boolean.yaml (dacă nu există deja) și adaugă următoarele:

# input_boolean.yaml

ac_m_solar:
name: "Automatizare AC Dormitor Matrimonial"
initial: on

boiler:
name: "Automatizare Boiler"
initial: on

dezumidificator_automatizare:
name: "Automatizare Dezumidificator"
initial: on

vacation_mode:
name: "Mod Vacanță"
initial: off

3. Crearea Senzorilor în sensor.yaml

Adaugă următorul conținut în sensor.yaml pentru a crea senzorii necesari:

# sensor.yaml

# Senzor pentru surplusul de energie
- platform: template
sensors:
surplus_energie:
friendly_name: "Surplus Energie"
unit_of_measurement: 'W'
value_template: >
{{ states('sensor.inverter_input_power') | float - states('sensor.principal_power') | float }}

# Senzor pentru factorul de ajustare
- platform: template
sensors:
factor_ajustare:
friendly_name: "Factor Ajustare"
value_template: >
{% set ore_soare = states('sensor.home_hours_of_sun_today') | float %}
{% if ore_soare > 5 %}
{{ 1 }}
{% elif ore_soare > 3 %}
{{ 0.75 }}
{% else %}
{{ 0.5 }}
{% endif %}

# Senzori pentru timpul de funcționare al echipamentelor
- platform: history_stats
name: AC Dormitor Matrimonial Runtime
entity_id: switch.daikinap94622_power
state: 'on'
type: time
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
end: '{{ now() }}'

- platform: history_stats
name: Boiler Runtime
entity_id: switch.priza1_relay
state: 'on'
type: time
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
end: '{{ now() }}'

- platform: history_stats
name: Dezumidificator Runtime
entity_id: switch.shelly_plug_s_1
state: 'on'
type: time
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
end: '{{ now() }}'

4. Crearea Senzorilor Binari în binary_sensor.yaml

Adaugă următorul conținut în binary_sensor.yaml:

# binary_sensor.yaml

- platform: template
sensors:
depasire_consum:
friendly_name: "Depășire Consum"
delay_on:
minutes: 5
value_template: >
{{ states('sensor.principal_power') | float > states('sensor.inverter_input_power') | float }}

5. Definirea Scriptului în scripts.yaml

Actualizează sau creează fișierul scripts.yaml cu următorul conținut:

# scripts.yaml
alias: Oprire Dispozitive Prioritare
sequence:
- variables:
exit_loop: false
- variables:
devices:
- entity: switch.daikinap94622_power
name: AC Dormitor Matrimonial
runtime_sensor: sensor.ac_dm_runtime
max_runtime: 2
- entity: switch.priza1_relay
name: Boiler
runtime_sensor: sensor.boiler_runtime
max_runtime: 2
- entity: switch.shelly_plug_s_1
name: Dezumidificator
runtime_sensor: sensor.dezumidificator_runtime
max_runtime: 2
- repeat:
for_each: "{{ devices }}"
sequence:
- variables:
device: "{{ repeat.item }}"
- if:
- condition: template
value_template: >
{{ states(device.runtime_sensor) | float >= device.max_runtime
}}
then:
- target:
entity_id: "{{ device.entity }}"
action: switch.turn_off
- data:
message: >
Am oprit {{ device.name }} deoarece a atins timpul de
funcționare. Timp de funcționare: {{
states(device.runtime_sensor) }} ore. Producție: {{
states('sensor.inverter_input_power') }} W. Consum casă: {{
states('sensor.principal_power') }} W.
action: notify.mobile_app_iulian_iphone
- if:
- condition: template
value_template: >
{{ states('sensor.principal_power') | float >
states('sensor.inverter_input_power') | float }}
then:
- variables:
devices_by_priority:
- entity: switch.shelly_plug_s_1
name: Dezumidificator
- entity: switch.priza1_relay
name: Boiler
- entity: switch.daikinap94622_power
name: AC Dormitor Matrimonial
- repeat:
for_each: "{{ devices_by_priority }}"
sequence:
- variables:
device: "{{ repeat.item }}"
- if:
- condition: template
value_template: "{{ not exit_loop }}"
then:
- if:
- condition: template
value_template: |
{{ is_state(device.entity, 'on') }}
then:
- target:
entity_id: "{{ device.entity }}"
action: switch.turn_off
- data:
message: >
Am oprit {{ device.name }} deoarece consumul depășește
producția. Producție: {{
states('sensor.inverter_input_power') }} W. Consum
casă: {{ states('sensor.principal_power') }} W.
action: notify.mobile_app_iulian_iphone
- if:
- condition: template
value_template: >
{{ states('sensor.principal_power') | float <=
states('sensor.inverter_input_power') | float }}
then:
- variables:
exit_loop: true

6. Crearea Automatizărilor în automations.yaml

6.1. Automatizări pentru Pornirea Dispozitivelor

6.1.1. Pornire AC Dormitor Matrimonial

# automations.yaml

alias: AC Matrimonial Porneste daca producem mai mult Solar
description: Porneste AC Matrimonial daca producem mai mult decat consuma casa
triggers:
- trigger: time_pattern
minutes: /10
conditions:
- condition: numeric_state
entity_id: sensor.surplus_energie
above: 950
- condition: template
value_template: >
{{ states('sensor.ac_dm_runtime') | float < 2 }} # Timpul dorit de
funcționare în ore
- condition: state
state: "off"
entity_id: switch.daikinap94622_power
- condition: state
entity_id: input_boolean.vacation_mode
state: "off"
- condition: state
entity_id: input_boolean.ac_m_solar
state: "on"
actions:
- data: {}
target:
entity_id: switch.daikinap94622_power
action: switch.turn_on
- data:
message: >
Am pornit AC-ul din dormitorul matrimonial pe fotovoltaice! Timp de
funcționare: {{ states('sensor.ac_dm_runtime') }} ore. Surplus energie:
{{ states('sensor.surplus_energie') }} W.
action: notify.mobile_app_iulian_iphone
mode: single

6.1.2. Pornire Boiler

alias: "Boiler Porneste daca producem mai mult Solar "
description: Solar Pornire Boiler
triggers:
- trigger: time_pattern
minutes: /10
conditions:
- condition: template
value_template: |-
{% set surplus = states('sensor.surplus_energie') | float %}
{% set ac_runtime = states('sensor.ac_dm_runtime') | float %}
{% set boiler_runtime = states('sensor.boiler_runtime') | float %}
{% set ac_off = is_state('switch.daikinap94622_power', 'off') %}
{% if ac_runtime >= 2 or ac_off %}
{% set required_surplus = 2200 %}
{% else %}
{% set required_surplus = 2200 + 950 %}
{% endif %}
{{ surplus >= required_surplus and boiler_runtime < 2 }}
- condition: state
entity_id: input_boolean.boiler
state: "on"
- condition: state
entity_id: input_boolean.vacation_mode
state: "off"
- condition: state
entity_id: switch.priza1_relay
state: "off"
actions:
- entity_id: switch.priza1_relay
action: switch.turn_on
- data:
message: >
Am pornit boilerul pe fotovoltaice! Timp de funcționare al boilerului:
{{ states('sensor.boiler_runtime') }} ore. Surplus energie: {{
states('sensor.surplus_energie') }} W.
action: notify.mobile_app_iulian_iphone
mode: single


6.1.3. Pornire Dezumidificator

alias: 'Pornire Dezumidificator'
trigger:
- platform: template
value_template: >
{% set surplus = states('sensor.surplus_energie') | float %}
{% set dezumidificator_runtime = states('sensor.dezumidificator_runtime') | float %}
{{ surplus >= 300 and dezumidificator_runtime < 2 }}
condition:
- condition: state
entity_id: input_boolean.dezumidificator_automatizare
state: 'on'
- condition: numeric_state
entity_id: sensor.dressing_humidity
above: 65
action:
- service: switch.turn_on
entity_id: switch.shelly_plug_s_1
- service: notify.mobile_app_iulian_iphone
data:
message: >
Am pornit dezumidificatorul pe fotovoltaice!
Timp de funcționare al dezumidificatorului: {{ states('sensor.dezumidificator_runtime') }} ore.
Surplus energie: {{ states('sensor.surplus_energie') }} W.
mode: single

6.2. Automatizări pentru Oprirea Dispozitivelor

6.2.1. Oprire Dispozitive pe Baza Priorităților și Timpului de Funcționare

alias: Solar Oprire Dispozitive pe Baza Priorităților și Timpului de Funcționare
description: ""
triggers:
- entity_id:
- sensor.inverter_input_power
below: sensor.principal_power
for:
hours: 0
minutes: 5
seconds: 0
trigger: numeric_state
conditions: []
actions:
- action: script.oprire_dispozitive_prioritare
metadata: {}
data: {}
mode: single


7. Vizualizarea Datelor în Tabloul de Bord Home Assistant

7.1. Grafice pentru Timpul de Funcționare al Echipamentelor

Adaugă următorul cod în interfața Lovelace UI:

# În interfața Lovelace UI

type: history-graph
title: Timp de Funcționare Echipamente
entities:
- sensor.ac_dormitor_matrimonial_runtime
- sensor.boiler_runtime
- sensor.dezumidificator_runtime
hours_to_show: 24
refresh_interval: 300

7.2. Grafic pentru Surplusul de Energie

# senzor
type: sensor
entity: sensor.surplus_energie
name: Surplus Energie
graph: line
hours_to_show: 24
detail: 1

8. Recomandări Finale

  • Testează și Monitorizează: După implementarea modificărilor, monitorizează comportamentul automatizărilor și ajustează parametrii dacă este necesar.
  • Adaugă Dispozitive Noi: Pentru a extinde sistemul cu noi dispozitive, repetă pașii de mai sus, adăugând senzorii, automatizările și actualizând scripturile corespunzătoare.

9. Concluzie

Această soluție completă îți oferă un sistem eficient și personalizat pentru gestionarea echipamentelor din casa ta inteligentă, optimizând consumul de energie în funcție de producția panourilor fotovoltaice, prioritățile stabilite și condițiile meteo. Prin utilizarea senzorilor de timp de funcționare, automatizărilor și scripturilor actualizate, ai un control avansat și flexibil asupra dispozitivelor tale.


Dacă ai întrebări suplimentare sau ai nevoie de asistență în implementarea acestei soluții, te rog să mă anunți. Spor la configurare!

Share.

Comments are closed.