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 polubienie

W związku z tym, że jest to chyba jedyny polski temat mówiący o integracji econet24 z HA, wrzucę to co udało mi się ogarnąć, bez skrawków kodu tylko całość, która zajęła mi trochę.
Na start w pliku configuration.yaml dodaje
sensor: !include sensor.yaml (nie wiem czy to jest konieczne, ale tak zrobiłem i działa)
następnie dodałem sobie plik sensor.yaml a w nim

- platform: rest
  scan_interval: 30
  resource: !secret econet24_host
  method: GET
  name: Boiler
  verify_ssl: false
  username: !secret econet24_user
  password: !secret econet24_psw
  authentication: basic
  headers:
    User-Agent: Home Assistant
    Content-Type: application/json
  value_template: "OK"
  json_attributes:
    - curr
    # - fuelLevel
- platform: template
  sensors:
    boiler_mode:
      friendly_name: Tryb Pracy
      value_template: >-
        {% if   states.sensor.Boiler.attributes["curr"]["mode"] == 0 %} Wyłączony
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 2 %} Rozpalanie
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 3 %} Praca
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 4 %} Nadzór
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 5 %} Postój
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 6 %} Czyszczenie
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 7 %} Wygaszanie
        {% elif states.sensor.Boiler.attributes["curr"]["mode"] == 8 %} Alarm
        {% else %} UNKNOWN State: {{states.sensor.Boiler.attributes["curr"]["mode"]|int }}
        {% endif %}
    boiler_fuellevel:
      friendly_name: Poziom Paliwa
      value_template: '{{states.sensor.Boiler.attributes["curr"]["fuelLevel"] }}'
      device_class: battery
      unit_of_measurement: "%"
    boiler_temperature:
      friendly_name: Temperatura kotła
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempCO"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"
      icon_template: mdi:thermometer-lines
    boiler_pumpcoworks:
      friendly_name: Pompa kotła
      value_template: '{{states.sensor.Boiler.attributes["curr"]["pumpCOWorks"] }}'
    boiler_output:
      friendly_name: Moc kotła
      value_template: '{{states.sensor.Boiler.attributes["curr"]["boilerPower"] }}'
      unit_of_measurement: "%"
    boiler_fan_output:
      friendly_name: Moc nadmuchu
      value_template: '{{states.sensor.Boiler.attributes["curr"]["fanPower"]|int }}'
      icon_template: mdi:fan
      unit_of_measurement: "%"
    boiler_mixer_set_temp1:
      friendly_name: Temperatura zadana mieszacza
      value_template: '{{states.sensor.Boiler.attributes["curr"]["mixerSetTemp1"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"
    boiler_mixer_temp1:
      friendly_name: Temperatura mieszacza
      value_template: '{{states.sensor.Boiler.attributes["curr"]["mixerTemp1"]|int }}'
      icon_template: mdi:thermometer-lines
      device_class: temperature
      unit_of_measurement: "°C"
    boiler_temp_huw_set:
      friendly_name: Temperatura zadana CWU
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempCWUSet"] }}'
      device_class: temperature
      unit_of_measurement: "°C"
    temp_huw:
      friendly_name: Temperatura CWU
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempCWU"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"
    temp_outside:
      friendly_name: Temperatura zewnętrzna
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempExternalSensor"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"

Dalej w pliku secrets.yaml dodałem:

econet24_host: http://192.168.1.xxx/econet//regParams
econet24_user: admin
econet24_psw: mojehaslo

gdzie 192.168.1.xxx to IP mojego econeta
I mogę wyciągać dane na dashboard

Prawdopodobnie dla większości to banał, ale ja przesiadając się z domoticza, na serio poświęciłem na to trochę czasu więc w związku z tym, że wyciągnąłem jakieś info z wpisów powyżej, chcę się odwdzięczyć bo się ciesze, że wreszcie ruszyło :slight_smile:

4 polubienia