HA + mqtt - problemy z dodaniem czujnika do dashboardu

Cześć,

Nie wiem, czy moje pytanie nie jest przypadkiem z tych “nie właściwych” jednak jednoznacznej odpowiedzi w Internecie nie otrzymałem.

Temat wygląda następująco.
Mam Home Assistant oraz kilka esp32 połączonych przez esphome do HA.
Mam również esp8266, gdzie program pisałem w arduino ide, utworzyłem komunikację przez mqtt i dane z czujnika temperatury cwu odczytuje przez mqtt lens.

Chciałbym esp8266 poprzez mqtt sparować z Home Assistant.
Zgodnie z licznymi artykułami, filmikami instruktażowymi zainstalowałem Mosquitto Broker.
W integracjach pojawił się nowy “kafel” MQTT. Skonfigurowałem zgodnie stanem faktycznym, czyli jako pośrednik adres IP brokera, port standardowy 1883. W momencie pojawiła się masa urządzeń i encji - rozumiem, że to od użytkowników podłączonych do tego samego brokera.
image
Ja z kolei przechodząc do “KONFIGURUJ” nasłuchuje temat i mam prawidłowe odczyty z mojego czujnika.

Chciałbym dodać odczyt z czujnika do dashboardu. Z tych 291 urządzeń, 2778 encji nie mogę namierzyć mojego sensora, tak jakby go tam nie było…
Cały weekend myślałem i szukałem jak to zrobić.
Gdzieś wyczytałem, że należy plik configuration.yaml edytować i dodać kilka linijek kodu. Tak zrobiłem - nic to nie dało.
Czy mógłbym prosić o nakierowanie ?
Dziękuję i pozdrawiam

Na podstawie komunikacji MQTT w samym HA może powstać zdefiniowane urządzenie wraz ze swoimi encjami i atrybutami encji, poprzez mechanizm MQTT Discovery. W wiadomości dla odkrycia urządzenia, można zawrzeć jego konfigurację dla HA Discovery messages. Jeśli twoje urządzenie posiada wiadomość dla autodiscovery w HA, to urządzenie wraz z jego czujnikami, czy też pojedynczy czujnik/sensor powstaną autogamicznie.
Jeśli natomiast nie ma takiej informacji w ładunku komunikatu MQTT, a przesyłane są same odczyty na danym temacie, to wówczas użytkownik musi sobie stworzyć dany sensor czy inną encję za pomocą zapisu w konfiguracji HA. Do tego służy na przykład zapis dla MQTT Sensor.

# Example configuration.yaml entry
mqtt:
  sensor:
    - state_topic: "home/bedroom/temperature"

Możesz napotkać spore rozbieżności w poradnikach, bo od jakiegoś czasu zmieniła się forma zapisy konfiguracji HA dla MQTT. Natomiast sporo materiałów jest sprzed zmiany, gdzie wcześniej używało się platform: "mqtt".

Wstaw ten kod, to będzie można go zweryfikować.

P.S.
W tym temacie jest przykład na użycie discovery, dobrze wyjaśnia zasadę działania:

Dzięki za wsparcie.

Zarówno poprzedni kod, który był wpisany “Starym sposobem”, jak ten poniżej nic nie wnoszą nowego.

Rozumiem, że nowy po prawidłowym dodaniu kodu do configuration.yaml w integracje pojawi się mój czujnik, który wówczas będę miał możliwość dodać do dashboardu ?

Coś mi tu grubo “śmierdzi”, zdecydowanie nie powinieneś w instalacji produkcyjnej używać publicznego brokera testowego
test.mosquitto.org

Skoro masz zainstalowany własny lokalny broker, to dlaczego z niego nie korzystasz?

Tak, pojawi się sensor. Przeczytaj dokumentację dla tego działu w HA, są przykłady rozwinięte dalej w opisie. Te parę wierszy to wstęp. Musisz zrozumieć jak to działa. Encje tworzy się często w oparciu o szablony.

Możesz określić jednostkę sensora

 unit_of_measurement: "°C"

Ten wiersz określa, jaka części komunikatu json w temacie (topic) na być przyjęta za wartość odczytu czujnika:

value_template: "{{ value_json.temperature }}"

Możesz zrobić zaokrąglenie tego odczytu:

value_template: '{{ value | round(2) }}'

EDIT:
Kolejną rzeczą z jaką musisz się zapoznać to podział konfiguracji. Przy tej ilości encji jednego rodzaju musisz pomyśleć już teraz o includowaniu zapisów.

Możesz również trochę inaczej podejść do tego zagadnienia i użyć packages.
Wszystko w dokumantacji :wink: - zacząłeś swój maraton…

2 polubienia

