LICZNIK GAZU na podstawie czasu pracy pieca

Jeśli mamy przekaźnik który steruje włączaniem i wyłączaniem pieca to możemy sobie utworzyć sensor:

# CZAS PRACY PIECA GAZOWEGO
  - platform: history_stats
    name: Ogrzewanie dzisiaj
    entity_id: switch.sterownik_pieca_gazowego
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'

Dzięki temu mamy całkowity czas pracy pieca (TYLKO OGRZEWANIE).

Przyjmuje się że piec o mocy 22kW zużywa w godzinę ok 2,5m3 gazu.

Czy ktoś wie jak zrobić sensor liczący średnie zużycie gazu na podstawie czasu pracy pieca ?

Pytam, ponieważ część osób na forum próbowała z Licznikiem Gazu na podstawie SONOFF SNZB-04 Zigbee jednak nie dostali zgody od dystrybutora gazu, a tak mogliby szacunkowo znać zużycie gazu.

Dobrze kombinujesz … jest jednak jeden problem.
Obecnie kotły modulują swoją moc (co za tym idzie zużycie gazu) i stan (czas) włączenie przekaźnika nie jest równoważny nawet czasowi pracy palnika. Samo zużycie gazu jest również zmienne podczas pracy palnika.
Aby to przybliżyć zobacz jak wygląda wykres mocy kotła, który jest włączony ciągle.


Więc trzeba obliczyć pole pod wykresem.
Bez wyciągnięcia parametrów z kotła będzie to raczej niemożliwe.
Nawet próby kalibracji z licznikiem gazu dadzą niepowtarzalne wyniki pomiarów.
Wszystko zależy jaki masz kocioł i co możesz z niego odczytać, ale i tak należy się liczyć z małą precyzją i wyniki będą poglądowe. U mnie udało się to w miarę skalibrować.

:thinking:
Utwórz dodatkowy sensor na podstawie odczytów tego sensora co utworzyłeś
(odczyt “Ogrzewanie dzisiaj” pomnoży x 2.5)

  - platform: template
    sensors:
      zuzyty_gaz
        friendly_name: "Zużyty gaz"
        value_template: "{{ (states('sensor.ogrzewanie_dzisiaj') | float(0) * 2.5)  | round(1) }}
        unit_of_measurement: m³
        device_class: gas

I jeszcze jeden co wyliczy średnią np. 7 dni

  - platform: average
    name: 'Gaz średnia z 7 dni'
    end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
    duration:
      days: 7
    precision: 0
    entities:
      - sensor.zuzyty_gaz

HACS - Average Sensor

Po 24 godzinach porównaj wskazania licznika gazu (dom) z sensorem “Zużyty gaz” i dokonaj korekty np. na " 2.47 "
/
Average Sensor przestał działać, zna ktoś inny spodów na utworzenie sensora który był by wstanie wyliczyć średnią np. dobową lub kilkudniową?

MOj kocioł liczy zużycie ale zaniza zużycie o15%.Utworzyłem wiec m
nowy sensor korekta zuzycia gazu,ale nie widzę go w zakladce energia nie mogę dodać.Nie rysuje się tez zaden wykres chociaż wartosc się zmienia,Gdy w narzedziach deweloperskich dodam wartosc state_class: total wtedy widzę i mogę dodać ,ale tylko do np restartu HA.Jak na stałe dodać state_class: total i co z wykresem?



Nie ma unikalnego identyfikatora - wiec go dopisz
Np.

  value_template: #####
  unique_id: 2452716740003

W customize.yaml dodaj wpis

sensor.korekta_gaz
  state_class: total

W narzędziach deweloperskich każda zmiana jest tylko tymczasowa (tylko do czasu otrzymania nowych danych)
/
Na zrzucie nie widać całej konfiguracji sensora
Jest jeszcze taki dodatek konfiguracyjny, który może pomóc

  value_template: #####
  availability: "{{ states('sensor.korekta_gazu') | is_number }}"  

ok dzieki,ale mam jeszcze problem ze wskazaniem stan wyswietla z cudzysłowem i w zakladce energia takie coś


ok juz poprawiłem,zostało jeszcze statistic not defindet

Dalej walczę z korekta gazy.Cos źle mi wylicza po korekcie zużycie wychodzi mniejsze niż orginalny pomiar . Próbowałem też utworzyć sensory unlity Meyer godzina,dzień,miesiąc,rok ale dalej coś nie tak zlicza

Skąd wiesz, że masz prawidłowy współczynnik korekcji, jak go wyznaczyłeś?

Zużycie gazu+ 15% o tyle mniej więcej jest różnica między licznikiem gazowym a tym co wylicza kocioł gazowy.

Nie było pytania… po prostu pomyliłem Twój offtopic z “tematem” głównym :wink:
…i zacząłem się zastanawiać jak można otrzymać prawidłowe wyniki na postawie niewłaściwej metody

Hej, chce dodac do HA takei wyliczenia, ale nie mam pojecia jak sie do tego zabrac. Mam te same dane glownie procent modulacji, czy moglbys pomoc to zaimplementowac?

