OneMeter - monitoring zużycia energii

2024.1.6
Przy kopiowaniu gotowca ze strony OneMetera wartości mapowały się nieprawidłowo.

1 Like

jak zacząłem, to wywnioskowałem, że nie potrzebne jest “- platform:” i zmieniłem na “- rest:”
wstawiałem wcięcia tak, żeby File Editor pokazywał OK
Ja u siebie mam wersję 2024.1.6 ale już zgłosiła się aktualizacja.

Wywnioskowałeś prawie dobrze

Tak, ale cały czas “krzyczał”, że name jest źle

A teraz za dużo skasowałem w UI Lovelace i dalej sensorów nie mam :frowning:

W dokumentacji błąd jest również w miejscu:

{{ value_json.lastReading.OBIS['15_8_0'] }}

Nie ma takiej wartości w pliku JSON. Przez to kolejne wartości mapują się nieprawidłowo.

Dodałem jeszcze sensor baterii w procentach, może komuś się przyda.

sensor:
  - platform: rest
    scan_interval: 900
    name: OneMeter
    resource: https://cloud.onemeter.com/api/devices/<ID URZĄDZENIA>
    value_template: "{{ value_json.lastReading.OBIS['S_1_1_12'] }} {{ value_json.lastReading.OBIS['S_1_1_4'] }} {{ value_json.usage['thisMonth'] }} {{ value_json.usage['previousMonth'] }} {{ value_json.firmware['currentVersion'] }} {{ value_json.lastReading.OBIS['S_1_1_2'] }} {{ value_json.lastReading['BATTERY_PC'] }}"
    force_update: true
    headers:
      Authorization: <KLUCZ API>

  - platform: template
    sensors:
      onemeter_kwh:
        friendly_name: "kWh"
        unit_of_measurement: "kWh"
        icon_template: mdi:flash
        value_template: "{{ states.sensor.onemeter.state.split(' ')[0] }}"
      onemeter_voltage:
        friendly_name: "OneMeter Battery Voltage"
        unit_of_measurement: "v"
        icon_template: mdi:battery
        value_template: "{{ states.sensor.onemeter.state.split(' ')[5] }}"
      onemeter_timestamp:
        friendly_name: "OneMeter Last Readout"
        icon_template: mdi:clock
        value_template: "{{ states.sensor.onemeter.state.split(' ')[1] }}"
      onemeter_this_month:
        friendly_name: "Current Consumption"
        unit_of_measurement: "kWh"
        icon_template: mdi:calendar-month
        value_template: "{{ states.sensor.onemeter.state.split(' ')[2] }}"
      onemeter_previous_month:
        friendly_name: "Previous Consumption"
        unit_of_measurement: "kWh"
        icon_template: mdi:calendar-month-outline
        value_template: "{{ states.sensor.onemeter.state.split(' ')[3] }}"
      onemeter_firmware:
        friendly_name: "OneMeter Firmware Version"
        icon_template: mdi:chip
        value_template: "{{ states.sensor.onemeter.state.split(' ')[4] }}"
      onemeter_battery_pc:
        friendly_name: "OneMeter Battery Percentage"
        unit_of_measurement: "%"
        icon_template: mdi:battery
        value_template: "{{ states.sensor.onemeter.state.split(' ')[6] }}"

Zajrzyj w przykład z dokumentacji, to zrozumiesz co było źle - początek ma być bez żadnych myślinków i wcięć rest: stanowi tutaj główną sekcję (jest ona platformą) dla całej integracji rest

rest:

dalej lista więc wcięcia + myślnik


Od sekcji

sensor:

z platformami w środku w HA odchodzi się nie bez powodu


To za mało - linter (kontroler składni) wbudowany w edytor nie jest wystarczającym narzędziem do stworzenia prawidłowego YAMLa, dlatego musem jest czytanie dokumentacji, bo tylko ona uwzględnia zawiłości realnych integracji, w tym obecne i przyszłe w nich zmiany.

