szybki76
(Tomasz Szybki)
6 Luty 2021 09:52
1
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.
szybki76
(Tomasz Szybki)
6 Luty 2021 10:03
3
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.
szybki76
(Tomasz Szybki)
6 Luty 2021 10:09
5
- 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
szybki76
(Tomasz Szybki)
6 Luty 2021 10:15
7
Tak, sorry ale jestem nowy w tych tematach i mogę wszystkiego “nie rozumieć” ale tak to mam zrobione.
Screen z tych atrybutów stanu:
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):
szybki76
(Tomasz Szybki)
6 Luty 2021 10:28
9
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
Czyli masz ścieżkę której szukałeś.
szybki76
(Tomasz Szybki)
6 Luty 2021 10:52
14
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.
szybki76
(Tomasz Szybki)
6 Luty 2021 15:36
16
Działa! Jesteś Wielki! Dziękuję
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
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.
rafkan
23 Styczeń 2022 19:40
18
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
Szymon
(Szymon)
12 Styczeń 2023 13:13
20
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
4 polubienia