Rynkowe ceny energii elektrycznej

Nie są jak wspomniał @szopen … ale w cytowanym przez niego wątku są poprawne, natomiast w tym wątku parę postów wyżej są niepoprawne dla “jutra” … powinno być …

  resource_template: "https://api.raporty.pse.pl/api/rce-pln?$select=rce_pln,udtczas_oreb&$filter=doba eq '{{ (now() + timedelta(days=1)).strftime('%Y-%m-%d') }}'"

Albo:
resource_template: "https://api.raporty.pse.pl/api/rce-pln?$select=rce_pln,udtczas_oreb&$filter=doba gt '{{ now().strftime('%Y-%m-%d') }}'"

Czyli zamiast “eq” wstawić “gt”

U mnie ten skrypt nie działa. Nie wiem czemu. Nie pokazuje żadnych wartości. Do tego w ustawieniach encji mam komunikat:

Ta encja (“sensor.current_rce_price”) nie ma unikalnego identyfikatora, dlatego z poziomu interfejsu użytkownika nie można zarządzać jej ustawieniami. Więcej szczegółów znajdziesz w dokumentacji.

Tak to jest u mnie i działa. U mnie dodane do sensors.yaml (w configuration.yaml było by inaczej)

# 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: 3600
# Sensor z bierzącą ceną
  - platform: template
    sensors:
      current_rce_price:
        friendly_name: "Current RCE Price"
        value_template: >
          {% set current_time = now().strftime('%H:%M') %}
          {% set prices = state_attr('sensor.rce_prices_today', 'value') %}
          {% for price in prices %}
            {% set start_time = price.udtczas_oreb.split(' - ')[0] %}
            {% set end_time = price.udtczas_oreb.split(' - ')[1] %}
            {% if start_time <= current_time < end_time %}
              {{ price.rce_pln }}
            {% endif %}
          {% endfor %}
        unit_of_measurement: "PLN/MWh"
platform: template
sensors:
      lazienka_lights_on:
        friendly_name: "Łazienka Lights On"
        unique_id: 62bb581f-a4db-4316-88eb-7f6f78b9c751 
        value_template: >
       
          {% set lights = [
          states.light.kuchnia_rgbw,
          states.light.kuchnia_rgbw,
          states.light.tx_ultimate_tx_ultimate_l2,
          states.light.tx_ultimate_tx_ultimate_l3,
          states.light.bathroom_lights,
          states.light.server_light,
          states.light.closet,
          states.light.hallway_lights,
          ] %}
          {{ lights | selectattr('state','eq','on') | list | count }}    

unique_id: 62bb581f-a4db-4316-88eb-7f6f78b9c751

Generator UUID https://www.uuidgenerator.net/

Można użyć dowolnego ciągu znaków np. Adres MAC plus jakiś sufix który pozwoli łatwiej rozpoznać twoją encję .

1 Like

W przypadku dodawania do sensors.yaml, a nie do configuration.yaml system nie wymaga UID

Poszczególne konfiguracje możemy łączyć, możemy mieć sensory, automatyzacja ładowane z kilku miejsc.

Automatyzacje z configuration.yaml automation: !include automations.yaml i automatyzacje z packages.yaml → automation split: !include_dir_merge_list …/automations

Automatyzacji z packages nie da sie edytować z poziomu interfejsu HA, tak samo zdefiniowane tam sensory muszą mieć zdefiniowany unique_id: inaczej zobaczymy znany komunikat nie ma unikalnego identyfikatora
Dlatego packages ma tą przewagę ze w jednym pliku możemy skonfigurować
sensory, automatyzacje, strefy itd.

To generalnie nie działa chyba już… ? Czy można prosić aby ktoś siedzący w temacie podał kod, działający na dzień 02.10.2024, po tych wszystkich zmianach z wątku?

Działa, a żadne zmiany ostatnio nie zachodziły.

Żeby mieć sensor z bieżącą ceną RCE (Current RCE proce) trzeba dodać do sensors.yaml ten kod:

# 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: 3600

# Sensor z bieżącą ceną
  - platform: template
    sensors:
      current_rce_price:
        friendly_name: "Current RCE Price"
        value_template: >
          {% set current_time = now().strftime('%H:%M') %}
          {% set prices = state_attr('sensor.rce_prices_today', 'value') %}
          {% for price in prices %}
            {% set start_time = price.udtczas_oreb.split(' - ')[0] %}
            {% set end_time = price.udtczas_oreb.split(' - ')[1] %}
            {% if start_time <= current_time < end_time %}
              {{ price.rce_pln }}
            {% endif %}
          {% endfor %}
        unit_of_measurement: "PLN/MWh"

Utworzenie wykresu to już inna historia

To nie ma nic wspólnego z kodem z początku, gdzie był ściągany jakiś plik do katalogu download. Na umowie z tauronem mam ceny według Fixing I, to nie są te ceny które zwraca tutaj komenda z platformy - rest.

Jeśli Twoje ceny są inne i nie mają nic wspólnego z rozliczeniem za pomocą cen RCE, jeśli chcesz, to musisz pobierać dane nie z PSE S.A. - Raporty OSP / Market data ale z Taurona lub innego miejsca gdzie są prezentowane ceny z cytowanego przez Ciebie Fixing I. Cały ten wątek i rozwiązania zarówno te z początku jak i końca wątku dotyczą cen RCE. Rozwiązania z początku i końca różnią się bo zmieniło się zarówno miejsce jak i sposób udostępniania danych przez PSE.

