Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vzorová automatizace. #10

Open
DavidNetron opened this issue Feb 12, 2023 · 9 comments
Open

Vzorová automatizace. #10

DavidNetron opened this issue Feb 12, 2023 · 9 comments

Comments

@DavidNetron
Copy link

No description provided.

@DavidNetron
Copy link
Author

Dobrý den.
Integrace je super. Mam jednoduché zadání. Potřebuji sepnout rele integrovane v HA při nejnižší ceně . . Pokouším se o to už nějakou dobu, ale jsem začátečník. Mohl bych poprosit o nějaký jednoduchý vzor takové automatizace ? Tuším že se to nastaví skrze známky 1-24 jako atribut, ale stále mě to nechodí. Děkuji velice za odpověď

@foxzqw
Copy link

foxzqw commented Feb 13, 2023

To řeší hodnota sensor.current_spot_electricity_hour_order
1 je nejlevnější atd.

Tohle by mělo fungovat:

alias: sepnout rele integrovane v HA při nejnižší ceně
trigger:
  - platform: state
    entity_id:
      - sensor.current_spot_electricity_hour_order
condition: []
action:
  - if:
      - condition: numeric_state
        entity_id: sensor.current_spot_electricity_hour_order
        below: 2
    then:
      - type: turn_on
        entity_id: #relé, které chceš zapnout
    else:
      - type: turn_off
        entity_id: #zajistí vypnutí pokud neplatí podmínka výše
    enabled: true
mode: single

@Rotif
Copy link

Rotif commented May 2, 2023

Dobrý den,
díky za super integraci.
Mám dotaz k automatizaci:
pro začátek bych chtěl vybíjet baterii do sítě ráno, kdy je špička většinou ve všední den v 8 nebo 9 hodin.
Dá se nějak vytvořit senzor current_spot_electricity_hour_order ale jen pro dopoledne?
Tím bych vybral nejvyšší cenu dopoledne.
Později bych využil to samé pro nabíjení a podobný senzor ale pro odpoledne.
Tím bych vybral nenižší cenu odpoledne/večer.
Děkuji moc

@rnovacek
Copy link
Owner

rnovacek commented May 2, 2023

@Rotif Tady je příklad, jak najít nejlevnější hodinu v zadaném intervalu, to by Vám mohlo pomoct:

https://github.com/rnovacek/homeassistant_cz_energy_spot_prices#find-cheapest-hours-in-selected-interval

@Rotif
Copy link

Rotif commented May 2, 2023

Díky za okamžitou reakci.
Měl jsem dočíst popis až do konce, nicméně vyzkouším.

@Rotif
Copy link

Rotif commented May 8, 2023

Senzory chodí bezvadně. Jde něco podobného udělat po 13:00 i pro příští den?
Dík

@Rotif
Copy link

Rotif commented May 13, 2023

Nahradil jsem
{# Get value for that hour #}
{% set value = states.sensor.current_spot_electricity_hour_order.attributes.get(hour_dt.isoformat()) %}
tímto
{# Get value for that hour #}
{% set value = states.sensor.tomorrow_spot_electricity_hour_order.attributes.get(hour_dt.isoformat()) %}
ale nechodí mi to.
Senzor sensor.tomorrow_spot_electricity_hour_order není od 0:00 do 13:00 k dspozici a od 13:00 do 24:00 má hodnotu neznámé.

@rnovacek
Copy link
Owner

@Rotif

Takhle nějak by to asi šlo:

{# Define your intervals here as tuples (hour starting the interval, hour ending the interval (excluded)) #}
{% set intervals = [
  (0, 8),
  (8, 16),
  (16, 24),
] %}

{# We need to use namespace so we can write into it in inner cycle #}
{% set min = namespace(price=None, dt=None, cheapest_hours=[]) %}
{% set cheapest_hours = [] %}


{% for interval in intervals %}
  {# Reset min price from previous runs #}
  {% set min.price = None %}

  {# Go through all the hours in the interval (end excluded) and find the hour with lowest price #}
  {% for i in range(interval[0], interval[1]) %}
     {# Get datetime of current hour in current interval #}
     {% set hour_dt = (now() + timedelta(hours=24)).replace(hour=i, minute=0, second=0, microsecond=0) %}

     {# Get value for that hour #}
     {% set value = states.sensor.tomorrow_spot_electricity_hour_order.attributes.get(hour_dt.isoformat()) %}

     {# value is tuple (order, price), we'll use the price #}
     {% set price = value[1] %}

     {# Min price is not set or is higher than price of current hour => store the min price and hour #}
     {% if min.price is none or price < min.price %}
        {% set min.price = price %}
        {% set min.dt = hour_dt %}
     {% endif %}
  {% endfor %}

  {# Store cheapest hour in current interval #}
  {% set min.cheapest_hours = min.cheapest_hours + [min.dt.hour] %}
{% endfor %}

{# use this to get the cheapest hours #}
{{ min.cheapest_hours }}

Vypisuje to, která hodina v zadaném intervalu je nejlevnější. sensor.tomorrow_spot_electricity_hour_order má sice neznámou hodnotu, ale atributy fungují (když jsou k dispozici).

@Rotif
Copy link

Rotif commented May 17, 2023

Dík, chodí

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants