Mqtt +espeasy + czujnik drzwi - totalnie początkujący HA

Witajcie. Na początek chciałem się przywitać gdyż jestem nowy na tym forum oraz całkowicie początkującym użytkownikiem Home Assistant. To jest już moje drugie podejście do HA po roku gdyż poprzednio nie poradziłem sobie z konfiguracją i z racji braku czasu odstawiłem temat na półkę.
Przez ostatni czas oglądałem masę poradników dotyczących HA i spróbowałem ponownie swoich sił ale po raz kolejny zderzyłem się ze ścianą natłoku informacji których nie potrafię poskładać w jedną całość tak aby zacząć rozumieć co z czym i do czego jest dlatego czasami moje pytania mogą być niezrozumiałe ponieważ sam nawet czasami za bardzo nie wiem o co dokładnie pytać…
Może na początek napiszę co mam, co już wiem, co chciałem osiągnąć i na czym utknąłem.
Sprzęt jaki posiadam to raspberry pi 4 4GB z wgranym

Home Assistant Core
2024.2.5
Supervisor
2024.03.0
Operating System
12.0
Interfejs użytkownika
20240207.1

Do tego

Wemos d1mini z  ESP_Easy_mega-20231130 z czujnikiem kontraktonowym w drzwiach

Cel:
Wysyłanie z espeasy do Home assistanta za pomocą mqtt statusu drzwi- otwarte/zamknięte.
W HA utworzyłem użytkownika “aa” z hasłem które wpisałem w configu espeasy
EspEasy config mqtt


Device mam tak

W aplikacji mqtt explore pokazuje mi tak

I tutaj teraz zaczyna się ściana gdyż nie mam zielonego pojęcia co dalej. Oglądając poradniki to jedne były “starym sposobem” inne “nowym” a ja tak naprawdę nie rozumiem tych różnic, czytając poradniki np. takie MQTT Sensor - Home Assistant nie jestem jeszcze na tym etapie żeby je rozumieć(znaczy się nie wiem które parametry mają być a które nie są w tej konkretnej sytuacji potrzebne)
plik configuratio.yaml wygląda następująco

  binary_sensor:
    - name: "Door Sensor"
      state_topic: "homedoor_1/Door_sensor/State"
      payload_on: “open”
      payload_off: “close”
      device_class: opening
      qos: 0

w HA mam
door sensor
Zwracam się z prośbą o pomoc w podpowiedzi co gdzie zmienić i dlaczego aby to zadziałało.
Jestem świadom, że to wszystko jest dosyć chaotyczne stworzone ale po kilku nocach kombinowania już sam się gubię w tym wszystkim.
Pozdrawiam serdecznie.

To co masz w Mqtt State (0/1) musi bić zgodne z tym czego oczekujesz

[…]
  binary_sensor:
    - name: "Door Sensor"
      state_topic: "homedoor_1/Door_sensor/State"
      payload_on: “1”
      payload_off: “0”
      device_class: opening
      qos: 0
[…]

Nadal mam nieznany
nieznany
Może jeszcze dopiszę jak w HA dodaję sensor bo może tu cos źle robię.
W “przegląd” po prawej u góry daję edytuj, z dołu po prawej -dodaj kartę, następnie wg. encji i tam widzę Door Sensor-binary_sensor.door_sensor

Dodawanie karty do widoku nie ma nic do encji, to jest tylko wizualizacja, a aby coś się dało wizualizować, to taki byt - encja, najpierw musi działać poprawnie.

To co robisz nie jest dodawaniem encji do HA, ani jej modyfikowaniem.

Czy poprawiłeś kod YAML i zrestartowałeś HA?

to coś symbolizuje, że kod jest wyrwany z szerszego kontekstu (pozwoliłem sobie dodać do posta wyżej, aby zwrócić uwagę, że to jest wyrwane z jakiejś sekcji, stąd nie może się to zaczynać bez odpowiednich wcięć

[…]

Nie spodziewałem się, że aż tak namieszasz :wink: , cała definicja jest zła… nie tylko payload. Definicja na starych zasadach. Przeszło to weryfikację?

# Example configuration.yaml entry
mqtt:
  - binary_sensor:
      name: Bathroom
      state_topic: "home/bathroom/switch/button"
      payload_on: "1"
      payload_off: "0"
[…]

[…] @szopen ten znaczek to jakaś nowa zasada? - ma sens

to że namieszałem to wiedziałem, nie wiedziałem jak bardzo:D
ale w końcu udało się! oczywiście z Waszą pomocą za co dziękuję.
po 5 dniach walki i przekleństw że tak prostej rzeczy nie potrafię zrobić:)
błąd był w espeasy/controllers
W Controller Client ID: miałem ukośnik dodany ( tak mi się wydaje przynajmniej)
suma sumarum plik yaml wygląda tak:

