Cena energii elektrycznej Tauron G12W

Postanowiłem zbudować sensor, który będzie podawał aktualną cenę prądu w Tauronie w taryfie G12W.
Cena ta jest podstawiana do HA Energy i pozwala liczyć koszt urządzenia w danym zakresie czasu.

binary_sensor:
  - platform: workday
    country: PL
template:
  - binary_sensor:
    - unique_id: power_tauron_g12w_current_tariff
      name: power_tauron_g12w_current_tariff
      availability: "{{ not is_state('binary_sensor.workday_sensor', 'unavailable') }}"
      state: >-
        {## Return True if it's peak time ##}
        {## Return False if it's offpeak time ##}
        {%- set energy = {
          'peak1_start': 6,
          'peak1_stop': 13,
          'peak2_start': 15,
          'peak2_stop': 22,
        } -%}
        {## Jeśli jest weekend ##}
        {%- if is_state('binary_sensor.workday_sensor', 'off') -%}
          False
        {## Jeśli jest po starcie pierwszego szczytu i przed końcem pierwszego szczytu ##}
        {%- elif 
            (now().hour - energy.peak1_start >= 0)
              and 
            (now().hour - energy.peak1_stop < 0) 
        -%}
          True
        {## Jeśli jest po starcie pierwszego szczytu i przed końcem drugiego szczytu ##}
        {%- elif 
            (now().hour - energy.peak2_start >= 0)
              and 
            (now().hour - energy.peak2_stop < 0) 
        -%}
          True
        {%- else %}
        False
        {%- endif %}

  - sensor:
    - unique_id: power_tauron_g12w_current_price
      name: power_tauron_g12w_current_price
      availability: "{{ not is_state('binary_sensor.power_tauron_g12w_current_tariff', 'unavailable') }}"
      device_class: monetary
      unit_of_measurement: "PLN/kWh"
      state: >-
        {%- if is_state('binary_sensor.power_tauron_g12w_current_tariff', 'off') -%}
          0.3260
        {%- elif is_state('binary_sensor.power_tauron_g12w_current_tariff', 'on') -%}
          0.6728
        {%- endif -%}

bazowałem na cenach ze strony:
https://www.tauron.pl/dla-domu/prad/taryfa-sprzedawcy/g12w

9 Likes

to jest informacja, którą bardzo ciężko znaleźć w sieci :+1:


ja bym się trzymał tych cen, są bardziej realne, co prawda to nie g12, ale jak się przejdzie na ich stronę g13 to ceny są niższe (brak opłat dystrybucyjnych)

2 Likes

Cześć,

Dziękuję, że podzieliłeś się swoją pracą. Szukałem takiego rozwiania dla moich statystyk.
Niestety dopiero zaczynam przygodzę z HA i nie bardzo wiem gdzie te wpisy dodać.

Próbowałem do
configuration.yaml
binary_sensor.yaml

ale nie przechodzi weryfikacji.

Próbowałem też rozbić część do różnych plików według typu, ale też bez powodzenia.

Jeśli możesz podpowiedzieć gdzie to dodać będę wdzięczny.

Przy okazji
Ceny w G12W to obecnie
0,33 i 0,81
od 1 sierpnia po powrocie do stawek vat
0,38 i 0,95

1.W config dodaj plik sensor.yaml # Jak nie masz
2. W configuration.yaml dopisz sensor: !include sensor.yaml # Jak nie masz
3. Sprawdź poprawność, Restart HA
4. W pliku sensor.yaml dodaj “sensory” # Zwróć uwagę na odstępy
5. Zapisz, sprawdź poprawność, Restart HA
Np.


Lub
configuration.yaml
Na tej zasadzie
https://www.home-assistant.io/integrations/template/

/
Wkleiłem do swojego sensora.yaml i krzyczy, że niepoprawny.
Ale jak skasowałem

- platform: template
  sensors:

Jest w stanie zaakceptować
/
Wszystkie moje wpisy zaczynają się po 2 blokach lub inaczej po 4 spacjach
/
Ps.
Edytuj posty, dopisuj

hej

Tak właśnie robię, ale doczytałem, że problem może być ze stara i nowa definicją.
Ja ma zdefiniowane template według starej składni.
Po adaptacji nowej składni na starą zaczęło działać.
Prośba o info, czy zostawić to w tym formacje czy przepisywać na nowy?
Dodatkowo proszę o info czy to tak ma być, czy tutaj jest błąd
{%- if is_state(‘binary_sensor.power_tauron_g12w_current_tariff’, ‘off’) -%}
a chyba powinno być
{%- if is_state(‘binary_sensor.power_tauron_g12w_current_tariff’, ‘True’) -%}

    power_tauron_g12w_current_tariff:
      friendly_name: 'power_tauron_g12w_current_tariff'
      availability_template: "{{ not is_state('binary_sensor.workday_sensor', 'unavailable') }}"
      value_template: >
        {## Return True if it's peak time ##}
        {## Return False if it's offpeak time ##}
        {% set energy = {
          'peak1_start': 6,
          'peak1_stop': 13,
          'peak2_start': 15,
          'peak2_stop': 22,
        } %}
        {## Jeśli jest weekend ##}
        {% if is_state('binary_sensor.workday_sensor', 'off') %}
          False
        {## Jeśli jest po starcie pierwszego szczytu i przed końcem pierwszego szczytu ##}
        {% elif 
            (now().hour - energy.peak1_start >= 0)
              and 
            (now().hour - energy.peak1_stop < 0) 
        %}
          True
        {## Jeśli jest po starcie pierwszego szczytu i przed końcem drugiego szczytu ##}
        {% elif 
            (now().hour - energy.peak2_start >= 0)
              and 
            (now().hour - energy.peak2_stop < 0) 
        %}
          True
        {% else %}
        False
        {% endif %}        
        

    power_tauron_g12w_current_price:
      friendly_name: power_tauron_g12w_current_price
      #availability_template: "{{ not is_state('sensor.power_tauron_g12w_current_tariff', 'unavailable') }}"
      device_class: monetary
      unit_of_measurement: "PLN/kWh"
      value_template: >-
        {%- if is_state('sensor.power_tauron_g12w_current_tariff', 'False') -%}
          0.33
        {%- elif is_state('sensor.power_tauron_g12w_current_tariff', 'True') -%}
          0.81
        {%- endif -%}   

Wg strony https://www.tauron.pl/dla-domu/prad/taryfa-sprzedawcy/g12w okres obniżonej ceny sprzedaży został przedłużony do 31.10.2022? Czy ktoś może potwierdzić tą informację?

Przecież to nie jest żadne obniżenie ceny, tylko manipulacja wartością VAT…

Dla zrozumienia - dla nas jako klienta końcowego, obniżenie VAT powoduje że zapłacimy realnie mniej, dla firmy to żadna zmiana.

1 Like

@luki25 w pewnym sensie masz rację, ale też nie do końca. Firma, jadąc na normalnym VAT 23%, nie może sobie go w kosztach w pełni odliczyć. Oczywiście w teorii te pieniądze i tak do firmy nie należą, ale każdy liczy na te odliczenia.

1 Like

Cześć.

jestem zupełnie zielony ale czytam wszystko co publikuje Artur i inni członkowie forum. Sklejam, kopiuje modyfikuje i testuje aż do skutku. Popełniłem banalne dwa sensory do obliczania kosztów prądu w Taryfie G11 wegług nowych zasasd 2022 (czyli cena energii w zużyciu do 2000kWh i powyzej). Ceny przyjąłem z oficjalnego pisma z Tauron jakie dostałem. Wszystko działa, dashboard liczy koszty. Sprawdziłem przełączenia ceny, też działa. Wygląda to tak

- platform: template
  sensors:
    taryfa_pis:
      friendly_name: "taryfy pradu PIS"  
      value_template: >- 
          {% if states ('sensor.tauron_amiplus_100044428_current_consumption_reading')|int(0) > 2000 %}
             on
          {% else %}
             off
          {% endif %}
               
    power_tauron_current_price:
      friendly_name: "power_tauron_current_price"
      device_class: monetary
      unit_of_measurement: "PLN/kWh"
      value_template: >-
        {%- if is_state('sensor.taryfa_pis', 'on') -%}
          1.3134
        {%- elif is_state('sensor.taryfa_pis', 'off') -%}
          0.8585
        {%- endif -%}  

Jakieś komentarze Panie i Panowie do tego skryptu?

1 Like

Skąd masz taką cenę za kWh do 2000
U mnie w PGE średnia cena rachunek/zużycie daje około 71 groszy
TAURON ma tak drogie ceny ?

Masz rację pomyliłem tabele. Dzięki już skorygowałem. Cena 0,8585 jest po przekroczeniu 2000kWh

Trochę uaktualnię swój post o nowy algorytm (zmiana ceny po przekroczeniu 2000kWh)

  1. Potrzebujemy utility_meter, który zlicza zużycie energii w tym roku
  2. Zaczynamy od template sensor, który odejmuje od 2000 wartość z utility_meter z punktu 0.
    - unique_id: power_tauron_cheaper_kwh_left
      name: Pozostałe tańsze kWh w Tauronie
      state: "{{ 2000|int - states('sensor.electricity_yearly')|int }}"
      availability: "{{ not (is_state('sensor.electricity_yearly', 'unavailable') or is_state('sensor.electricity_yearly', 'unknown')) }}"
      state_class: measurement
      unit_of_measurement: "kWh"
      attributes:
        source: "sensor.electricity_yearly"
  1. Potrzebujemy template binary_sensor, który zwróci nam info czy jesteśmy w czasie szczytu, czy poza szczytem
    - unique_id: power_tauron_g12w_current_tariff
      name: power_tauron_g12w_current_tariff
      availability: >-
        {{
          (not is_state('binary_sensor.workday_sensor', 'unavailable'))
          and
          (not is_state('binary_sensor.workday_sensor', 'unknown'))
        }}
      state: >-
        {## Return True if it's peak time ##}
        {## Return False if it's offpeak time ##}
        {%- set energy = {
          'peak1_start': 6,
          'peak1_stop': 13,
          'peak2_start': 15,
          'peak2_stop': 22,
        } -%}
        {## Jeśli jest weekend ##}
        {%- if is_state('binary_sensor.workday_sensor', 'off') -%}
          False
        {## Jeśli jest po starcie pierwszego szczytu i przed końcem pierwszego szczytu ##}
        {%- elif
            (now().hour - energy.peak1_start >= 0)
              and
            (now().hour - energy.peak1_stop < 0)
        -%}
          True
        {## Jeśli jest po starcie pierwszego szczytu i przed końcem drugiego szczytu ##}
        {%- elif
            (now().hour - energy.peak2_start >= 0)
              and
            (now().hour - energy.peak2_stop < 0)
        -%}
          True
        {%- else %}
        False
        {%- endif %}
  1. Tworzymy garść pomocników typu input_number: będą to cztery sztuki, cena prądu w szczycie i poza oraz po przekroczeniu limitu w szczycie i poza.
  2. Następnie deklarujemy sensor, który zwróci właściwą cenę
    - unique_id: power_tauron_g12w_current_price
      name: power_tauron_g12w_current_price
      availability: >-
        {{
          (not is_state('binary_sensor.power_tauron_g12w_current_tariff', 'unavailable'))
          and
          (not is_state('binary_sensor.power_tauron_g12w_current_tariff', 'unknown'))
        }}
      device_class: monetary
      unit_of_measurement: "PLN/kWh"
      state: >-
        {% if is_state('binary_sensor.power_tauron_g12w_current_tariff', 'off') -%}
          {% if states('sensor.pozostale_tansze_kwh_w_tauronie')|int < 0 -%}
            {{ states('input_number.g12w_pozaszczyt_aktualna_cena_powyzej_2000kwh_rok') }}
          {% else %}
            {{ states('input_number.g12w_pozaszczyt_aktualna_cena') }}
          {%- endif -%}
        {%- elif is_state('binary_sensor.power_tauron_g12w_current_tariff', 'on') -%}
          {% if states('sensor.pozostale_tansze_kwh_w_tauronie')|int < 0 -%}
            {{ states('input_number.g12w_szczyt_aktualna_cena_powyzej_2000kwh_rok') }}
          {% else %}
            {{ states('input_number.g12w_szczyt_aktualna_cena') }}
          {%- endif -%}
        {%- endif -%}

czas się zabrać za to 2000kwh, robię wg Twojej instrukcji @uosiu z tymże modyfikuję kod, bo ja mam zwykłe G11 ze stałą ceną. Utworzyłem odpowiednio mniej pomocników i nie chce mi wejść kod:

- name: obecna cena taryfy G11
        availability: >-
          {{
            (not is_state('binary_sensor.obecna_cena_taryfy_G11', 'unavailable'))
            and
            (not is_state('binary_sensor.obecna_cena_taryfy_G11', 'unknown'))
          }}
        device_class: monetary
        unit_of_measurement: "PLN/kWh"
        state: >-
          {% if states('sensor.pozostalo_tanszych_kwh')|int < 0 -%}
            {{ states('input_number.drozszy_prad') }}
          {% else %}
            {{ states('input_number.tanszy_prad) }}
          {%- endif -%}

Dostaję zwrotkę w logach:

Invalid config for [template]: invalid template (TemplateSyntaxError: unexpected char "'" at 125) for dictionary value @ data['sensor'][11]['state']. Got "{% if states('sensor.pozostalo_tanszych_kwh')|int < 0 -%}\n {{ states('input_number.drozszy_prad') }}\n{% else %}\n {{ states('input_number.tanszy_prad) }}\n{%- endif -%}". (See /config/configuration.yaml, line 346).

Czy ktoś byłby uprzejmy pomóc mi w zrobieniu fixa do powyższego?

Na pewno jest niepoprawna linia

 {{ states('input_number.tanszy_prad) }}

brakuje ' w input_…

 {{ states('input_number.tanszy_prad') }}

To nie mogło być tak proste…a jednak było! Brakowało tylko tego apostrofu. Bardzo dziękuję za pomoc Mariusz, działa :slight_smile:

Cześć, czy ktoś z Was próbował zrobić integrację która pobierała by aktualną cenę z

https://www.pse.pl/oire/rcem-rynkowa-miesieczna-cena-energii-elektrycznej

a jeszcze lepiej od przyszłego roku z

https://www.pse.pl/dane-systemowe/funkcjonowanie-rb/raporty-dobowe-z-funkcjonowania-rb/podstawowe-wskazniki-cenowe-i-kosztowe/rynkowa-cena-energii-elektrycznej-rce

RCEm jest publikowana zawsze 11 dnia bieżącego miesiąca, ja niestety wpisują to ręcznie w tablicę i ewentualnie koryguję cenę jak PSE ją skoryguje a ma na to 12 miesięcy od publikacji.

Pod linkiem z poprzedniego posta widać, że nie 11 bieżącego miesiąca, tylko 11 kolejnego miesiąca…