MEW-01 przez API

opok_junior
Posty: 5
Rejestracja: ndz lis 03, 2019 11:34 pm

Witam,
Czy wie ktoś może w jakiś sposób podłączyć mew-ke pod home assistant? W sieci nie ma za dużo informacji :(
Proszę o pomoc, pozdrawiam!
Tomlap
Posty: 12
Rejestracja: pt mar 22, 2019 9:47 pm

też bym chciał się dowiedzieć :)
Awatar użytkownika
Pan O
Posty: 44
Rejestracja: pn gru 16, 2019 9:07 pm

Cześc,
moze komus sie przyda - dzis na brudno zrobiłem integracje MEW-01 z HA.

W skrócie:
- mew podpiety pod clouda
- Moja Supla -> Zamel Mew-01 -> jeszcze raz w licznik -> utwórz nowy link bezpośredni (uprawnienia read)
- kopiujemy link do wykorzystania na potem bo trzeba go bedzie użyć jak poniżej

W HA w plikach konfiguracyjnych (używam sensorów, binary_sensor dla statusu)

Kod: Zaznacz cały

# pierwszy i głowny sensor ktory łaczy sie z API Restowym clouda i pobiera wszytkie dane
# sam wyswietla tylko wartość kwoty za prąd
# reszta parametrów bedzie pobrana do atrybutów. 
# Podejrzeć to mozna w HA w Narzędzia deweloperskie->STANY-> sensor.licznik_rest

sensor:
  - platform: rest
    name: Licznik REST # jeżeli zmieni się tu nazwę to nalezy zmienić wszystkie odwołania poniżej z "licznik_rest" na ta nazwę...
    resource: https://svrx.supla.org/direct/ttt/xxxyyyzzzwww/read # tu wklejamy tajny link do naszego JSON'a z clouda
    value_template: '{{ value_json.totalCost }}'
    json_attributes:
      - phases
      - connected
      - currency
      - pricePerUnit
      - support
    unit_of_measurement: 'PLN'


# sensory wewnętrzne w HA z aktualnymi parametrami MEW-01
# pobierane zuzycie chwilowe, zuzycie calkowite, natezenie, napiecie i czestotliwosc. 
# Mocy biernej i pozornej oraz katow nie zbieram ale mozna je dopisac
# sensory sa na kazda faze oddzielnie (*faza1*, *faza2*, faza3*) i dodatkowo zbiorczy (*faza123*)  
# zeby pokazac sumy mocy czynnej i zuzytej energii 

  - platform: template
    sensors:
      licznik_faza1_totalforwardactiveenergy:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[0].totalForwardActiveEnergy }}'
        device_class: power
        unit_of_measurement: 'kWh'
      licznik_faza2_totalforwardactiveenergy:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[1].totalForwardActiveEnergy }}'
        device_class: power
        unit_of_measurement: 'kWh'
      licznik_faza3_totalforwardactiveenergy:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[2].totalForwardActiveEnergy }}'
        device_class: power
        unit_of_measurement: 'kWh'
      licznik_faza123_totalforwardactiveenergy:
        value_template: >-
          {{ (states.sensor.licznik_faza1_totalforwardactiveenergy.state | float)
          + (states.sensor.licznik_faza2_totalforwardactiveenergy.state | float) 
          + (states.sensor.licznik_faza3_totalforwardactiveenergy.state | float) }} 
        unit_of_measurement: 'kWh'
        device_class: power
        icon_template: mdi:gauge

      licznik_faza1_poweractive:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[0].powerActive }}'
        device_class: power
        unit_of_measurement: 'W'
      licznik_faza2_poweractive:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[1].powerActive }}'
        device_class: power
        unit_of_measurement: 'W'
      licznik_faza3_poweractive:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[2].powerActive }}'
        device_class: power
        unit_of_measurement: 'W'
      licznik_faza123_poweractive:
        value_template: >-
          {{ (states.sensor.licznik_faza1_poweractive.state | float)
          + (states.sensor.licznik_faza2_poweractive.state | float) 
          + (states.sensor.licznik_faza3_poweractive.state | float) }} 
        unit_of_measurement: 'W'
        device_class: power
        icon_template: mdi:gauge
      licznik_faza123_poweractive_kw:
        value_template: >-
          {{ (((states.sensor.licznik_faza1_poweractive.state | float)
          + (states.sensor.licznik_faza2_poweractive.state | float) 
          + (states.sensor.licznik_faza3_poweractive.state | float) )/1000 ) | round(2)}} 
        unit_of_measurement: 'kW'
        device_class: power
        icon_template: mdi:gauge

      licznik_faza1_frequency:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[0].frequency }}'
        device_class: power
        unit_of_measurement: 'Hz'
      licznik_faza2_frequency:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[1].frequency }}'
        device_class: power
        unit_of_measurement: 'Hz'
      licznik_faza3_frequency:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[2].frequency }}'
        device_class: power
        unit_of_measurement: 'Hz'
        

      licznik_faza1_current:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[0].current }}'
        device_class: power
        unit_of_measurement: 'A'
      licznik_faza2_current:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[1].current }}'
        device_class: power
        unit_of_measurement: 'A'
      licznik_faza3_current:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[2].current }}'
        device_class: power
        unit_of_measurement: 'A'

      licznik_faza1_voltage:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[0].voltage }}'
        device_class: power
        unit_of_measurement: 'V'
      licznik_faza2_voltage:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[1].voltage }}'
        device_class: power
        unit_of_measurement: 'V'
      licznik_faza3_voltage:
        value_template: '{{ states.sensor.licznik_rest.attributes.phases[2].voltage }}'
        device_class: power
        unit_of_measurement: 'V'


