Zmiana nazwy statusu encji

Witam.

Wczoraj udało mi się wyciągnąć dane z kotła Lazar ze sterownikiem EcoNet.
Mam pytanie odnośnie zmiany nazwy atrybutów encji.
Jest kilka stanów, które opisane są liczbami
3 - praca
12 - stabilizacja
4 - nadzór
7 - wygaszanie
5 - postój
Jak zamienić te liczby na nazwy?

Robię to tak:

- platform: template
    sensors:
      tryb_pracy_lazar:
        friendly_name: Tryb pracy
        value_template: >-
          {% if is_state('tryb_pracy_lazar', '5') %}
            Postój
          {% else %}
            Postój
          {% endif %}

Ktoś pomoże?

Atrybuty są jako liczby tzn. 3, 5, 7 itd. czy kombinacja liczby i tekstu 3 - praca, 5 - postój?
Najlepiej wrzuć jak przedstawia się cała encja.

Są tylko liczby i własnie te liczby chcialbym zamienić na poszczególne nazwy.
Encja tych stanów to:

- platform: template
    sensors:
      tryb_pracy_lazar:
        friendly_name: Tryb pracy
        value_template: "{{ states.sensor.lazar_report.attributes.curr.mode }}"

Jest tam atrybut MODE właśnie z tymi stanami: 3, 12, 4, 7, 5.

Wrzuć jak wygląda cała encja z której chcesz wyciągnąć atrybuty.

- platform: rest
    name: lazar_report
    json_attributes:
      - curr
    resource: http://login:pass@IP/econet/regParams
    scan_interval: 15
    value_template: "{{ value_json.time }}"
  - platform: template
    sensors:
      curr_data:
        value_template: '{{ states.sensor.lazar_report.attributes["curr"] }}'
        friendly_name: "Lazar"

Z powyższej integracji powstała Ci encja ?

sensor.lazar_report

Tak, sorry ale jestem nowy w tych tematach i mogę wszystkiego “nie rozumieć” ale tak to mam zrobione.
Screen z tych atrybutów stanu:
image
Nr 6 to właśnie ten MODE który ma te liczby.

Bardzo “skąpisz” w przedstawieniu całej encji a bez tego ciężko pomóc.
Z tego co wrzuciłeś (niestety muszę się domyślać) to encja

sensor.lazar_report

posiada atrybut

curr

w którym za pomocą pod atrybutu

mode

są definiowane stany - tak?

Postaraj się wrzucić encję w takiej postaci (przykładowo):

Nie mam nic więcej. Z tej integracji wyciągam poszczególne atrybuty, gdyż są ulokowane w curr. Nie wiem jak fachowo się to nazywa ja uważam, że to katalog i ma podkatalogi jak przesłane zdjęcie.

Teraz super.

{{ state_attr('sensor.lazar_report', 'curr').mode }}

Nie mam dostępu teraz do komputera, piszę z telefonu ale wejdź w HA w:
Narzędzia deweloperskie następnie szablony i wykasuj przykład który tam masz wklej powyższą linijkę i napisz czy zwróciło Ci wartość

3

Jest:

Czyli masz ścieżkę której szukałeś.

Tak to jest to, tylko jak teraz ten nr 3 zamienić nazwę na PRACA?

Po pierwsze utwórz Sobie z powyższej linijki sensor
np:
Stan kotła

- platform: template
  sensors:
    stan_kotla:
      friendly_name: "Stan kotła"
      value_template: "{{ state_attr('sensor.lazar_report', 'curr').mode }}"

Następnie w zależności od tego jaki ci w/w sensor będzie zwracał stan zmień pod Siebie mój wpis dotyczący ups-a.

ups_status:
      friendly_name: "Status"
      value_template: >-
        {% if is_state('sensor.cyberpower_dl650elcd_status_data', 'OL') %}
          zasilanie sieciowe
        {% elif is_state('sensor.cyberpower_dl650elcd_status_data', 'OL CHRG') or is_state('sensor.cyberpower_dl650elcd_status_data', 'OL CHRG LB')%}
          ładowanie baterii
        {% elif is_state('sensor.cyberpower_dl650elcd_status_data', 'OL DISCHRG') %}
          zasilanie bateryjne
        {% elif is_state('sensor.cyberpower_dl650elcd_status_data', 'OB DISCHRG') %}
          zasilanie bateryjne
        {% elif is_state('sensor.cyberpower_dl650elcd_status_data', 'LB') %}
          słaba bateria
        {% elif is_state('sensor.cyberpower_dl650elcd_status_data', 'SD') or is_state('sensor.cyberpower_dl650elcd_status_data', 'FSD OB DISCHRG') %}
          wyłączanie
        {% else %}
          {{ states('sensor.cyberpower_dl650elcd_status_data') }}
        {% endif %}

Oczywiście sensor z przykładu tj.

 sensor.cyberpower_dl650elcd_status_data

u Ciebie będzie

sensor.stan_kotla

Skorzystaj z szablonów w narzędziach deweloperskich i podstawiaj Swoje dane.

Działa! Jesteś Wielki! Dziękuję

image

Dla wszystkich, którzy maja sterowniki PLUM w kotłach pewno przyda się ta integracja bo takiej na Internecie nie znalazłem a musiałem ją sam zrobić ze Szwagrem :wink:
Pozdrawiam.

Cześć,

odkopię trochę temat. W moim sterowniku PLUM prócz regParams i sysParams jest również editParams. Tak jak w regParams jest “curr” tak w editParams jest “informationParams”. Wygląda troszkę inaczej i po kilku dniach próbowania wyciągnięcia z nich danych powoli się poddaję. Może uda Wam się pomóc.
Encja wygląda tak:

Nie wiem jak uzupełnić value_template, żeby wyświetlało np. z pozycji ‘82’ wartość 4483 czyli czas prac sprężarki w godzinach.

- platform: rest
    name: pompa_ciepla_informacja
    json_attributes:
    - informationParams
    resource: http://login:pass@192.168.xxx.yyy/econet//editParams
    scan_interval: 15
    value_template: "{{ value_json.time }}"

W szablonach:

{{ state_attr('sensor.pompa_ciepla_informacja', 'informationParams').81 }} 

nie zwraca nic.

Będę wdzięczny za pomoc.

Potestuj poniższy kod:

{{ state_attr('sensor.pompa_ciepla_informacja', 'informationParams', '82').- }}

zmieniając ilość myślników

{{ state_attr('sensor.pompa_ciepla_informacja', 'informationParams', '82').-- }}

Nie wiem jaka jest wartość podatrybutu: czy -4483 lub 4483

Udało się. Dzięki Twoim pomysłom zacząłem szukać czegoś na temat zagnieżdżania i list w pythonie i okazało się, że w moim przypadku prawidłowe jest:

{{ state_attr('sensor.pompa_ciepla_informacja', 'informationParams')['82'][1][0][0] }}

Jeszcze raz dzięki za pomoc.

1 Like