Utility Meter złe zliczanie kosztów energii

Na podstawie tego postu https://forum.arturhome.pl/t/utility-meter-w-wykorzystaniu-dla-modulu-energia/2858 wpisałem wszystkie gniazdka w domu.

Dla wszystkich pozycji wpisałem stały koszt zużycia czyli 0.7 PLN/kWh.
4 gniazdka mam Zigbee zaś reszta jest na Tasmocie.
W Panelu Energia dla gniazdek Zigbee jakoś HA to liczy po Chińsku natomiast dla pozostałych nie wykazuje kosztów. Sumarycznie też mu to nie wychodzi :

I Podsumowanie:

gdzie wg kalkulatora 4.87kWh * 0.7 = 3.409 PLN a nie 0.39 PLN.

Więc albo ja się gdzieś walnąłem ( a sprawdzałem każdy wpis gdzie dałem 0.7 ) albo HA operuje na innej matematyce.

EDIT:
Patrzę dzisiaj i zaczyna liczyć poprawnie dzisiejsze zużycie…
Będę się temu przyglądał bo może dlatego takie wyniki z wczoraj gdyż wczoraj to dopiero wpisałem.

To normalne - to zaczyna działać poprawnie dopiero od następnej doby po uruchomieniu (wcześniej dysponuje jedynie niekompletnymi danymi).

1 Like

THX - patrzę na bieżąco i mniej więcej się zgadza.

Ja mam taki problem, utility meter błędnie dodaje wartości, zaznaczone wzrosty poniżej są prawidłowe, reszta nie, problem polega na tym, że jedna tasmota czasami straci kontakt z wifi, wtedy wartości na czas utraty połączenia w tej encji się zerują, a jak wrócą to utility meter to jakoś dolicza, przynajmniej pokrywa się to z nie dostępnością jednego z urządzeń. Macie pomysł jak to uniknąć?

poniżej jest opis skąd mam encje do obliczeń

  1. Najpierw sumuje dwie fazy (tasmoty) - i tworzę jedną encję Pompa dzienne zużycie w kWh
  - platform: template
    sensors:
      daily_energy:
        friendly_name: Pompa dzienne zużycie
        unit_of_measurement: kWh
        value_template: "{{ states('sensor.pompa_ciepla_t06_energy_today')|float| round(0) + states('sensor.pompa_ciepla_wew_energy_today')|float | round(0) }}"
  1. Później stworzyłem encję pompa koszt dla jednego dnia w zł
  - platform: template
    sensors:
      pompa_koszt:
        friendly_name: Pompa ciepła
        unit_of_measurement: “zł”
        icon_template: mdi:currency-eur
        value_template: "{{ (states('sensor.daily_energy') | float * 0.63) | round(2) }}"
  1. i dalej sumuje sobie w utility meter
  pompa_yearly_energy:
    source: sensor.daily_energy
    cycle: yearly
  pompa_koszt2:
    source: sensor.pompa_koszt
    cycle: monthly
  pompa_koszt3:
    source: sensor.pompa_koszt
    cycle: yearly

obraz

Spróbuj zapisać w taki sposób:

Jest jakaś zmiana i powinno być

 float(0)

Prawdopodobnie w logach zostałem poinformowany, że mam zmienić

Mam podobny problem jak @luki25, tzn. czasem są błędy w czytaniu sensora sensor.total_yield_hvxxxx. Utworzyłem w template sensor.produkcja_calkowita_posrednik i skorzystałem z availability_template: > żebym nie miał 0 w odczycie sensora, a potem skoku zliczania w utility_meter. Problem był prawie rozwiązany, ale za czas niedostępności sensor.total_yield_hvxxxx energia się nie dodawała w utility_meter pomimo, że sensor.produkcja_calkowita_posrednik miał wartość prawidłową. Różnice nie są duże, ale są, szczególnie jak jest dłuższa przerwa np.podczas restartu serwera lub jak słoneczko mocniej zaświeci.
Trafiłem na ten temat i powyższy przytoczony temat i zmieniłem zapis na:

      produkcja_calkowita_posrednik:
        unit_of_measurement: kWh
  #      value_template: "{{ (states('sensor.total_yield_hv2110007409') | float) }}"  # -307.68 w roku 2021          
   #     availability_template: >
        value_template: >
          {% if ((states('sensor.total_yield_hv2110007409') | float) ==0) %}        
             {{ states('sensor.produkcja_calkowita_posrednik') }}
            {% else %}
             {{ (states('sensor.total_yield_hv2110007409') | float) }}
            {% endif %}