# HA binary sensor - sluzy do pokazywania aktualnego stanu łacznosci licznika.
        
binary_sensor:
  - platform: template
    sensors:
      licznik_status:
        friendly_name: "Licznik status"
        value_template: '{{ states.sensor.licznik_rest.attributes.connected }}'
Plus jest taki ze tylko raz zadamy wszystkich danych do sensor.licznik_rest a potem HA ładnie nam tworzy sensory czastkowe z danych tego sensora. Zmniejszamy liczbe żądań.

...a z danymi to już wiadomo. Hulaj dusza - autom,atyzacje, wykresy, statusy itp itd

NP na szybko wyciagam je tak do Grafany w HA

np:
Obrazek

Obrazek

To jeszcze wersja wstępna. Nie włączyłem utility_meter itd...ale śmiga idealnie.

Pzdr

Przy okazji: wskazania jak na pół dnia i zużyciu ok 10kWh idealnie z licznikiem dostawcy energii.

Chyba będę musiał pobawić się tez innymi Suplami :-) + postawić własny serwer suplowy w sieci lokalnej żeby się uniezależnić od braków neta.
rosol01
Posty: 11
Rejestracja: czw wrz 12, 2019 9:45 pm

Witam,
dzięki za integrację z HA, działa wyśmienicie :)
Mam takie pytanie, czy jest możliwość wyciągnięcia z licznika informacji o dziennym zużyciu energii gdyż w HA chciałbym wyświetlić na grafie (używając custom:mini.graph.card ) wykres dziennego zużycia. Niestety używając zużycie całkowite (licznik_faza123_totalforwardactiveenergy) wyświetla mi jedynie słupki każdego dnia wyższe od poprzedniego.
Niestety w atrybutach nie widzę niczego co byłoby dzienną wartością energii
Czy jest jakaś szansa aby wyciągnąć coś takiego z licznika supli?
Awatar użytkownika
pzygmunt
Posty: 18325
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Musiałbyś przez API pobierać dane z historii. Na tej podstawie należałoby obliczać różnicę pomiędzy dniem dzisiejszym, a poprzednim.
Beku
Posty: 453
Rejestracja: wt lis 06, 2018 1:49 pm

Mozesz tez użyć MQTT

viewtopic.php?f=63&t=5691

Mew publikuje fajnego json’a 🙂

Kod: Zaznacz cały


{
   "id":3,
   "currency":"PLN",
   "online":1,
   "pricePerUnit":0.550000,
   "totalCost":668.820000,
   "phases":[
      {
         "number":1,
         "frequency":50.000000,
         "voltage":233.260000,
         "current":1.940000,
         "powerActive":382.565020,
         "powerReactive":-141.425660,
         "powerApparent":443.796720,
         "powerFactor":0.855000,
         "phaseAngle":160.000000,
         "totalForwardActiveEnergy":719.206460,
         "totalReverseActiveEnergy":0.000000,
         "totalForwardReactiveEnergy":58.392400,
         "totalReverseReactiveEnergy":3011.889400
      },
      {
         "number":2,
         "frequency":50.000000,
         "voltage":236.480000,
         "current":0.412000,
         "powerActive":10.525460,
         "powerReactive":-93.405560,
         "powerApparent":95.658240,
         "powerFactor":0.107000,
         "phaseAngle":96.400000,
         "totalForwardActiveEnergy":92.295440,
         "totalReverseActiveEnergy":0.000000,
         "totalForwardReactiveEnergy":1.037000,
         "totalReverseReactiveEnergy":2073.369000
      },
      {
         "number":3,
         "frequency":50.000000,
         "voltage":232.620000,
         "current":0.839000,
         "powerActive":130.202080,
         "powerReactive":-56.174460,
         "powerApparent":191.555160,
         "powerFactor":0.671000,
         "phaseAngle":159.300000,
         "totalForwardActiveEnergy":404.537660,
         "totalReverseActiveEnergy":0.000000,
         "totalForwardReactiveEnergy":12.663000,
         "totalReverseReactiveEnergy":1205.519400
      }
   ]
}

No i zmiany dostajesz a nie musisz o nie pytać.
rosol01
Posty: 11
Rejestracja: czw wrz 12, 2019 9:45 pm

Dzięki za odpowiedź.
Tylko - wyciągnąć z historii to do końca nie wiem jak a jeśli chodzi o mqtt to używam wersji dockerowej supli na synology i skompilować to sobie nie umiem klienta mqtt dla supli. Może wiecie kto mógłby udostępnić pod dockera?
Awatar użytkownika
Pan O
Posty: 44
Rejestracja: pn gru 16, 2019 9:07 pm

Historie zuzycia dzienna, miesieczna i roczna realizuje na lokalnym MQTT w Home Assistant.

W skrócie:
W sensorach dodaje sensory pobierane z MQTT:

Kod: Zaznacz cały

#===================================
#===================================
#=== MQTT sensors
#===================================
  - platform: mqtt
    name: "licznik1_licznik_koniec_dnia_stan"
    state_topic: "energia/licznik1/dzien/stan"
    unit_of_measurement: "kWh"
    json_attributes_topic: "energia/licznik1/dzien/timestamp_raportu"
  - platform: mqtt
    name: "licznik1_licznik_koniec_dnia_data_raportu"
    state_topic: "energia/licznik1/dzien/timestamp_raportu"
  - platform: mqtt
    name: "licznik1_licznik_zuzycie_wczoraj_mqtt"
    state_topic: "energia/licznik1/dzien/wczoraj/stan"
    unit_of_measurement: "kWh"

  - platform: mqtt    
    name: "licznik1_licznik_koniec_mca_stan"
    state_topic: "energia/licznik1/mc/stan"
    unit_of_measurement: "kWh"
    json_attributes_topic: "energia/licznik1/mc/timestamp_raportu"      
  - platform: mqtt
    name: "licznik1_licznik_koniec_mca_data_raportu"
    state_topic: "energia/licznik1/mc/timestamp_raportu"
  - platform: mqtt
    name: "licznik1_licznik_zuzycie_poprzedni_miesiac_mqtt"
    state_topic: "energia/licznik1/mc/poprzedni/stan"
    unit_of_measurement: "kWh"      
      
  - platform: mqtt    
    name: "licznik1_licznik_koniec_roku_stan"
    state_topic: "energia/licznik1/rok/stan"
    unit_of_measurement: "kWh"
    json_attributes_topic: "energia/licznik1/rok/timestamp_raportu"      
  - platform: mqtt
    name: "licznik1_licznik_koniec_roku_data_raportu"
    state_topic: "energia/licznik1/rok/timestamp_raportu"   