W okresie przejściowym obie składnie działają (czytając comiesięczne artykuły do wydań nie da się tego przegapić, ale tych zmian jest więcej niż ktokolwiek z nas jest w stanie ogarnąć, więc każdy musi się skupiać nad czytaniem tego co dotyczy jego konkretnej instalacji), w końcu jednak nadchodzi wydanie w którym jest nieodwołalne breaking change i cześć, ALE takie zmiany są zawsze zapowiadane z co najmniej półrocznym wyprzedzeniem.

Jak pisałem - ni znam się na tym - nie wiedziałem, co jest ważne a co nie, czy strona, na którą mnie przekierowało jest ta co ma być. Jeśli ktoś śledzi cały czas takie zmiany, to jest na bieżąco. Ja zacząłem przygodę dwa tygodnie temu i nie mogę poświęcić tyle czasu, ile bym chciał - stąd była moja prośba o pomoc.
Szybko się zapalam do pomysłu, ale jak trafię na problem, to równie szybko się zniechęcam - dzięki za pomoc - jak już wszystko będzie działało, spróbuję zmienić kod na właściwy

Przesyłam kod wg nowej składni, trochę trzeba było przerobić, może komuś się przyda:

rest:
  - resource: https://cloud.onemeter.com/api/devices/<ID URZĄDZENIA>
    scan_interval: 900
    headers:
      Authorization: <KLUCZ API>
    sensor:
      - name: "OneMeter kWh"
        unit_of_measurement: "kWh"
        icon: mdi:flash
        value_template: "{{ value_json.lastReading.OBIS['S_1_1_12'] }}"
      - name: "OneMeter Battery Voltage"
        unit_of_measurement: "v"
        icon: mdi:battery
        value_template: "{{ value_json.lastReading.OBIS['S_1_1_2'] }}"
      - name: "OneMeter Last Readout"
        icon: mdi:clock
        value_template: "{{ value_json.lastReading.OBIS['S_1_1_4'] }}"
      - name: "OneMeter Current Consumption"
        unit_of_measurement: "kWh"
        icon: mdi:calendar-month
        value_template: "{{ value_json.usage['thisMonth'] }}"
      - name: "OneMeter Previous Consumption"
        unit_of_measurement: "kWh"
        icon: mdi:calendar-month-outline
        value_template: "{{ value_json.usage['previousMonth'] }}"
      - name: "OneMeter Firmware Version"
        icon: mdi:chip
        value_template: "{{ value_json.firmware['currentVersion'] }}"
      - name: "OneMeter Battery Percentage"
        unit_of_measurement: "%"
        icon: mdi:battery
        value_template: "{{ value_json.lastReading['BATTERY_PC'] }}"

Dzięki.
A czy jest możliwość wykorzystania tych sensorów w zakładce energia, żeby można było np. dodać pobraną energię i oddaną energię

Trzeba dodać 2 sensory dla całkowitego zużycia i produkcji:

      - name: "OneMeter Full Time Consumption"
        device_class: energy
        state_class: total
        unit_of_measurement: "kWh"
        icon: mdi:home-lightning-bolt-outline
        value_template: "{{ value_json.usage['fullTime'] }}"
      - name: "OneMeter Full Time Production"
        device_class: energy
        state_class: total
        unit_of_measurement: "kWh"
        icon: mdi:solar-power
        value_template: "{{ value_json.production['fullTime'] }}"

Potem będą one dostępne w sekcji Energii jako zużycie i produkcja

Do szczęścia fajnie byłoby jeszcze dodać wyświetlanie kosztu w PLN wyliczanego na podstawie zużycia miesięcznego, dziennego.

daję jako sensor wyjściowy encję:

a gdzie wpisać cenę za 1 kWh ?

Ustawienia → Dashboardy → Energia →

Screenshot - 14.02.2024 , 01_11_11

dzięki artpc
tak mam już na karcie energia


