Sposób na zamianę wyświetlania zużycia wody w m3 na zł

Przepraszam, teraz zorientowałem się o co chodzi.
Mam z małych liter (samo przekształca)

… ale do rzeczy, od początku:

i tworzę taki wpis

      sensor.woda_zimna_stan_dzien:
        friendly_name: "Koszt zużycia wody zimnej dzień"
        unit_of_measurement: 'zł'
        value_template: "{{ (states('sensor.woda_zimna_stan_dzien') | float(0) * 14.170) | round(2) }}"
        icon_template: mdi:currency-eur

encja nazywa się sensor.woda_zimna_stan_dzien
(widzę, że wylicza poprawnie zużycie dzienne w m3 na zł)
jeśli coś żle, to bardzo proszę o korektę

  • kopiuję ten zapis
  • wchodzę w ustawienia-automatyzacje oraz sceny i daję utwórz nową automatyzację.
    i co dalej, co ustawić w wyzwalaczu:

    Próbuję kopiować zapis skopiowanego szablonu w różne opcje, ale bez rezultatu

A może idę całkowicie złą ścieżką ?

No zdecydowanie nie tak. Używając np. Dodatku → File editor (do zainstalowanie ze sklepu) idziesz do swojego głównego pliku "config/configuration.yaml i tam wklejasz “kod”, w Twoim brakuje “template”, zobacz jak pokazał Tobie @rafkan .

con1

Po wklejeniu i zapisaniu, idziesz do Narzędzi deweloperskich i sprawdzasz konfigurację, jak poprawna to uruchamiasz ponownie HA, po uruchomieniu masz swoje nowe sensory, które możesz wyświetlać na karcie.

I to jest jakiś krok !
Nie miałem pojęcia, że ten kod po prostu wkleja się do configuration.yaml

Utworzyłem taki kod

template:
  - sensor:
      - name: "woda_zimna_stan_dzien"
	    friendly_name: "Koszt zużycia wody zimnej dzień"
        unit_of_measurement: 'zł'
        value_template: "{{ (states('sensor.woda_zimna_stan_dzien') | float(0) * 14.170) | round(2) }}"
        icon_template: mdi:currency-eur

i pewnie coś źle napisałem.
Nie chce zatwierdzić, więc pewnie jakiś bład w zapisie.
encja ma nazwę

sensor.woda_zimna_stan_dzien

Nazwa nowego sensora - name: "woda_zimna_stan_dzien"
nie moze być taka sama jak nazwa sensora licznika wody dzień. (to na czerwono)
Daj tam nazwę np. - name: woda_zimna_stan_dzien_koszt"
I pod tą encją będzie przeliczony koszt zużycia wody.
To co na czerwono wpisujesz encję, z której ma brać stan, a w linii name: tworzysz nowy sensor z przeliczenia stanu licznika razy koszt.

Dziękuję wszystkim za pomoc
Zrobione sposobem @ajakubek
W wolnej chwili postaram się opisać co i jak zrobiłem.

więc tak:
Najpierw zakup Płytki

Polecam sprzedającego, wsparcie etc.

Po zainstalowaniu ESPHome, skonfigurowaniu z płytką… utworzone zostały encje typu:

sensor.wodomierz_stan_licznika_wody_apator_zimna_cost

utworzyłem sobie karty z encji typu:

image

Za pomocą “pomocnika”


utworzyłem encje

Zachciało mi się aby wyświetlać to w przeliczeniu na PLN.
i dzięki powyższym kolegom zrobiłem to tak:

utworzyłem zapis skonfigurowany pod moje nazwy encji

template:
  - sensor:
      - name: "Dzien_woda_zimna_koszt_glowny"
        unit_of_measurement: 'zł'
        state:  "{{ (states('sensor.woda_zimna_stan_dzien') | float(0) * 14.170) | round(2) }}"
        icon: mdi:cash-100
        
      - name: "Dzien_woda_ciepla_koszt_glowny"
        unit_of_measurement: 'zł'
        state:  "{{ (states('sensor.woda_ciepla_stan_dzien') | float(0) * 41.92) | round(2) }}"
        icon: mdi:cash-100
        
      - name: "Miesiac_woda_zimna_koszt_glowny"
        unit_of_measurement: 'zł'
        state:  "{{ (states('sensor.woda_zimna_stan_miesiac') | float(0) * 14.170) | round(2) }}"
        icon: mdi:cash-100
        
      - name: "Miesiac_woda_ciepla_koszt_glowny"
        unit_of_measurement: 'zł'
        state:  "{{ (states('sensor.woda_ciepla_stan_miesiac') | float(0) * 41.92) | round(2) }}"
        icon: mdi:cash-100