zeby tam dane sie znalazly to w automatyzacjach dodaje wysylanie stanu licznika na koniec dnia, poczatek miesiaca, koniec roku do MQTT. To jest zrodlo do sensorów z pierwszych linii
Wszytko na 23:58 lub 23:59 lub 1 w nocy
zawartosc automation:

Kod: Zaznacz cały

- id: "Broadcast Licznik licznik1 stan na koniec dnia MQTT"
  alias: 'Broadcast Licznik licznik1 stan na koniec dnia MQTT'
  trigger:
    - platform: time
      at: "23:59:00"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state | round(2) | float }}'
        topic: 'energia/licznik1/dzien/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        # payload_template: "{\"Status\":\"off\", \"Data\":{{ now() }}}"
        topic: 'energia/licznik1/dzien/timestamp_raportu'
        retain: true
- id: "Broadcast Licznik licznik1 zuzycie na koniec dnia MQTT"
  alias: 'Broadcast Licznik licznik1 zuzycie na koniec dnia MQTT'
  trigger:
    - platform: time
      at: "23:58:00"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik1_licznik_mqtt_zuzycie_dzis.state | round(2) | float }}'
        topic: 'energia/licznik1/dzien/wczoraj/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        # payload_template: "{\"Status\":\"off\", \"Data\":{{ now() }}}"
        topic: 'energia/licznik1/dzien/wczoraj/timestamp_raportu'
        retain: true

- id: "Broadcast Licznik licznik1 stan na koniec mca MQTT"
  alias: 'Broadcast Licznik licznik1 stan na koniec mca MQTT'
  trigger:
    - platform: time
      at: "00:01:00"
  condition:
    condition: template
      # Change the number here to get whatever day of the month you want.
    value_template: "{{ now().day == 1 }}"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state | round(2) | float }}'
        topic: 'energia/licznik1/mc/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        topic: 'energia/licznik1/mc/timestamp_raportu'
        retain: true

- id: "Broadcast Licznik licznik1 zuzycie na koniec mca MQTT"
  alias: 'Broadcast Licznik licznik1 zuzycie na koniec mca MQTT'
  trigger:
    - platform: time
      at: "00:00:09"
  condition:
    condition: template
      # Change the number here to get whatever day of the month you want.
    value_template: "{{ now().day == 1 }}"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ sensor.licznik1_licznik_zuzycie_poprzedni_miesiac_mqtt.state | round(2) | float }}'
        topic: 'energia/licznik1/mc/poprzedni/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        topic: 'energia/licznik1/mc/poprzedni/timestamp_raportu'
        retain: true

- id: "Broadcast Licznik licznik1 stan na koniec roku MQTT"
  alias: 'Broadcast Licznik licznik1 stan na koniec roku MQTT'
  trigger:
    - platform: time
      at: "00:01:00"
  condition:
    condition: template
      # Change the number here to get whatever day of the year you want.
    value_template: "{{ now().timetuple().tm_yday == 1 }}"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state | round(2) | float }}'
        topic: 'energia/licznik1/rok/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        topic: 'energia/licznik1/rok/timestamp_raportu'
        retain: true
i zeby na koniec miec dobre sensory zuzycia dziennego, z poprzedniego dnia, miesiecznego z poprzedniego miesiaca i z biezacego roku robie to w sensor template:

