Home Assistant - Czujnik Otwarcia Drzwi (odwrotny stan)

Cześć,

Witam wszystkich forumowiczów.
To mój pierwszy wpis tutaj (swoją przygodę z HA rozpocząłem kilka tygodni temu), liczę więc na wyrozumiałość :slight_smile:

Mam pytanie:
W jaki sposób zmusić HO do odwrotnego raportowania stanu czujnika otwarcia drzwi?

W tym momencie, kiedy magnes jest przy czujniku (kontaktron zwarty) raportowane jest “otwarte”.
Chciałbym, żeby w takim wypadku wyświetlany był odwrotny stan, tj. “zamknięte”.

Na stronie (Link) znalazłem wyjaśnienie, jednak nie wiem, gdzie powinienem umieścić ten kawałek kodu?
(rozumiem, że zmieniam “binary_sensor.xiaomi_whatever” na moją nazwę sensora)

binary_sensor:
  - platform: template
    sensors:
      front_door_inverted:
        value_template: "{{ is_state('binary_sensor.xiaomi_whatever', 'off') }}"

Ps. Kolejne pytanie - jak zmienić standardowo wyświetlaną nazwę “otwarte/zamknięte” na inną (np. “pracuje/nie pracuje”)?

Z góry dziękuję za pomoc.

Pzdr,
T.

Tutaj jest przykład Zmiana nazwy stanu sensora - #8 przez macek, tym ogarniesz także “odwrotne raportowanie”.

Sporo informacji jest już na forum, trzeba trochę poczytać i poszukać, jak nie uda się wyszukać, zakładaj nowy wątek, ktoś napewno pomoże.

1 Like

Dziękuję @macek.
Przeczytałem podsunięty wątek i w pliku /config/configuration.yaml dodałem wpis:

sensor:
  - platform: template
    sensors:
       czujnik_przepływu:
          value_template: >-
            {%- if is_state("binary_sensor.czd5_zasobnik_contact", "otwarte") -%}
            CWU używana
            {%- else -%}
            CWU nie używana
            {%- endif -%}

gdzie binary_sensor.czd5_zasobnik_contact to nazwa mojego czujnika.
Niestety po restarcie HA nie mogę odnaleźć czujnik_przepływu tak, żeby dodać go na dashboardzie.

Rozumiem, że działa to w ten spsob, że najpierw jest deklarowana nowa nazwa tymczasowego sensowa (czujnik_przepływu) a później informacja, jakie powinien przyjąć wartości (CWU używana/CWU nie używana) w zalezności od wartości raportowanych przez istniejący czujnik (binary_sensor.czd5_zasobnik_contact).

Gdzie popełniam bład?

Pzdr,
T.

ja to bym nodereda zaprzągnął do tego… łatwiej ogarnąć zmiany stanów i ewentualny przebieg procesu.

(a miało być szybko i prosto… :wink: )

Usuń polskie znaki z tego wpisu, powinno to wyglądać tak:

sensor:
  - platform: template
    sensors:
       czujnik_przeplywu:
          value_template: >-
            {% if is_state('binary_sensor.czd5_zasobnik_contact', 'otwarte')  %}
            CWU używana
            {% else %}
            CWU nie używana
            {% endif  %}

przy założeniu, że encja:

binary_sensor.czd5_zasobnik_contact

przyjmuje stan:

otwarte
1 Like

OK, poprawiłem polskie nazwy i nadal wyrzucało mi błąd.
Problemem były wielkie litery (cała nazwa sensora powinna być pisana małymi).
Druga sprawa - stan czujnika poprawiłem na “off” (bo “otwarte/zamknięte” nie działało).

Teraz jest tak:

sensor:
  - platform: template
    sensors:
       cwu_flow_sensor:
          value_template: >-
            {% if is_state('binary_sensor.czd5_zasobnik_contact', 'off')  %}
            CWU używana
            {% else %}
            CWU nie używana
            {% endif  %}

i działa :slight_smile:

Dziękuję!

Ps. W jaki sposób ustawić, żeby po zmianie stanu sensora cwu_flow_sensor zmieniała się również jego ikona?

W dokumentacji HO znalazłem taki przykład:

template:
  - binary_sensor:
      - name: Sun Up
        state: >
          {{ is_state("sun.sun", "above_horizon") }}
        icon: >
          {% if is_state("binary_sensor.sun_up", "on") %}
            mdi:weather-sunset-up
          {% else %}
            mdi:weather-sunset-down
          {% endif %}

natomiast nie udaje mi się go dostosować do moich potrzeb :frowning:

template:
  - binary_sensor:
      - name: cwu_flow_sensor
        state: >
          {{ is_state("on", "off") }}
        icon: >
          {% if is_state("cwu_flow_sensor", "on") %}
             mdi:water
          {% else %}
            mdi:water-outline
          {% endif %}