mqtt:
  - binary_sensor:
      name: Door Switch
      state_topic: "homedoor_1/Door_sensor/State"
      payload_on: "1"
      payload_off: "0"

Mam jeszcze dwa pytania.

  1. Czy można zmienić w HA z on i off na open/closed
    próbowałem w payload zmienić on na open, off na closed ale nie przechodzi weryfikacji.
  2. Jak chciałem wejść w edycję ustawień Door Sensor otrzymałem komunikat
Ta encja ("binary_sensor.door_switch") nie ma unikalnego identyfikatora, dlatego z poziomu interfejsu użytkownika nie można zarządzać jej ustawieniami. Więcej szczegółów znajdziesz w dokumentacji.

Czy powinienem się tym przejmować?

Ad 1 Można po dodaniu unikalnego ID , czyli pierwsze pytanie ściśle się wiąże z drugim. Dodaj do YAML dwa wiersze

unique_id: kontaktron1 
device_class: door

Pamiętaj o wcięciach , ma być dokładnie pod payload_off
Zapisz, zrób restart i sprawdź

To nie był błąd skoro miałeś dane w brokerze. Wystarczyło kliknąć w explorerze i wkleić w state_topic. Tak robiąc nie pomylisz się w przepisywaniu topic.

Ponieważ ESPEasy ma tylko stan 0/1 i nie da się tego zmienić więc w prosty sposób nie da się tego zmienić.
Trzeba by utworzyć jakiś value_template coś na wzór

# Example configuration.yaml entry
mqtt:
  - binary_sensor:
      name: Door Switch
      state_topic: "homedoor_1/Door_sensor/State"
      value_template: "{%if is_state(entity_id,\"open\")-%}1{%-else-%}0{%-endif%}"
      payload_on: "open"
      payload_off: "closed"  

NIE KOPIUJ to tylko wskazówka, są tu magicy od {{{{}}}}} to może zrobią to poprawnie.

@Amper zastanów sie nad przejściem na rozwiązanie ESPHome albo Tasmota, sporo problemów z integracją Cię ominie :wink:.

Dziękuję za podpowiedzi, dzisiaj troszkę pokombinowałem i już jest prawie dobrze.
W espEasy utworzyłem rules które wysyła mi status Open/Close.
Gdyby ktoś potrzebował wstawiam działające rules dla switch/input switch

on Door_sensor#State do
  if %eventvalue%=0
    Publish,homedoor_1/Door_sensor/State,CLOSE
  else
    Publish,homedoor_1/Door_sensor/State,OPEN
  endif
endon

W HA mam takie parametry:

mqtt:
  - binary_sensor:
      name: Zamek 
      state_topic: "homedoor_1/Door_sensor/State"
      payload_on: "OPEN"
      payload_off: "CLOSE"
      unique_id: kontaktron1 
      device_class: door

No i działa pięknie. Jest jednak jedno małe ale.
W drzwiach mam dwa kontaktrony:

  • Czujnik czy drzwi są otwarte/ zamknięte
  • Czujnik zamka czy jest otwarty/zamknięty

O ile status drzwi wejściowe zamknięte/otwarte jest prawidłowo
to już zamek powinno być zamknięty/otwarty. a wyświetla się
zamek otwarte/zamknięte.
Czy można to poprawić na zamknięty/otwarty?

kol. @macek pewnie z biegiem czasu przestawię się na ESPHome. ale to jeszcze pewnie potrwa:)

znalazłem podobny temat tutaj na forum, próbuję to ogarnąć.

Zacznij od zmiany definicji device_class na lock, powinno od razu być dobrze przetłumaczone z lock i unlock, wszystko masz opisane dokumentacji Binary sensor - Home Assistant.