Kod: Zaznacz cały

      licznik1_licznik_mqtt_zuzycie_dzis:
        unit_of_measurement: 'kW'
        friendly_name: "Zużycie dziś licznik1 MQTT"
        device_class: power
        entity_id:
          - sensor.licznik1_licznik_koniec_dnia_stan
          - sensor.licznik_licznik1_faza123_totalforwardactiveenergy
        value_template: >-
          {% set koniec_dnia = states.sensor.licznik1_licznik_koniec_dnia_stan.state|float %}
          {% set aktualny = states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state| float %}
          {{ (aktualny - koniec_dnia )|round(2) }}

      licznik1_licznik_mqtt_zuzycie_dzis_pln:
        unit_of_measurement: 'PLN'
        friendly_name: "Zużycie dziś licznik1 MQTT PLN"
        value_template: >-
          {{ ((states.sensor.licznik_licznik1_rest.attributes.pricePerUnit | float ) * ( states.sensor.licznik1_licznik_mqtt_zuzycie_dzis.state |float )) | round(2) }}

      licznik1_licznik_mqtt_zuzycie_mc:
        unit_of_measurement: 'kW'
        friendly_name: "Zużycie mc licznik1 MQTT"
        device_class: power
        entity_id:
          - sensor.licznik1_licznik_koniec_mca_stan
          - sensor.licznik_licznik1_faza123_totalforwardactiveenergy
        value_template: >-
          {% set koniec_mca = states.sensor.licznik1_licznik_koniec_mca_stan.state|float %}
          {% set aktualny = states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state| float %}
          {{ (aktualny - koniec_mca )|round(0) }}
      licznik1_licznik_mqtt_zuzycie_mc_pln:
        unit_of_measurement: 'PLN'
        friendly_name: "Zużycie mc licznik1 MQTT PLN"
        value_template: >-
          {{ ((states.sensor.licznik_licznik1_rest.attributes.pricePerUnit | float ) * ( states.sensor.licznik1_licznik_mqtt_zuzycie_mc.state |float )) | round(2) }}

      licznik1_licznik_mqtt_zuzycie_rok:
        unit_of_measurement: 'kW'
        friendly_name: "Zużycie rok licznik1 MQTT"
        device_class: power
        entity_id:
          - sensor.licznik1_licznik_koniec_roku_stan
          - sensor.licznik_licznik1_faza123_totalforwardactiveenergy
        value_template: >-
          {% set koniec_roku = states.sensor.licznik1_licznik_koniec_roku_stan.state|float %}
          {% set aktualny = states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state| float %}
          {{ (aktualny - koniec_roku )|round(0) }}
      licznik1_licznik_mqtt_zuzycie_rok_pln:
        unit_of_measurement: 'PLN'
        friendly_name: "Zużycie rok licznik1 MQTT PLN"
        value_template: >-
          {{ ((states.sensor.licznik_licznik1_rest.attributes.pricePerUnit | float ) * ( states.sensor.licznik1_licznik_mqtt_zuzycie_rok.state |float )) | round(2) }}
Oczywiscie przez jakiegokolwiek MQTT clienta mozna sobie recznie ustawic stany starowe miesiaca i roku jak chcemy miec dane np za 2020 a dopiero w marcu zrobilismy
Awatar użytkownika
Pan O
Posty: 44
Rejestracja: pn gru 16, 2019 9:07 pm

efekt w Home Assistant:
Adnotacja 2020-03-14 134621.png
Adnotacja 2020-03-14 134621.png (48.6 KiB) Przejrzano 5916 razy
kod karty w Lovelace w Home Assistance
dół

Kod: Zaznacz cały