Tak jak pisze @MariuszAK . Od 14 czerwca PSE uruchomiło API i nie trzeba już kombinować z pobieraniem plików.
To ciekawe co piszesz bo Fixing I dotyczy Rynku Dnia następnego:
https://tge.pl/energia-elektryczna-rdn
, a te dane nie są publikowane przez PSE.

Rynkowe Ceny Energii RCE to pochodna tego rynku ważona wolumenem (i inne składowe).

Wg ustawy o odnawialnych źródłach energii jeśli podłączyłeś instalację po 1 lipca 2024 powinieneś być rozliczany po RCE.

Chyba, że masz jakąś inną umowę z Tauronem

CHodzi mi o zakup energii, przeszedłem na taryfę “zmienną”. Znalazłem coś takiego
https://energy-instrat-api.azurewebsites.net/api/prices/energy_price_rdn_hourly?date_from=01-10-2024T00:00:00Z&date_to=03-10-2024T23:59:59Z

i tam jest seria takich danych:
{“date”:“2024-10-01T00:00:00Z”,“fixing_i”:{“price”:328.0,“volume”:2654.7}

Może ktoś biegły zrobi z tego encję?

Czy chodzi o taryfę dynamiczną?
Nie wiem jak rozumieć “zmianną”.

Zajmuję się rozliczeniami energii, dla tego dopytuję.

Jutro przyjrzę się temu co podesłałeś.
Tylko prośba o link do tego API a nie do zapytania.
Ogólnie to TGE każe sobie słono płacić za dane CRDN ale może Instrat to kupuje i udostępnia.

tak, taryfa dynamiczna
mam tylko taki link, zwraca dane json, jak rozumiem w nawiasach dla każdej daty

Podpowiedz co jest u mnie źle? Nie pokazuje mi żadnych danych utworzony sensor. Status: niedostepny.
/homeassistant/sensors.yaml

# Pobieranie dzisiejszych cen RCE z PSE
- platform: rest
  name: RCE_Prices_Today
  unique_id: 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: 180

# 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 gt '{{ (now() + timedelta(days=1)).strftime('%Y-%m-%d') }}'"
  method: GET
  headers:
  accept: "application/json"
  value_template: "{{ value_json.value[0]['rce_pln'] }}"
  json_attributes:
    - value
  scan_interval: 60

- platform: rest
  scan_interval: 60
  name: RCE_market_energy_price_current_hour
  unique_id: RCE_market_energy_price_current_hour
  resource: "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
  unit_of_measurement: "PLN/MWh"
  icon: mdi:cash

# Sensor z biezaca cena
- platform: template
  sensors:
    current_rce_price:
      friendly_name: "Current RCE Price"
      unique_id: 62bb581f-a4db-4316-88eb-7f6f78b9c751
      value_template: >
        {% set current_time = now().strftime('%H:%M') %}
        {% set prices = state_attr('sensor.RCE_Prices_Today', 'value') %}
        {% for price in prices %}
          {% set start_time = price.udtczas_oreb.split(' - ')[0] %}
          {% set end_time = price.udtczas_oreb.split(' - ')[1] %}
          {% if start_time <= current_time < end_time %}
            {{ price.rce_pln }}
          {% endif %}
        {% endfor %}
      unit_of_measurement: "PLN/MWh"

/homeassistant/automations.yaml

- 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

- id: '1718249833122'
  alias: Update Current RCE Price
  trigger:
    - platform: time_pattern
      minutes: "/15"
  action:
    - service: homeassistant.update_entity
      target:
        entity_id: sensor.current_rce_price

/homeassistant/configuration.yaml

automation: !include automations.yaml
sensor: !include sensors.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
command_line: !include command_line.yaml

Jeszcze raz.

Potrzebny jest sensor REST pobierający bieżące ceny z API PSE:

# 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: 3600

Dodaj go do sensors.yaml, zrestartuj HA i sprawdź w narzędziach deweloperskich czy pobiera dane do tabeli. powinno być tak:

Następnie potrzebny jest template sensor który z tych danych pobierze cenę dla danej godziny.

# Sensor z bierzącą ceną
  - platform: template
    sensors:
      current_rce_price:
        friendly_name: "Current RCE Price"
        value_template: >
          {% set current_time = now().strftime('%H:%M') %}
          {% set prices = state_attr('sensor.rce_prices_today', 'value') %}
          {% for price in prices %}
            {% set start_time = price.udtczas_oreb.split(' - ')[0] %}
            {% set end_time = price.udtczas_oreb.split(' - ')[1] %}
            {% if start_time <= current_time < end_time %}
              {{ price.rce_pln }}
            {% endif %}
          {% endfor %}
        unit_of_measurement: "PLN/MWh"

Jego działanie trzeba sprawdzić analogicznie w developer tools:

i na końcu automatyzacja która aktualizuje ten sensor:

- id: '1718249833122'
  alias: Update Current RCE Price
  trigger:
  - platform: time_pattern
    minutes: /15
  action:
  - service: homeassistant.update_entity
    target:
      entity_id: sensor.current_rce_price

i tyle, nic więcej nie potrzebne.

Ja tych cen używam do obliczanie wartości energii oddanej do sieci z mojej instalacji PV:

1 Like

Może pora na nową definicje template zgodnie z

Legacy binary sensor configuration format

This format still works but is no longer recommended. Use modern configuration.

To tylko kwesta czasu jak będzie niewspierana.

Cześć,
czy u was te wykresy z cenami RCE są ucinane? Kiedy wchodzę na stronę poraz pierwszy od uruchomienia przeglądarki widzę ucięty wykres. Ucina prawą stronę od godziny 18. Po kliknieciu na inna zakładkę i powrót do strony z wykresem jest widoczny cały. Przykład poniżej:
image