Dzienne i miesięczne zużycie

A macie może jakiś pomysł jak ograć taryfy prądu aby rozróżnić koszt zużycia prądu w poszczególnych taryfach?

@limes Wtaj na forum. Myślę że w przededniu wprowadzenia opłaty mocowej, to rozwiązanie z “taryfikatorem” i tak może nie mieć już zastosowania od nowego roku.

Hej :slight_smile: W sumie racja…

Witam.
Mam problem z Utility Meter.
Nie wiem dlaczego wartości kWh zliczane przez integrację Utility Meter różnią się od wartości kWh zliczane przez ESP Home “platform: total_daily_energy”
Impulsy z licznika są zliczane przez ESP (platform: pulse_counter) który utworzył “sensor.moc”. Jego wskazania (kW) pokrywają się ze wskazaniami licznika. Następnie przy pomocy ESP “platform: total_daily_energy” zamieniam kW na kWh i ten wynik jest prezentowany w dashboardzie przez “sensor.total_daily_energy” - i również jest prwadziwy.
Problemem jest integracja Utility Meter w HA. Jako źródło danych wstawiłem “sensor.total_daily_energy” ale sumy kWh prezentowane przez niego są znacznie niższe niż wskazywane przez “sensor.total_daily_energy”. To samo miałem kiedy jako źródło wstawiłem “sensor.moc”…
Czy ktoś spotkał się z takim błędem?

HA

utility_meter:
  daily_energy:
    source: sensor.total_daily_energy
    cycle: daily
    tariffs:
      - peak
      - offpeak
  monthly_energy:
    source: sensor.total_daily_energy
    cycle: monthly
    tariffs:
      - peak
      - offpeak

ESP Home

- platform: total_daily_energy
    name: "Total Daily Energy"
    power_id: moc
   
  - platform: pulse_counter
    pin: GPIO12
    unit_of_measurement: 'kW'
    name: 'Moc'
    id: 'moc'
    filters:
      - multiply: 0.06
    count_mode:
     rising_edge: INCREMENT
     falling_edge: DISABLE
time:
  - platform: sntp
    id: 'czas'

Zliczasz impulsy z licznika ?
U mnie jest
filters:
# Multiplication factor from W to kW is 0.001
- multiply: 0.001
unit_of_measurement: kWh

Tak, ale impulsy są liczone poprawnie. Ba, zobrazowane są poprawnie w dashboardzie ( “sensor.total_daily_energy” generowany przez ESP) , nie wiem tylko co z tym robi integracja Utility Meter…

Artur, proszę opisz jak to technicznie i na czym masz to zrealizowane.

Blitz BW-SHP2 i SmartDGM gniazdka ładnie się otwierają, jest trochę lutowania wgrana ESPHome

KOD: dla SmartDMG

    substitutions:
  plug_name: lodowka
  # Higher value gives lower watt readout
  current_res: "0.00221"
  # Lower value gives lower voltage readout
  voltage_div: "945"



esphome:
  name: lodowka
  platform: ESP8266
  board: esp8285

# WiFi connection
wifi:
  ssid: '        '
  password: '              '
  manual_ip:
    static_ip: 192.168.1.94
    gateway: 192.168.1.100
    subnet: 255.255.255.0
    dns1: 192.168.1.100
    dns2: 192.168.1.100
    
# Enable logging
logger:

# Enable Web server
#web_server:
#  port: 80

# Enable Home Assistant API
api:
  password: 'PASSWORD'

ota:
  password: 'PASSWORD'

time:
  - platform: homeassistant
    id: homeassistant_time
    

binary_sensor:
  - platform: gpio
    name: "${plug_name}_button"
    pin:
      number: GPIO3
      inverted: True
    on_press:
      - switch.toggle: relay
  - platform: status
    name: ${plug_name}_Status
    
    
    
switch:
- platform: gpio
  id: relay
  name: "${plug_name}_Relay"
  pin: GPIO14
  icon: mdi:power-socket-eu
  restore_mode: ALWAYS_ON
  on_turn_on:
    - switch.turn_on: blue_led
  on_turn_off:
    - switch.turn_off: blue_led

- platform: gpio
  id: blue_led
  name: "${plug_name}_LED_Blue"
  icon: mdi:led-on
  pin: GPIO1
  inverted: True
  restore_mode: ALWAYS_ON

- platform: gpio
  id: red_led
  name: "${plug_name}_LED_Red"
  pin: GPIO13
  inverted: True
  restore_mode: ALWAYS_OFF

sensor:
  - platform: hlw8012
    sel_pin:
      number: GPIO12
      inverted: True
    cf_pin: GPIO04
    cf1_pin: GPIO05
    # Higher value gives lower watt readout
    current_resistor: 0.00221
    # Lower value gives lower voltage readout
    voltage_divider: 794
    current:
      name: "${plug_name}_Amperage"
      icon: mdi:current-ac
      unit_of_measurement: A
    voltage:
      name: "${plug_name}_Voltage"
      icon: mdi:flash-circle
      unit_of_measurement: V
    power:
      name: "${plug_name}_Wattage"
      unit_of_measurement: W
      id: "${plug_name}_Wattage"
    change_mode_every: 8
    update_interval: 10s
  - platform: total_daily_energy
    name: "${plug_name}_Total Daily Energy"
    icon: mdi:circle-slice-3
    power_id: "${plug_name}_Wattage"
    filters:
        # Multiplication factor from W to kW is 0.001
        - multiply: 0.001
    unit_of_measurement: kWh
      