entities:
  - entity: sensor.licznik1_licznik_mqtt_zuzycie_dzis
    icon: 'mdi:gauge'
    name: Zużycie dziś
    secondary_info: |
      akt: [[ sensor.licznik1_licznik_mqtt_zuzycie_dzis_pln ]]zł
      /wczoraj: [[ sensor.licznik1_licznik_zuzycie_wczoraj_mqtt ]]kWh
    type: 'custom:secondaryinfo-entity-row'
  - entity: sensor.licznik1_licznik_mqtt_zuzycie_mc
    icon: 'mdi:calendar'
    name: Zużycie mc
    secondary_info: |
      akt: [[ sensor.licznik1_licznik_mqtt_zuzycie_mc_pln ]]zł
      /last:[[ sensor.licznik1_licznik_zuzycie_poprzedni_miesiac_mqtt ]]kWh
    type: 'custom:secondaryinfo-entity-row'
  - entity: sensor.licznik1_licznik_mqtt_zuzycie_rok
    icon: 'mdi:calendar'
    name: Zużycie rok
    secondary_info: |
      kasa rok: [[
       sensor.licznik1_licznik_mqtt_zuzycie_rok_pln ]]zł
    type: 'custom:secondaryinfo-entity-row'
  - entity: sensor.licznik_licznik1_faza123_totalforwardactiveenergy
    name: Stan licznika MEW-01
    secondary_info: >
      [[ sensor.licznik_licznik1_rest.attributes.pricePerUnit ]]zł/kWh | TTL:
      [[ sensor.licznik_licznik1_rest ]]zł
    type: 'custom:secondaryinfo-entity-row'
type: entities
wykres:

Kod: Zaznacz cały

color_thresholds:
  - color: '#e45e65'
    value: 2.4
  - color: '#e0b400'
    value: 1.2
  - color: '#0da035'
    value: 0.6
  - color: '#039BE5'
    value: 0
color_thresholds_transition: hard
entities:
  - entity: sensor.licznik_licznik1_faza123_poweractive_kw
    index: 0
  - color: 'rgba(0,0,0,0.4)'
    entity: binary_sensor.dark_outside
    index: 1
    show_legend: false
    show_line: false
    show_points: false
    y_axis: secondary
group: false
hour24: true
hours_to_show: 48
line_width: 2
name: Zużycie bieżące
points_per_hour: 6
show:
  extrema: true
  fill: fade
  icon: false
  labels: true
  name: false
  state: true
state_map:
  - label: Day
    value: 'off'
  - label: Night
    value: 'on'
style: |
  ha-card {
    border: solid 1px var(--primary-color);
  }
type: 'custom:mini-graph-card'

opok_junior
Posty: 5
Rejestracja: ndz lis 03, 2019 11:34 pm

Pan O pisze: śr mar 11, 2020 9:34 pm Historie zuzycia dzienna, miesieczna i roczna realizuje na lokalnym MQTT w Home Assistant.

W skrócie:
W sensorach dodaje sensory pobierane z MQTT:

Kod: Zaznacz cały

#===================================
#===================================
#=== MQTT sensors
#===================================
  - platform: mqtt
    name: "licznik1_licznik_koniec_dnia_stan"
    state_topic: "energia/licznik1/dzien/stan"
    unit_of_measurement: "kWh"
    json_attributes_topic: "energia/licznik1/dzien/timestamp_raportu"
  - platform: mqtt
    name: "licznik1_licznik_koniec_dnia_data_raportu"
    state_topic: "energia/licznik1/dzien/timestamp_raportu"
  - platform: mqtt
    name: "licznik1_licznik_zuzycie_wczoraj_mqtt"
    state_topic: "energia/licznik1/dzien/wczoraj/stan"
    unit_of_measurement: "kWh"

  - platform: mqtt    
    name: "licznik1_licznik_koniec_mca_stan"
    state_topic: "energia/licznik1/mc/stan"
    unit_of_measurement: "kWh"
    json_attributes_topic: "energia/licznik1/mc/timestamp_raportu"      
  - platform: mqtt
    name: "licznik1_licznik_koniec_mca_data_raportu"
    state_topic: "energia/licznik1/mc/timestamp_raportu"
  - platform: mqtt
    name: "licznik1_licznik_zuzycie_poprzedni_miesiac_mqtt"
    state_topic: "energia/licznik1/mc/poprzedni/stan"
    unit_of_measurement: "kWh"      
      
  - platform: mqtt    
    name: "licznik1_licznik_koniec_roku_stan"
    state_topic: "energia/licznik1/rok/stan"
    unit_of_measurement: "kWh"
    json_attributes_topic: "energia/licznik1/rok/timestamp_raportu"      
  - platform: mqtt
    name: "licznik1_licznik_koniec_roku_data_raportu"
    state_topic: "energia/licznik1/rok/timestamp_raportu"   