Ale tam pokazuje mi jedynie zużycie i koszt dzienny.
Chciałbym jeszcze miesięczny.

ale chciałbym jeszcze mieć na wybranej karcie pomieszczenia.
mam tak zrobione z wodą.

Robiłem to za pomocą pomocnika.
Ale teraz nie widzę takiej opcji.

Witam serdecznie.
Od kilku dni meczę się, aby pobrać dane z serwera [w dwóch różnych lokalizacjach + dwóch różnych licznikach i kontach].
Nie działa nawet u mnie udostępniony skrypt.
W czy może być problem.
Poprzez HTTPS i poprzez polecenie curl pobiera/wyswietlają mi sie dane. Mogę też z polecenia API pobrać plik z danymi bezpośrednio z clouda. Jednak do HA nie mogę zaimportować danych zużycia.
Gdzie szukać problemu? U mnie czy raczej u OneMeter?

Mam HAOS na Proxmoxie - wszystko w najnowszej wersji.
Jeszcze jedno. Jestem w tej materii świeżakiem.

Moim zdaniem coś źle przepisałeś - ja też tak miałem. ale jeśli odczytujesz z serwera dane API podstawiając swoje dane https://cloud.onemeter.com/api/devices/<DEVICE_ID>?key=<API_KEY> to w OneMeter jest wszystko OK.
Napisz, co wkleiłeś do HA i zobaczymy co jest nie tak.
Ja z pomocą kolegów już trochę ten temat liznąłem :slight_smile:

Tylko to:

rest:
  - resource: https://cloud.onemeter.com/api/devices/<ID URZĄDZENIA>
    scan_interval: 900
    headers:
      Authorization: <KLUCZ API>
    sensor:
      - name: "OneMeter kWh"
        unit_of_measurement: "kWh"
        icon: mdi:flash
        value_template: "{{ value_json.lastReading.OBIS['S_1_1_12'] }}"
      - name: "OneMeter Battery Voltage"
        unit_of_measurement: "v"
        icon: mdi:battery
        value_template: "{{ value_json.lastReading.OBIS['S_1_1_2'] }}"
      - name: "OneMeter Last Readout"
        icon: mdi:clock
        value_template: "{{ value_json.lastReading.OBIS['S_1_1_4'] }}"
      - name: "OneMeter Current Consumption"
        unit_of_measurement: "kWh"
        icon: mdi:calendar-month
        value_template: "{{ value_json.usage['thisMonth'] }}"
      - name: "OneMeter Previous Consumption"
        unit_of_measurement: "kWh"
        icon: mdi:calendar-month-outline
        value_template: "{{ value_json.usage['previousMonth'] }}"
      - name: "OneMeter Firmware Version"
        icon: mdi:chip
        value_template: "{{ value_json.firmware['currentVersion'] }}"
      - name: "OneMeter Battery Percentage"
        unit_of_measurement: "%"
        icon: mdi:battery
        value_template: "{{ value_json.lastReading['BATTERY_PC'] }}"
      - name: "OneMeter Full Time Consumption"
        device_class: energy
        state_class: total
        unit_of_measurement: "kWh"
        icon: mdi:home-lightning-bolt-outline
        value_template: "{{ value_json.usage['fullTime'] }}"
      - name: "OneMeter Full Time Production"
        device_class: energy
        state_class: total
        unit_of_measurement: "kWh"
        icon: mdi:solar-power
        value_template: "{{ value_json.production['fullTime'] }}"

utility_meter:
#Do OneMeter
  hourly_energy:
    source: sensor.onemeter_kwh
    cycle: hourly
  daily_energy:
    source: sensor.onemeter_kwh
    cycle: daily
  weekly_energy:
    source: sensor.onemeter_kwh
    cycle: weekly
  monthly_energy:
    source: sensor.onemeter_kwh
    cycle: monthly
  yearly_energy:
    source: sensor.onemeter_kwh
    cycle: yearly