ale to nic nie zmieniło (bo w zasadzie to ta sama funkcjonalność) i nadal za czas niedostępności sensora wyprodukowana energia nie jest sumowana.
Podejrzewam, że wszyscy mają podobny błąd korzystając z tych funkcji, dlatego proszę o pomoc w rozwiązaniu tego problemu.

Chciałem wykorzystać utility meter do zliczania dziennego zuzycia energii które monitoruje za pomocą 3x pzem-004t i nodemcu, niestety każda przerwa w odbieraniu danych np zanik internetu lub chwilowy zanik pradu skutkuje rozjechaniem odczytu, dziś np naliczylo mi zuzycia dobowego 152kwh :dizzy_face: identycznie miała osoba z tego linku Utility Meter abnormal values on calculated sensor - Configuration - Home Assistant Community
niestety podane rozwiązanie z “availability_template:” nie działa.
Konfig mam taki ze stworzylem encje która dodaje wszystkie 3 fazy do siebie i ja wykorzystuje do utility meter ten resetuje sie o 0:00 i liczy kolejna dobe.

utility_meter:
  energy:
    name: Zuzycie_dzienne_kwh
    source: sensor.grid_import_total_kwh 
    cycle: daily

  - sensor:
      - name: "grid_import_total_wh"
        unit_of_measurement: 'Wh'
        device_class: energy
        state_class: total
        state: >
         {{ states('sensor.l1_pzem_energy') |float + states('sensor.l2_pzem_energy') | float + 
         states('sensor.l3_pzem_energy') | float }}      
        #availability: "{{ states('sensor.l1_pzem_energy') not in ['unavailable', 'unknown', 'none'] }}" 
  - sensor:
      - name: "grid_import_total_kWh"
        unit_of_measurement: 'kWh'
        device_class: energy
        state_class: total
        state: >
         {{ states("sensor.grid_import_total_wh") | int / 1000 | round(2) }}
        availability: "{{ states('sensor.grid_import_total_wh') not in ['unavailable', 'unknown', 'none'] }}"    

cześć, poniżej przykład jak to rozwiązać.
Tworzysz encje, która akceptuje ( w moim przypadku) wyniki powyżej 0 i mniej niż 500, jak będzie coś innego, to weźmie ostatnią poprzednią wartość z tego przedziału, więc już nie będzie dodawać “kosmicznych” wartości

  - platform: template #nie akceptuje wyników poniżej <0 i >500
    sensors:
      woda_glebokosc_garaz:
        friendly_name: Woda głębokość 1 karcher
        unit_of_measurement: '%'
        value_template: >
          {% if states('sensor.woda_glebokosc_garaz_1') | float > 0 and states('sensor.woda_glebokosc_garaz_1')|float < 500 %}
            {{ states('sensor.woda_glebokosc_garaz_1') }}
          {% else %}
            0
          {% endif %}

Dzięki Łukasz zaraz sprawdzę czy to dziala🙂, ale pomyślalem ze to chyba nie wyjdzie a dlaczego już tłumaczę. Liczniki pzem rejestrują całkowitą ilość zużytej energii na każdej fazie ja dodaje te wartości do siebie na chwile obecna jest to wartość 152kwh od początku lutego, utility meter o godzinie 00:00 zapisuje ostatnia wartość np.152kwh i zeruje licznik dzienny, następnie od wartości która wzrosła czyli np 157kwh odejmuje zapamiętana 152kwh i wychodzi dobowe zużycie = 5kwh problem pojawia się kiedy encja przyjmuje wartosc mniejsza niz zapamietana o 00:00. Mój pomiar stale rośnie wiec chyba nie moge zrobic tego z > i < od jakiejś liczby? widzę ze używasz tego do pomiaru głębokosci gdzie wartości są stale w jakimś przedziale i w tym przypadku będzie to dobre rozwiązanie.