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 -%}
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)
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.
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 -%}
@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.
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?
Trochę uaktualnię swój post o nowy algorytm (zmiana ceny po przekroczeniu 2000kWh)
Potrzebujemy utility_meter, który zlicza zużycie energii w tym roku
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"
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 %}
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.
Następnie deklarujemy sensor, który zwróci właściwą cenę
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:
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.