Grafana dane z entity SWICH jako zużycie kWh

Witam, wpadłem na pomysł aby monitorować zużycie prądu przez ogrzewanie. Zakładając, że pobór jest stały 3600W można pokusić się o prosty licznik zużycia prądu do tegoż ogrzewania. Trzeba zliczyć łączny czas pracy (stanu ON) encji od ogrzewania. Zacząłem coś w tym kierunku robić tylko nie do końca wiem od której strony to ugryźć ;/ Dodałem do Grafany encję odpowiedzialną za uruchamianie ogrzewania. No i mam coś takiego:

Podpowie ktoś, co dalej żeby zliczyć to w całość i wyświetlić jako wynik w kWh?

Mam wrażenie że Grafana to etap późniejszy i że trzeba coś napisać w config. Ale co ?

Edit: Mam jeszcze pytanie, dlaczego na wykresie mam jakieś połowiczne stany? Przecież to encja switch, więc powinno być albo ON albo OFF. Ktoś wie? Próbowałem już w grafenie zmieniać różne parametry i nie chce się to unormować.

Grafana to warstwa prezentacji danych, aby coś pokazała musisz mieć encje.

Ten temat byl już poruszany wielokrotnie na forum, skorzystaj z opcji Szukaj (lupka w prawym górnym rogu).

Wiem wiem, czytałem ale wszędzie są rozwiązania kiedy posiadam odpowiedni sensor. Ja pytam o to jak zrobić to z encją switch? Wystarczy że pod encję sensora podstawię tą ze switch?

Edit:

Zastosowałem kod z tematu z forum:

utility_meter:
  daily_energy:
    source: sensor.shelly_shplg_s_dbef0e_total_consumption
    cycle: daily
  monthly_energy:
    source: sensor.shelly_shplg_s_dbef0e_total_consumption
    cycle: monthly

Ale obawiam się że to nie zadziała bo podstawiłem zamiast sensor switch:

utility_meter:
  daily_energy:
source: switch.sonoff_1000e5ab8b
cycle: daily
  monthly_energy:
source: switch.sonoff_1000e5ab8b
cycle: monthly

i mam coś takiego:
image

Niestety nie liczy nic, ktoś podpowie jak to ugryźć ?

Jeśli chcesz korzystać z utility_meter musisz podstawić w jego konfiguracji encję “zliczającą” energię.
Nie wiem jakiego sonoffa posiadasz ale jeśli to POW to podstaw encję zużycia.

To zwykły sonoff w zasadzie th16 ale chodziło mi o to aby zliczał czas kiedy jest włączony. Tyle mi wystarczy bo wiem że moc źródła ciepła jest stała i wynosi 3600W. Podkładam już różne rozwiązania z tego wątku:

i nic nie działa ;/

teraz mam tak:

  - platform: template
    sensors:
      test:
        friendly_name: "TEST"
        unit_of_measurement: 'kWh'
        value_template: "{{ state_attr('switch.sonoff_1000e5ab8b', 'consumption') }}"

Jeśli chodzi o zliczanie czasu włączenia to proponuję skorzystać z platformy:

history_stats
sensor:
  - platform: history_stats
    name: Czas włączenia w trakcie doby
    entity_id: encja którą chcemy mierzyć
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'

Tutaj masz szczegóły tej integracji

Czas chcę mnożyć razy zużycie 3,6kW i uzyskać wynik w kWh.

To masz już rozwiązanie - wynik z encji którą otrzymasz z history_stats pomnożysz przez 3,6.

nie zlicza ;/

Edit: znalazłem błąd :wink: złe id entity zamiast switch wpisałem sensor :wink:

Ok powalczę teraz z zamianą na kWh, jak się nie uda to wracam po poradę :wink:

Ok wymiękam przy tym, podkładam pod podobne zamiany które już mam w configu i nie chce działać cały czas błąd w config.

Pomożesz zamienić ten czas na kWh?

teraz mam tak:

  - platform: history_stats
name: ogrzewanie salon
entity_id: switch.sonoff_1000e5ab8b
state: 'on'
type: time
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
end: '{{ now() }}'

  - platform: template
sensors:
  salon_ogrzewanie_kWh:
    friendly_name: 'salon ogrzewanie kWh'
    unit_of_measurement: 'kWh'
    value_template: "{{ state_attr('sensor.ogrzewanie_salon', 'time') | float *3,6 }}"

No i nie robi mi nowej encji z kWh ;(

To można zrobić w grafanie jeżeli dostajesz gotowe dane z encji podstaw tylko wzór

Dzięki za podpowiedź, puki co chcę aby bez Grafany pokazywało co ma pokazywać. Grafana na później.

Co do przerw w wykresie Screenshot - 24_01 003

Trochę namieszałeś,
po pierwsze, poniższy wpis dodaj w sekcji template, u Ciebie to będzie po linijce

sensor:
  - platform: template
    sensors:
      salon_temperatura_kalibracja:
        friendly_name: "salon temperatura"
        unit_of_measurement: '°C'
        value_template: "{{ state_attr('sensor.sonoff_1000e5ab8b_temperature', 'temperature') | float -2 }}"
      salon_ogrzewanie_kWh:
        friendly_name: "salon ogrzewanie kWh"
        unit_of_measurement: 'kWh'
        value_template: "{{ (states('sensor.ogrzewanie_salon') | float * 3.6 }}"                       

po drugie do wliczenia powinieneś użyć encji powstałej z history_stats a nie “ogrzewanie_salon”

ale to jest encja właśnie z

ta co zlicza czas ON encji switch odpowiadającej za włączenie ogrzewania.

kod ma teraz tak:

sensor:

  • platform: template
    sensors:
    salon_temperatura_kalibracja:
    friendly_name: ‘salon temperatura’
    unit_of_measurement: ‘°C’
    value_template: “{{ state_attr(‘sensor.sonoff_1000e5ab8b_temperature’, ‘temperature’) | float -2 }}”

  • platform: template
    sensors:
    salon_ogrzewanie_kWh:
    friendly_name: ‘salon ogrzewanie kWh’
    unit_of_measurement: ‘kWh’
    value_template: “{{ state_attr(‘sensor.ogrzewanie_salon’, ‘time’) | float *3,6 }}”

  • platform: history_stats
    name: ogrzewanie salon
    entity_id: switch.sonoff_1000e5ab8b
    state: ‘on’
    type: time
    start: ‘{{ now().replace(hour=0, minute=0, second=0) }}’
    end: ‘{{ now() }}’

mimo tego dalej nie chce przejść weryfikacji poprawności configu.

Zobacz jeszcze raz jak powinna wyglądać definicja sensora w sekcji template, dałem Ci gotowy wpis.

No wpatruję się i wygląda jak ten wyżej kalibrujący termometr, nie widzę różnicy i dlatego nie kumam o co chodzi. Błąd jest w samym formatowaniu czy źle podaję jakieś dane?

Podpowiem, skoncentruj się tylko na sekcji template. Wpis dotyczący history_stats jest poprawny.

Przy sprawdzaniu podaje ci wiersz błędu