# Extra sensor to keep track of plug uptime

  - platform: uptime
    id: uptime_sec

text_sensor:
  - platform: template
    name: ${plug_name}_Uptime Sensor
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 113s

Na moje lamerskie oko - to nie widzę u Ciebie integracji “utility_meter”… z którą mam problem u mnie.
Masz “platform: total_daily_energy” którą również posiam w swoim ESP, ale ona działa dobrze…

EDIT: zauważyłem że wartości generowane przez integrację “Utility meter” różnią się od “sensor.total_daily_energy” o 0,61… Napisałem szablon wprowadzający tą poprawkę izobaczę jak to wyjdzie.
Przy okazji mam pytanie jak w automatyzacji dołożyć zmianę taryfy peek/offpeak związaną z dniem tygodnia?

Pochwalił byś się jak wyglądają u Ciebie te wykresy słupkowe z podsumowaniem :slight_smile:
Chce coś takiego zrobić u siebie ale bez użycia grafany i jestem ciekaw czy jest to możliwe :slight_smile:

HACS Frontend bar-card custom-cards
Screenshot - 12_01

Lub dual-gauge-card dual-gauge-card

Screenshot - 12_01 002

2 Likes

Zastosowałem ten kod :

utility_meter:
  dzien_lodowka:
    source: sensor.shelly_shplg_s_dbef0e_total_consumption
    cycle: daily
  miesiac_lodowka:
    source: sensor.shelly_shplg_s_dbef0e_total_consumption
    cycle: monthly
  rok_lodowka:
    source: sensor.shelly_shplg_s_dbef0e_total_consumption
    cycle: yearly
  miesiac_pralka:
    source: sensor.shelly_shplg2_1_db609f_total_consumption
    cycle: monthly
  rok_pralka:
    source: sensor.shelly_shplg2_1_db609f_total_consumption
    cycle: yearly

Fajnie działa z gniazdkami Blitzwolf .

Pytanie :
Jak go przerobić żeby z jednego urządzenia mieć : zużycie wczorajsze , dzisiejsze , w miesiaca wstecz i z biezącego miesiąca ?

A możesz to jakoś na przykładzie podać ? Bo nie wiem jak to zrobić :slight_smile:

Zaczynam dopiero zabawę i chyba za wysokie progi

#pomiar
utility_meter:
  dzienna_lodowka:
    source: sensor.tz3000_g5xawfcq_ts0121_ca9a35fe_electrical_measurement
    cycle: daily
  miesieczna_lodowka:
    source: sensor.tz3000_g5xawfcq_ts0121_ca9a35fe_electrical_measurement
    cycle: monthly


sensor:
  - platform: template
    sensors:
      sensor.tz3000_g5xawfcq_ts0121_ca9a35fe_electrical_measurement:
        friendly_name: "dzienna_lodowka"
        unit_of_measurement: 'kW'
        value_template: "{{ state_attr('dzienna_lodowka_last_period', 'last_period') }}"
#pomiar
utility_meter:
  dzienna_lodowka:
    source: sensor.tz3000_g5xawfcq_ts0121_ca9a35fe_electrical_measurement
    cycle: daily
  miesieczna_lodowka:
    source: sensor.tz3000_g5xawfcq_ts0121_ca9a35fe_electrical_measurement
    cycle: monthly


sensor:
  - platform: template
    sensors:
      poprzedni_miesiac_lodowka
        friendly_name: "Poprzedni_miesiac_lodowka"
        unit_of_measurement: 'kWh'
        value_template: "{{ state_attr('miesiac_lodowka', 'last_period') }}"

Wyrzuca mi : bad indentation of a mapping entry at line 99, column 22:
friendly_name: “Poprzedni_miesiac_lodowka”

to błąd wcięć - każda spacja w YAML ma znaczenie, musisz też pokombinować z wklejaniem tekstu na forum (np. zaznacz cały wklejony i wciśnij cudzysłowy) jeśli jest sformatowany inaczej niż w pliku konfiguracyjnym trudno znaleźć błąd.

PS edytowałem posty wyżej, by było widać jak to powinno wyglądać

1 Like

jestem krok dalej ale jeszcze nie na końcu :wink:

invalid config for [sensor.template]: invalid template (TemplateSyntaxError: unexpected char ‘‘’ at 14) for dictionary value @ data[‘sensors’][‘poprzedni_miesiac_lodowka’][‘value_template’]. Got ‘{{ state_attr(‘miesieczna_lodowka’, ‘last_period’) }}’. (See ?, line ?).

Możesz udostępnić kod źródłowy karty, siedzę i próbuję zrobić jak u ciebie, ale mizernie mi to idzie, byłbym wdzięczny, fajnie masz ją skonfigurowaną

Proszę custom:bar-card

Te znaki to prawdopodobnie tzw. cudzysłowy pisarskie (np. można je uzyskać przez alt+0132 czy alt+0148) niedopuszczalne w kodzie.

1 Like