zeby tam dane sie znalazly to w automatyzacjach dodaje wysylanie stanu licznika na koniec dnia, poczatek miesiaca, koniec roku do MQTT. To jest zrodlo do sensorów z pierwszych linii
Wszytko na 23:58 lub 23:59 lub 1 w nocy
zawartosc automation:

Kod: Zaznacz cały

- id: "Broadcast Licznik licznik1 stan na koniec dnia MQTT"
  alias: 'Broadcast Licznik licznik1 stan na koniec dnia MQTT'
  trigger:
    - platform: time
      at: "23:59:00"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state | round(2) | float }}'
        topic: 'energia/licznik1/dzien/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        # payload_template: "{\"Status\":\"off\", \"Data\":{{ now() }}}"
        topic: 'energia/licznik1/dzien/timestamp_raportu'
        retain: true
- id: "Broadcast Licznik licznik1 zuzycie na koniec dnia MQTT"
  alias: 'Broadcast Licznik licznik1 zuzycie na koniec dnia MQTT'
  trigger:
    - platform: time
      at: "23:58:00"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik1_licznik_mqtt_zuzycie_dzis.state | round(2) | float }}'
        topic: 'energia/licznik1/dzien/wczoraj/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        # payload_template: "{\"Status\":\"off\", \"Data\":{{ now() }}}"
        topic: 'energia/licznik1/dzien/wczoraj/timestamp_raportu'
        retain: true

- id: "Broadcast Licznik licznik1 stan na koniec mca MQTT"
  alias: 'Broadcast Licznik licznik1 stan na koniec mca MQTT'
  trigger:
    - platform: time
      at: "00:01:00"
  condition:
    condition: template
      # Change the number here to get whatever day of the month you want.
    value_template: "{{ now().day == 1 }}"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state | round(2) | float }}'
        topic: 'energia/licznik1/mc/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        topic: 'energia/licznik1/mc/timestamp_raportu'
        retain: true

- id: "Broadcast Licznik licznik1 zuzycie na koniec mca MQTT"
  alias: 'Broadcast Licznik licznik1 zuzycie na koniec mca MQTT'
  trigger:
    - platform: time
      at: "00:00:09"
  condition:
    condition: template
      # Change the number here to get whatever day of the month you want.
    value_template: "{{ now().day == 1 }}"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ sensor.licznik1_licznik_zuzycie_poprzedni_miesiac_mqtt.state | round(2) | float }}'
        topic: 'energia/licznik1/mc/poprzedni/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        topic: 'energia/licznik1/mc/poprzedni/timestamp_raportu'
        retain: true

- id: "Broadcast Licznik licznik1 stan na koniec roku MQTT"
  alias: 'Broadcast Licznik licznik1 stan na koniec roku MQTT'
  trigger:
    - platform: time
      at: "00:01:00"
  condition:
    condition: template
      # Change the number here to get whatever day of the year you want.
    value_template: "{{ now().timetuple().tm_yday == 1 }}"
  action:
    - service: mqtt.publish
      data_template:
        payload_template: '{{ states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state | round(2) | float }}'
        topic: 'energia/licznik1/rok/stan'
        retain: true
    - service: mqtt.publish
      data_template:
        payload_template: '{{ now() }}'
        topic: 'energia/licznik1/rok/timestamp_raportu'
        retain: true