Będąc na Twoim miejscu zrobiłbym tak:
Możesz z modulacji całką Riemanna (pomocnik) liczyć “pozorne” zużycie gazu.
Z danych katalogowych kotła możesz znaleźć max zużycie gazu w [l/h].
Mnożąc obie wartości otrzymasz przybliżone zużycie gazu.
Porównując otrzymany wynik z licznikiem można poprawić obliczenia o odpowiedni współczynnik korekcji.
Matematycznie to proste ale jak dokładnie to zrobić HA nie mam gotowego rozwiązania. U mnie liczy to bramka do komunikacji z kotłem.

Dzieki za wskazanie kierunku, zastanawiam sie jak wyliczyc przypadek gdy modulacja jest 0% a takie stany sa dosc czesto. Musze brac pod uwage rowniez czy w ogóle piec grzeje i te 0% unac za minimalna wartosc katalogowa. Jestem ciekaw jak to mi wyjdzie.

Sama matematyka U= StanKotła*(Umin + Mod*(Umax-Umin))
U [l/h]- chwilowe zużycie gazu
StanKotła - 0=wył , 1=zał
Mod - modulacja wyrażona w ułamku od 0 do 1
Umin [l/h] - zużycie dla modulacji 0%
Umax [l/h]- zużycie dla modulacji 100%
Teraz jeśli dla chwilowego U użyjesz całki Remanna otrzymasz wynik w litrach.

1 polubienie

Dzieki, bardzo dziekuje za podpowiedzi, u mnie juz z matematyka nie jest najlepiej.
ZAimplementowalem ciekawe jak to wyjdzie.

Moze ktos zna wyniki zużycia Gazu dla modulacji 0 i 100% dla pieca Termet ECOCONDENS GOLD PLUS - 20 dwufunkcyjny.

P.S - juz znalazlem te wartosci.

Mam juz za soba kilka dnia uzycia tego wzoru w HA i miałem/mam/napotkałem pewne problemy jak i matematyczne jak i w wyliczaniu statystyk.
Oto lista problemow:

  1. Wzor ktory podał kolega @RobinI30 wylicza wartosc chwilowa w m3/h i tu tworząc sensor Total Increasing dodawl i co odczyt wartosci i troche nabilalo tych m3
  2. Pojawialy sie na wykresie sensora ujemne wartosci w ENERGY i tego zupełnie nie rozumiem
  3. Sensor tworzony w HELPER mial od razu wynik w m3 i tworząc go z integracji z Riemann sum integral sensor nie byl widoczny w ENERGY .

Takie napotkalem do tej pory problemy.

Czesciowo rozwiazałem problem tak mi sie przynjamniej wydaje po analizie statystyk doszedłem do wniosku ze one wykonuja sie co 5min wiec wynik ze wzoru podzieliłem na 12 co daje juz dosc fajne wyniki, ale nadal przekraczaja zuzycie m3 gazu przez piec ktory na 100% modulacji powinien zużyć gazu ok 2m3/h a wykres pokazuje mi 2.2m3/h gdzie modulacja osiągnęła max 70% i to nie w ciągu 1h.

Oto wzór ktoy aktualnie uzywam dla sensora GAS

{{ (( states(‘sensor.status_flames’) | float(0) | round(0) * ( ( 0.26 + ((states(‘sensor.boiler_modulation’) | float(0) ) / 100 ) * ( 2 - 0.26 ))) ) / 12 ) | round(3) }}

Tak wyglada wykres :

A tak Gas consumpion:

Zastanawiam sie dlaczego przekracza maksymalna wartość jaka piec jest w stanie zużyć.

Pomijając fakt, że piszesz niechlujnie i trzeba kilka razy czytać co napisałeś, oraz że z pewnością nie masz pieca tylko kocioł, to skąd pewność, że podana wartość 2,00 m3/h to poprawna wartość max dla Twojego kotła ? Różnica 2 a 2,3 może wynikać z zaokrągleń samych obliczeń i ich przybliżonej wartości w stosunku do realnego zużycia.
Poza tym zauważ, że dla przykładowego kotła kondensacyjnego typu MCR3evo o mocy nominalnej 24kW, jego moc minimalna i maksymalna zależy od parametrów pracy i tak np.

Moc nominalna dla parametru 50/30⁰ C (dla c.o.)  to min/max   6,1-24,8  kW
Moc nominalna dla parametru 80/60⁰ C (dla c.o.) to min/max   5,5-23,8 kW

a wtedy masz życie dla gazu ziemnego typu E (GZ50) → min/max

0,59-2,54 m3/h lub 0,72/3,10  m3/h

Poza konkursem to … możliwa jest sytuacja, że kocioł pracuje z modulacją np. 0% czyli moc minimalna a spala gaz na poziomie mocy startowej czy większej.

Wartosci dla minimalnej mocy i dla max sa mniejwiecej znane przyjałem 0,24 - 2,3m3/h dla kotla 20kW, ale nie mozna ich brac doslownie bo to zalezy jak serwisant ustawił i potrzebne beda korety.

