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.
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".
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 ?
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.
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 - zacząłeś swój maraton…
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!)
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.
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.
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
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.