(nie ukrywam, że robię wszystko “na czuja”).

Będę wdzięczny za pomoc.

Pzdr,
T.

Poczytaj dokumentację, bo robisz za bardzo na czuja
idea:

          {{ is_state("encja", "atrybut_stanu") }}

obejrzyj swoje encje w narzedziach developerskich (obejrzyj też encję sun.sun)

Przy okazji pochwalę się prostym DIY :slight_smile:


Czujnik przepływu (0/1) + dołączony do niego czujnik otwarcia drzwi (w miejsce kontraktonu wlutowane wyjście z czujnika przepływu).

Dzięki temu będę miał raportowane, kiedy używana jest ciepła woda :slight_smile:

2 Likes
sensor:
  - platform: template
    sensors:
       cwu_flow_sensor:
          value_template: >-
            {% if is_state('binary_sensor.czd5_zasobnik_contact', 'off')  %}
            CWU używana
            {% else %}
            CWU nie używana
            {% endif  %}
          icon_template: >-
            {% if is_state('binary_sensor.czd5_zasobnik_contact', 'off') %} 
             mdi:lock-open-variant-outline
            {% else %}
             mdi:lock-outline
            {% endif %}

Wystarczy do istniejącej definicji dopisać powyższy wpis. Oczywiście ikony definiujesz pod Swoje upodobania.

załóż nowy temat i opisz go jak go zastosowałeś, fajnie też jak byś kod udostępnił.

1 Like

Zastosowałem Twój kod (zmieniając ikonę na water):

sensor:
  - platform: template
    sensors:
       cwu_flow_sensor:
          value_template: >-
            {% if is_state('binary_sensor.czd5_zasobnik_contact', 'off')  %}
            CWU używana
            {% else %}
            CWU nie używana
            {% endif  %}
          icon_template: >-
            {% if is_state('binary_sensor.czd5_zasobnik_contact', 'off') %} 
             mdi:water
            {% else %}
             mdi:water-outline
            {% endif %}

i niestety zmiana stanu nie powoduje zmiany ikony.

Stan_1
1
Stan2
2

Jak widać oryginalny czujnik zmienia nazwę i ikonę, ten z template tylko nazwę.

Nowy temat dot. czego - mojej przeróbki czujnika przepływu wody? :slight_smile:
Chyba nie m sensu bo to strasznie proste (żeby nie napisać prostackie :wink: )

Jakbym zrobił coś do liczenia przepływu! o to byłoby się czym chwalić :slight_smile:

A kliknij w czujnik i zobacz w szczegółach status ikony.

Kod który Ci napisałem jest z mojego HA i działa czyli powinien też u Ciebie działać. Nazewnictwo ikon które wstawiłeś jest prawidłowe?

Cześć,

Po przesiadce na ZHA (z Z2MQTT) i ponownej konfiguracji systemu problem niestety pojawił się znowu.
Dodałem do pliku konfiguracji wpis, jak ostatnio (zmieniając nazwę czujnika na aktualną “binary_sensor.door_sensor_zasobnik_opening”), ale kod, który działał ostatnio:

# Czujniki tymczasowe
sensor:
  - platform: template
    sensors:
# Czujniki CWU
       cwu_flow_sensor:
          value_template: >-
            {% if is_state('#binary_sensor.door_sensor_zasobnik_opening', 'off')  %}
            CWU używana
            {% else %}
            CWU nie używana
            {% endif  %}
          icon_template: >-
            {% if is_state('#binary_sensor.door_sensor_zasobnik_opening', 'off') %} 
             mdi:lock-open-variant-outline
            {% else %}
             mdi:lock-outline
            {% endif %}

nie działa - sensor “cwu_flow_sesnor” nie zmienia stanu.

Pytania, które mi się nasuwają to:

  • dlaczego w poprzedniej konfiguracji ten sam sensor nazywał się “binary_sensor.XYZ_contact” a w nowej “binary_sensor.XYZ_opening”?
  • czy możliwe, że po zmianie na ZHA powinienem ustawić inny status czujnika (teraz jest “off”, próbowałem “closed” oraz “disable” ale bez powodzenia)?

Jesteś pewny, że przed nazwą występuje “hasztag”?

Sprawdź w “Narzędzia deweloperskie” jaki stan przyjmuje.

1 Like

Usunięcie # pomogło.

Nie wiem, skąd mi się tam wziął… :confused:
Dziękuję!

Co w przypadku gdy stan czujnika nie pochodzi z binary_sensor, tylko z zone (pobrane z integracji z Satel Integra).
Co mam wpisać w pliku konfiguracyjnym zamiast ‘binary_sensor.czd5_zasobnik_contact’ ?

A jak on się Tobie przedstawia w narzędziach deweloperskich ?