Pierwsze korzystałem z publicznego brokera i chciałem przenieść odczyt do HA.
Jednak widzę, że robią się schody, tak więc będzie łatwiej jak wykorzystam własny broker.
Rozumiem, że adresem IP brokera jest adres mojego serwera HA.

Ok, przerzuciłem ESP8266 na broker mosquitto w HA.
Napotkałem kolejną kłodę w postaci :

Znalazłem podobny temat na forum, gdzie jeden z kolegów pisał :
" Zostało wycięte anonimowe logowanie do MQTT anonymous: true
Spróbuj użyć listy Access Control Lists (ACLs)"
//link do tematu : MQTT "error: received null username or password for unpwd check"

Zrobiłem zgodnie z instrukcją. Jednakże i tu napotkałem problem.
Dzięki SambaShare dostałem się do plików HA, natomiast nie było oczekiwanego pliku share (utworzyłem go sam, oraz dodałem ręcznie pozostałe pliki. Bez skutku. Problem nadal jest.

Łatwo nie dam za wygraną, już czuję, że pozytywny rezultat jest blisko.

Nie tędy droga, to ma być systemowy udział share, który już istnieje, nie chodzi o to byś tworzył podkatalog w config.
Tak to wygląda z Windowsa jak wejdziesz windowsowym otoczeniem sieciowym w HA (skreśliłem config, by nie kusił, ale oczywiście go nie kasuj!)

edit (na podstawie info z usuniętego posta)
U siebie masz wejść na ścieżkę
\\192.168.88.231\share
a nie na
\\192.168.88.231\config

Dodatki (poza nielicznymi wyjątkami) korzystają z udziału share ponieważ są oddzielnymi bytami od HA (pracują we własnych odseparowanych kontenerach).

1 polubienie

sory, że tak męcze, ale wprowadzone zmiany jeszcze nic nie wnoszą…
poniżej zrzut. Reset HA był.

Ale przecież HA nie ma nic do tych zmian.
Konfigurowałeś Mosquitto, więc masz zrestartować Mosquitto (to osobny serwer “w swoim własnym Kosmosie”).

Oczywiście w samym Dodatku Mosquitto musisz włączyć korzystanie z plików, które stworzyłeś.

PS nie prościej byłoby wprowadzić użytkowników w konfiguracji Mosquitto w konfiguracji Dodatku (albo skoro to Dodatek, a nie oddzielna instalacja po prostu dodać tych użytkowników do HA - ta ostatnia metoda dotyczy TYLKO Mosquitto w postaci Dodatku), oczywiście można skonfigurować na wiele różnych sposobów, ale najrozsądniej zgodnie zaleceniami z dokumentacji podręcznej Dodatku.

Oczywiście customize acctive: true :slight_smile:

Zastanawiam się czy problem nie leży w kodzie esp8266.
Wcześniej próbowałem z użytkownikami “saltev”, oraz “mqtt” i bez efektu. Teraz użyłem domyślnego mqtt user i skopiowałem do kodu.


Ten user homeassistant z długaśnym hasłem nie służy do konfigurowania klientów MQTT, on jest dedykowany do zintegrowania MQTT w HA…
Masz go użyć w Integracji z MQTT

W klientach masz użyć innych użytkowników (np. tych co sobie zdefiniowałeś).

Sam fakt stworzenia ACL wiele nie daje, musisz jawnie (w odpowiedniej konfiguracji brokera) lub niejawnie (wystarczy stworzyć użytkowników w HA - TYLKO dla Mosquitto jako Dodatek, wtedy oczywiście restart całego hosta) mieć takich użytkowników.

Proponuję używać dedykowanych loginów do dedykowanej integracji, np.

image

W internecie można znaleźć sporo osób z problemem połączenia klienta do brokera mosquitto. Problem pojawił się w ubiegłym roku po aktualizacji.
Jednym pomaga reset brokera, innym zmiana w kodzie, a jeszcze innym dodanie wyjątków w konfiguracji.
Wszelkie zmiany, które wprowadzałem nie rozwiązały problemu.

Usunąłem mqtt mosquitto. Zainstalowałem EMQX. Sensor odrazu się znalazł, połączył i już jest w HA.

Niemniej jednak będę szukał problemu z mqtt mosquitto.
Dziękuję za wsparcie :slight_smile: :slight_smile:

1 polubienie

Bo ludzie nie rozumieją jak to działa, co z czym sie integruje i na jakich poświadczeniach, używam brokera Mosquitto od kilku lat jako add-on HA, robie upgrady i nigdy nie miałem problemu.

1 polubienie

EMQX jest dobrym programem, niestety trzeba doliczyć 20%-> wyższe zużycie procesora i pamięci.