Dzis przetestowalem zuzycie razem z licznikiem w ciagu godziny, obciazylem piec na 50% modulacji i staralem sie ja tak utrzymac przez godzine, nie dalo sie ostatnie 20min utrzymac w 50% modulacji , która spadła do 20%.
Pobór gazu zmierzony z licznika wyszedł 0,82m3 sensor wyliczyl 0,4m3.
Zajrzałem do statystyk były dwie wartosci ujemne niewielkie ( tego tez nie rozumiem czesto sie z tym spotykam), poprawilem je na dodatnie i w statystykach energii dostalem wynik 0.5m3 OK wprowadzilem korekte dla sensowa ( x * 1.6 ) i tak na razie zostawiam.

Problem ktory zauwazylem to taki ze jesli piec działa grzeje ciagle to pomiary sa w miare OK mimo zmiany modulacji, ale jesli plomien sie na jakis czas wylaczy gdzie wartosc bedzie 0.000 to potem wyniki sa bardzo zaskakujace poniewaz zuzycie osiaga wtedy ponad 2.3m3 mimo ze kocioł dłuższy czas byl wyłączony a jak dzialal to z max 50% modulacja i to sporadycznie.
Oto podglad na dane z sensora oraz status kotła:


Ja widac na zdjeciu tam gdzie sa przerwy wyliczenia m3 sa znacznie wyższe i odbiegaja daleko od realnych wartości.

Najwyraźniej metoda zliczania w statystykach tych chwilowych zużyć jest zła i nie da się w taki prostszy sposób tego wyliczyć ponieważ do statystyk muszą być uwzględnione przerwy w grzaniu kotła i mam wrażenie że to psuje wyniki pomiarów w statystykach.

Może ktoś przez to już przechodził ?

Witam po wielu próbach niestety poległem, wartości z sensora są mocno przeklamane w Energy.
Mam takie problemy pewnie t tylko matematyka ale za pomoca narzedzi ktore udostepnia nie daje rady tak przygotowac dane aby były mniej więcej prawidłowe.

Problemy dotyczą wykresów w Energy !

  1. Jesli kocioł działa to pomiar który sobie opisałem we wzorze w miarę sie sprawdza
    ale jeśli będą wyłączenia to jest poważny problem z pomiarem i to o dziwo rośnie w góre zamiast spadać zuzycie.

Ten sensor liczy ratio w ciagu godziny, ale działa słabo ponieważ nie resetuje sie co godzine tylko liczy ciagle i jesli przez godzine nie bedzie działał kocioł to osiągnie ze stanu 100% → 0% i wzrasta proporcjonalnie do czasu działania kotła.

# dane sensora : 
# RATIO PRACY PIECA
- platform: history_stats
  name: Ogrzewanie_dzisiaj_godzina
  unique_id: Ogrzewanie_dzisiaj_godzina
  entity_id: binary_sensor.flame
  state: 'on'
  type: ratio
  end: '{{ now() }}'
  duration: "01:00:00"

Tu jest sensor zanieniajacy status plomienia na 0/1

- platform: template
  sensors: 
    status_flames:
      unique_id: 9fb61580-0687-434e-96c0-efc58src41cn
      friendly_name: "Stan plomienia"
      value_template: >- 
          {% set flame = states('binary_sensor.flame') %}
          {% if  flame == 'on' %} 1
          {% else %} 0
          {% endif %}

Tu wykreowane wzory ktore maja zadanie policzyc zuzycie w m3, uzywam dla porownania w różnych sensorach utworzonych sensorach za pomoca HELPER.

 Value_z_sensora {{ ((( states('sensor.status_flames') | float(0) | round(0)  * ( ( 0.26 + ((states('sensor.boiler_modulation') | float(0) ) / 100 ) * ( 2 - 0.26 ))) )  )  | round(3) ) }} 
      value_template: {{ ( states('sensor.status_flames') | float(0) | round(0) * ( ( 0.26 + ((states('sensor.boiler_modulation') | float(0) ) / 100 ) * ( 2 - 0.26 ))) * (states('sensor.ogrzewanie_dzisiaj_godzina') | float(0) / 100 | round(0))  | round(3) ) }}

Wiem ze piec w ciagu 1h przy modulacji ok 35-40% realnie zjada 0.83m3 gazu, sprawdzone.

Osiagnac chce to aby w Energy pokazalo mi prawidłowe dane 9 w przybliżeniu orientacyjnym z bledem 10% chociaz ) , a w tej chwili to jest grubo zawyżone ( mysle ze czasami nawet 50-70% szczególnie jesli sa duze przerwy w działaniu kotła.
Pozdrawiam i liczę na wskazówki od was. Dziękuję.

Trudno mi się odnieść do tego co i jak zrobiłeś. Mój licznik mam zrobiony w NR, tam liczę całkę i odrzucam błędne odczyty. Co do zasady robi to w taki sposób jak opisałem wcześniej.
Precyzji nie potrafię zweryfikować bo mam jeszcze inne odbiorniki gazu ale mnie więcej się zgadza.

Czy uzywasz tego sensora do statystyk Energy?
Dodaj do wykresu informacje o plomieniu.