i zeby na koniec miec dobre sensory zuzycia dziennego, z poprzedniego dnia, miesiecznego z poprzedniego miesiaca i z biezacego roku robie to w sensor template:

Kod: Zaznacz cały

      licznik1_licznik_mqtt_zuzycie_dzis:
        unit_of_measurement: 'kW'
        friendly_name: "Zużycie dziś licznik1 MQTT"
        device_class: power
        entity_id:
          - sensor.licznik1_licznik_koniec_dnia_stan
          - sensor.licznik_licznik1_faza123_totalforwardactiveenergy
        value_template: >-
          {% set koniec_dnia = states.sensor.licznik1_licznik_koniec_dnia_stan.state|float %}
          {% set aktualny = states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state| float %}
          {{ (aktualny - koniec_dnia )|round(2) }}

      licznik1_licznik_mqtt_zuzycie_dzis_pln:
        unit_of_measurement: 'PLN'
        friendly_name: "Zużycie dziś licznik1 MQTT PLN"
        value_template: >-
          {{ ((states.sensor.licznik_licznik1_rest.attributes.pricePerUnit | float ) * ( states.sensor.licznik1_licznik_mqtt_zuzycie_dzis.state |float )) | round(2) }}

      licznik1_licznik_mqtt_zuzycie_mc:
        unit_of_measurement: 'kW'
        friendly_name: "Zużycie mc licznik1 MQTT"
        device_class: power
        entity_id:
          - sensor.licznik1_licznik_koniec_mca_stan
          - sensor.licznik_licznik1_faza123_totalforwardactiveenergy
        value_template: >-
          {% set koniec_mca = states.sensor.licznik1_licznik_koniec_mca_stan.state|float %}
          {% set aktualny = states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state| float %}
          {{ (aktualny - koniec_mca )|round(0) }}
      licznik1_licznik_mqtt_zuzycie_mc_pln:
        unit_of_measurement: 'PLN'
        friendly_name: "Zużycie mc licznik1 MQTT PLN"
        value_template: >-
          {{ ((states.sensor.licznik_licznik1_rest.attributes.pricePerUnit | float ) * ( states.sensor.licznik1_licznik_mqtt_zuzycie_mc.state |float )) | round(2) }}

      licznik1_licznik_mqtt_zuzycie_rok:
        unit_of_measurement: 'kW'
        friendly_name: "Zużycie rok licznik1 MQTT"
        device_class: power
        entity_id:
          - sensor.licznik1_licznik_koniec_roku_stan
          - sensor.licznik_licznik1_faza123_totalforwardactiveenergy
        value_template: >-
          {% set koniec_roku = states.sensor.licznik1_licznik_koniec_roku_stan.state|float %}
          {% set aktualny = states.sensor.licznik_licznik1_faza123_totalforwardactiveenergy.state| float %}
          {{ (aktualny - koniec_roku )|round(0) }}
      licznik1_licznik_mqtt_zuzycie_rok_pln:
        unit_of_measurement: 'PLN'
        friendly_name: "Zużycie rok licznik1 MQTT PLN"
        value_template: >-
          {{ ((states.sensor.licznik_licznik1_rest.attributes.pricePerUnit | float ) * ( states.sensor.licznik1_licznik_mqtt_zuzycie_rok.state |float )) | round(2) }}
Oczywiscie przez jakiegokolwiek MQTT clienta mozna sobie recznie ustawic stany starowe miesiaca i roku jak chcemy miec dane np za 2020 a dopiero w marcu zrobilismy
Czy możesz podzielić się też parametrami z ~/supla-core/supla-mqtt-client/config/state.yaml, bo rozumiem, że go zmieniłeś również.
Chciałbym zaimplementować Twój kod u siebie, ale się trochę gubię, jeśli jest możliwość to proszę o pomoc :D
Pozdrawiam!
ODPOWIEDZ

Wróć do „ZAMEL MEW-01”