wkleiłem go na koniec wpisu w configuration.yaml
(file editor /// )
config/configuration.yaml

zapisy icon: mdi:cash-100 mozna zmienić na inne , zgodne z HA, wówczas zmieni się ikona (którą i tak możemy później zmienić)
Należy wstawić swoje kwoty PLN za zuzyte metry wody (ja mam osobno zimna i ciepła)
Nazwy utworzonych encji (w moim przypadku sensor.woda_zimna_stan_miesiac' (tu na czerwono) nalezy podmienić na swoje.
UWAGA !
Zapis musi być idealnie sformatowany: spacje, nawiasy, odstępy.
Ja na poczatku źle sformatowałem i wywalało mi, ze zapis będzie z błędem.
Ma być zielone kółko

Zapisać, sprawdzić błędy, zresetować HA.
Wejść na wybrana kartę (pomieszczenia) utworzyć kafelek z encji
i wyświetla nam się również w PLN

1 polubienie

Z góry przepraszam, że tworzę wpis pod moim wpisem, ale chciałem temat “podbić” tak aby był bardziej “widoczny”

Dzięki w/w poradom używam odczytów bezproblemowo

  • no, oprócz tego co poniżej.
    Liczniki resetują się co dobę i co miesiąc.
    Ale…
    Od pewnego czasu (a z pół roku będzie), jeden, czasami oba wskazania liczników (zimna, ciepła), nagle zaczynają pokazywać kosmiczne wartości.

    Gdy już tak “wskoczy” to pozostaje do “resetu” pierwszej dobie kolejnego miesiąca.
    Stan zużycia wody w m3 jest OK.
    Może mam coś skopane w ESPHome i samym pliku wodomierz.yaml
esphome:
  name: wodomierz
  friendly_name: WODOMIERZ

esp8266:
  board: nodemcuv2

external_components:
  - source: github://SzczepanLeon/esphome-components@1.5.1
    components: [ wmbus ]
    refresh: 0d

# Enable logging
logger:
  level: DEBUG

time:
- platform: sntp
  id: time_sntp  

# Enable Home Assistant API
api:
  encryption:
    key: "aP.............................."

ota:
  password: "3f......................................."

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Wodomierz Fallback Hotspot"
    password: "..........................."

captive_portal:

wmbus:
  mosi_pin: GPIO13
  miso_pin: GPIO12
  clk_pin:  GPIO14
  cs_pin:   GPIO2
  gdo0_pin: GPIO5
  gdo2_pin: GPIO4

sensor:
  - platform: wmbus  # pierwszy licznik
    name: "Stan licznika wody Apator ciepla"
    meter_id: 0x03571659
    type: apator162
    key: "00000000000000000000000000000000"
    accuracy_decimals: 3
  - platform: wmbus  # kolejny licznik
    name: "Stan licznika wody Apator zimna"
    meter_id: 0x03438378
    type: apator162
    key: "00000000000000000000000000000000"
    accuracy_decimals: 3

Nie masz nic źle, niestety prawdopodobnie masz “szpilki” zużycia wynikające ze zdekodowania błędnego telegramu (patrz na wykresy zużycia).
Rozwiązaniem może być filtrowanie wartości, niestety tak ad hoc nie podpowiem jak konkretnie.
Największe nadzieje dają clamp i filter_out, ewentualnie lambda jeśli wymyślisz coś sprytniejszego (do tego potrzeba analizy tych anormalnych wartości)

Czyli pozostaje z tym żyć jakoś :upside_down_face:
A szkoda, bo kiedyś było tak fajnie :sunglasses:
To co @szopen mi tu mówisz to chyba w innym języku do mnie dociera :laughing:

Wklej całego YAMLa, a nie kawałek.
Niestety to jest DIY, więc zrób to sam, szpilki (piki) w kwotach najprawdopodobniej muszą się brać ze szpilek w zużyciu, nie umiem prościej musisz się douczyć, doczytać, poświęcić swój czas…

Jasne. Nawet nie oczekuję, że Ktoś za mnie będzie coś robił.
\
To jest cały yaml. Ten z esphome. Chyba, że mówisz o czymś innym ?

BTW
Korzystając z okazji, chciałbym podziękować Wszystkim za pomoc (w innych tematach) a w szczególności Tobie @szopen .
Zawsze jesteś na “posterunku”, starasz się jak możesz w pomocy.
SZACUN :+1:

1 polubienie

Witam wszystkich. Podczepiam się pod dyskusję bo mam mały problem.
Uzyskałem odczyty stanów licznik i zrobiłem statystyki i cenę.
Mam tylko jeden problem. Posiadam licznik główny, który liczy całe zużycie wody i pod licznik na wodę ogrodową. Potrzebuje wiedzieć jak mogę odjąć wyniki wody ogrodowej od głównego licznika aby uzyskać wynik zużycia samego domy. Wiadomo woda ogrodowa to inna stawka cenowa niż woda domowa ze ściekami. Proszę o podpowiedz nigdzie nie znalazłem jeszcze podpowiedzi, a w module "Połączenie stanów sensorów " nie ma różnicy.

Dodawanie to +
a odejmowanie -

1 polubienie

Zrobiłem to trochę łatwiej. Node-RED i trochę kombinacji w przechowywaniem wyników w pamięci. Potem przesłanie wyników do nowego czujnika. No i sukces.

O to wynik. Czekam tylko na wiosnę jak ruszy woda ogrodowa.

Teraz GAZ i prąd pozostał.

U mnie wygląda to tak

Bez NodeRed i z możliwością korekt cen jednostkowych i wpłat dodatkowych za wodę

sensory_rachunek_za_wode_template:
  template:
    sensors:
      rachunek_za_wode_aktualny:
        friendly_name: Rachunek za wode Aktualny
        device_class: monetary
        unit_of_measurement: "PLN"
        unique_id: rachunek_za_wode_aktualny
        value_template: >-
          {% set ck = states('input_number.cena_za_kanalizacje') | float %}
          {% set cw = states('input_number.cena_za_wode') | float %}          
          {% set ab= states('input_number.abonament_wodociagi') | float %}
          {% set lpg = states('input_number.stan_wodomierza_od_ostatniej_faktury') | float %}     
          {% set lpo = states('input_number.stan_wodomierza_ogrodowego_od_ostatniej_faktury') | float %}      
          {% set wg = states('sensor.wodomierz_glowny') | float %}   
          {% set wo = states('sensor.wodomierz_ogrodowy') | float %}               
          {{ (((wg-wo)-lpg)*ck + ((wg -lpg)*cw)+(wo*cw)+ab)   | round(2) }}

      aktualny_rachunek_wodociagi:
        friendly_name: Aktualny rachunek do zapłaty za wodę i kanalizację
        device_class: monetary
        unit_of_measurement: "PLN"
        unique_id: aktualny_rachunek_wodociagi
        value_template: >-
          {% set cw = states('input_number.cena_za_wode') | float %}
          {% set ck = states('input_number.cena_za_kanalizacje') | float %}
          {% set ab = states('input_number.abonament_wodociagi') | float %}
          {% set wg = states('sensor.wodomierz_glowny') | float %}
          {% set wo = states('sensor.wodomierz_ogrodowy') | float %}
          {% set wgpop = states('input_number.stan_wodomierza_od_ostatniej_faktury') | float %}       
          {% set wopop = states('input_number.stan_wodomierza_ogrodowego_od_ostatniej_faktury') | float %}       
          {% set wplata = states('input_number.dodatkowa_oplata_za_wode') | float %}       
          {{ ((((wg-wgpop)*cw) + (((wg-wgpop)-(wo-wopop))*ck)+ab)-wplata) | round(2) }}

      zuzycie_wody_od_faktury:
        friendly_name: Zużycie wody od faktury
        device_class: water
        unit_of_measurement: "m³"
        unique_id: zuzycie_wody_od_faktury
        value_template: >-
          {% set WG = states('sensor.wodomierz_glowny') | float %}
          {% set LPG = states('input_number.stan_wodomierza_od_ostatniej_faktury') | float %}       
          {{ (WG-LPG)  | round(2) }}

      zuzycie_wody_od_faktury_ogrodowy:
        friendly_name: Zużycie wody od faktury
        device_class: water
        unit_of_measurement: "m³"
        unique_id: zuzycie_wody_od_faktury_ogrodowy
        value_template: >-
          {% set WO = states('sensor.wodomierz_ogrodowy') | float %}
          {% set LPO = states('input_number.stan_wodomierza_ogrodowego_od_ostatniej_faktury') | float %}       
          {{ (WO-LPO)  | round(2) }}

      rachunek_za_wode:
        friendly_name: Aktualny rachunek do zapłaty za wodę i kanalizację
        device_class: monetary
        unit_of_measurement: "PLN"
        unique_id: rachunek_za_wode
        value_template: >-
          {% set CW = states('input_number.cena_za_wode') | float %}
          {% set CK = states('input_number.cena_za_kanalizacje') | float %}
          {% set AB = states('input_number.abonament_wodociagi') | float %}
          {% set WG = states('sensor.wodomierz_glowny') | float %}
          {% set WO = states('sensor.wodomierz_ogrodowy') | float %}
          {% set LPG = states('input_number.stan_wodomierza_od_ostatniej_faktury') | float %}       
          {% set LPO = states('input_number.stan_wodomierza_ogrodowego_od_ostatniej_faktury') | float %}       
          {{ ((((WG-LPG)  - (WO - LPO )) *CK  +  ((WG-LPG)*CW))+AB) | round(2) }}

2 polubienia

No bajka. Ja jeszcze nie na tym etapie. Moja przygoda z HA zaczęła sią dopiero 3 tygodnie temy. Można powiedzieć, że jestem jeszcze w pieluchach.