Rynkowe ceny energii elektrycznej

Dzięki za sugestię, bardzo zasadna zmiana. Faktycznie teraz sensory przechowują mniej niepotrzebnych danych.

W kwestii zmniejszenia odpytywania API to obecnie scan_interval jest ustawiony 3600 czyli odczytuje stan co godzinę pomimo, że stan zmienia się raz na dobę.
Zmieniłem to na 86400 czy raz na 24h, ale do tego trzeba dołożyć automatyzację, która aktualizuje to po godzinie 00:00

Automatyzacja:

- id: '1718249833123'
  alias: Update RCE Prices Today at Midnight
  trigger:
  - platform: time
    at: '00:01:00'
  action:
  - service: homeassistant.update_entity
    target:
      entity_id: sensor.rce_prices_today

Sensory

# Pobieranie dzisiejszych cen RCE z PSE
  - platform: rest
    name: RCE Prices Today
    resource_template: "https://api.raporty.pse.pl/api/rce-pln?$select=rce_pln,udtczas_oreb&$filter=doba eq '{{ now().strftime('%Y-%m-%d') }}'"
    method: GET
    headers:
      accept: "application/json"
    value_template: "{{ value_json.value[0]['rce_pln'] }}"
    json_attributes:
      - value
    scan_interval: 86400

# Pobieranie jutrzejszych cen RCE z PSE
  - platform: rest
    name: RCE Prices Tomorrow
    resource_template: "https://api.raporty.pse.pl/api/rce-pln?$select=rce_pln,udtczas_oreb&$filter=doba eq '{{ now().strftime('%Y-%m-%d') }}'"
    method: GET
    headers:
      accept: "application/json"
    value_template: "{{ value_json.value[0]['rce_pln'] }}"
    json_attributes:
      - value
    scan_interval: 3600

Trzeba było też zmienić kod karty ApexCharts bo przestała mi działać:

type: custom:apexcharts-card
graph_span: 24h
span:
  start: day
update_interval: 15min
experimental:
  color_threshold: true
series:
  - entity: sensor.rce_prices_today
    attribute: value
    data_generator: |
      const startOfDay = new Date();
      startOfDay.setHours(0, 0, 0, 0);
      return entity.attributes.value.map(item => {
        const timeRange = item.udtczas_oreb.split(" - ")[0];
        const [hours, minutes] = timeRange.split(":");
        const timestamp = new Date(startOfDay);
        timestamp.setHours(hours, minutes);
        return [timestamp.getTime(), item.rce_pln];
      });
    type: line
    name: Cena energii (jutro)
    curve: smooth
    stroke_width: 4
    color_threshold:
      - value: 0
        color: red
      - value: 300
        color: orange
      - value: 500
        color: yellow
      - value: 700
        color: green
header:
  show: true
  title: Ceny energii (PLN)
  show_states: false
  colorize_states: true
now:
  show: true
  label: Teraz
  color: red

image

Chyba mylisz tu dwa pojęcia. Czym innym jest godzinowe rozliczanie prosumentów (ceny za sprzedaż energii), a czym innym taryfy dynamiczne czyli godzinowe ceny zakupu.
Prosumenci, którzy uruchomią instalacje po 1 lipca 2024 wejdą z automatu w ceny godzinowe (sprzedaż), i to przy pewnym zarządzaniu może się nawet opłacać względem RCEm.
https://wysokienapiecie.pl/101562-zmiana-system-rozliczania-fotowoltaiki-co-wybrac/
Taryfy dynamiczne mają wejść od 24 sierpnia, a dotyczą cen zakupu energii. Czyli zamiast G11 czy G12 mamy taryfę dynamiczną.
Są dobrowolne i nie widzę dla nich sensownego zastosowania poza magazynem ładowanym kiedy jest tanio, czy sterowaniem dużymi odbiornikami energii.
https://akademia-fotowoltaiki.pl/taryfy-dynamiczne/

2 Likes

Kod sensora który odnajduje godzinę startu najtańszego okna 3-godzinnego:

- platform: template
  sensors:
      lowest_3hour_tariff:
        friendly_name: "Lowest 3-Hour Tariff"
        value_template: >
          {% set dzisiaj = state_attr("sensor.rynkowa_cena_energii_elektrycznej_rynkowa_cena_energi_elektrycznej", "today") %}
          {% set min_avg = namespace(value=9999999, start="") %}
          {% for i in range(dzisiaj|length - 2) %}
            {% set avg_tariff = (dzisiaj[i].tariff + dzisiaj[i+1].tariff + dzisiaj[i+2].tariff) / 3 %}
            {% if avg_tariff < min_avg.value %}
              {% set min_avg.value = avg_tariff %}
              {% set min_avg.start = dzisiaj[i].start %}
            {% endif %}
          {% endfor %}
          {{ min_avg.value|round(2) }}
        attribute_templates:
          start_time: >
            {% set dzisiaj = state_attr("sensor.rynkowa_cena_energii_elektrycznej_rynkowa_cena_energi_elektrycznej", "today") %}
            {% set min_avg = namespace(value=9999999, start="") %}
            {% for i in range(dzisiaj|length - 2) %}
              {% set avg_tariff = (dzisiaj[i].tariff + dzisiaj[i+1].tariff + dzisiaj[i+2].tariff) / 3 %}
              {% if avg_tariff < min_avg.value %}
                {% set min_avg.value = avg_tariff %}
                {% set min_avg.start = dzisiaj[i].start %}
              {% endif %}
            {% endfor %}
            {{ min_avg.start }}

image

Ciekawi mnie tylko czy w ciągu roku zobaczysz inne okno czasowe niż 11-14 :slight_smile:

Raczej mało prawdopodobne :slight_smile:
Ja zgodnie z nowymi przepisami będę się już rozliczał w godzinowych RCE.
Planuję po prostu ładować magazyn w tych godzinach i włączać większe odbiorniki.

Podaj proszę aktualną integrację z API , kody i gdzie dokładnie je wstawić do jakich plików - kolejność.
Dzięki

Tutaj masz opisane, wklejasz do sensors.yaml jeśli masz to wydzielone w configuration.yaml. Nie wiem jednak jak to masz zorganizowane w HA

Jak to zautomatyzować np. poniżej ceny 380 włącz urządzenie ( gniazdko). Powyżej 20% ceny 380 wyłącz.

Może moje pytanie zabrzmi dziwnie, ale masz na myśli?
“wyłącz powyżej 19 i równocześnie włącz poniżej 380” przecież te warunki są sprzeczne…

Moim zdaniem lepiej monitorować ceny na zasadzie min-śred-max. Zrobić automatyzację która porównuje obecną cenę energii do wyliczonych uśrednień.

Raczej nie, ale może być to 11:00 a może być 14:00.
Sensor wystartuje u mnie pralkę, piekarnik itp

Tak się zastanawiam jak na podstawie twojego pobierania zrobić automatyzacje symulujące zakup i sprzedaż energii, w celu oceny czy warto może postawić mały magazyn i ładować go za stałą stawkę (g11) ~500 pln/mwh i sprzedawać (jako prosument na net-bilingu) gdy przekroczy próg kosztów, np. 800 pln/mwh

Tak na chłopski rozum to ładować jak czerwone sprzedawać na maxa jak zielone



To ceny energii z dzisiaj.
W sumie net-biling teraz bez magazynu i godzinowa sprzedaż i w dodatku 15 min bilans nie ma sensu.