Czym jest Mosquitto MQTT Broker i jaką rolę pełni w Home Assistant
Mosquitto to broker MQTT. Tłumacząc na ludzki: program, który odbiera wiadomości od jednego urządzenia i przekazuje je dalej do wszystkich, którzy chcą je usłyszeć. Sam w sobie nic nie robi z treścią. Nie wie, czy nadawca to czujnik temperatury, czy przełącznik światła. Po prostu przyjmuje temat i wiadomość, a potem rozsyła je subskrybentom.
W Home Assistant rola Mosquitto jest podobna do centrali telefonicznej. MQTT działa w modelu publish/subscribe, więc zamiast łączyć każde urządzenie z każdym, wszystkie gadają wyłącznie z brokerem. To ogromna oszczędność przy kilkudziesięciu czujnikach. Dodatek Mosquitto broker instalujesz jednym kliknięciem z listy dodatków HA, a integrację MQTT włączasz osobno w Ustawieniach.
Bez brokera Home Assistant nie zrozumie wielu popularnych urządzeń. Zigbee2MQTT, Tasmota, ESPHome w trybie MQTT, niektóre zamki i czujniki zalania komunikują się niemal wyłącznie przez ten protokół.
| Element | Rola | Gdzie działa |
|---|---|---|
| Mosquitto | Odbiera i rozsyła wiadomości | Dodatek w Home Assistant OS |
| Integracja MQTT | Tłumaczy tematy na encje HA | Ustawienia → Urządzenia i usługi |
| Klient (np. Tasmota) | Publikuje stan i odbiera polecenia | Na samym urządzeniu |
| Subskrybent | Nasłuchuje wybranych tematów | HA, Node-RED, skrypty |
Uważam, że stawianie Mosquitto jako osobnego kontenera poza HA ma sens tylko wtedy, gdy broker obsługuje też inne systemy poza inteligentnym domem. Dla typowej instalacji dodatek w Home Assistant jest prostszy w utrzymaniu i automatycznie dostaje kopię zapasową razem z konfiguracją.
Instalacja Mosquitto MQTT Broker jako dodatek Home Assistant (Supervisor)
Masz Home Assistant OS lub Supervised? Wtedy nie musisz nic stawiać na osobnym serwerze ani bawić się w kontenery Docker ręcznie. Broker MQTT wchodzi jako oficjalny dodatek i całość sprowadza się do kilku kliknięć w panelu.
Ścieżka wygląda tak: Ustawienia, potem Dodatki, na końcu sklep z dodatkami. W wyszukiwarce wpisujesz Mosquitto. Wynik to oficjalny dodatek prowadzony przez zespół Home Assistant, nie żadna nakładka od anonimowego autora z forum. Klikasz Zainstaluj i czekasz, aż obraz się pobierze.
Zanim uruchomisz dodatek, ustaw dane logowania w zakładce Konfiguracja. Domyślnie dodatek pozwala na połączenia anonimowe, a to słaby pomysł, nawet w sieci lokalnej. Wpisujesz własnego użytkownika i hasło, zapisujesz i startujesz usługę.
| Parametr | Ustawienie domyślne | Zalecane | Uwagi |
|---|---|---|---|
| logins | puste | własny użytkownik i hasło | Wymagane do pracy z Zigbee2MQTT |
| anonymous | true | false | Zamyka dostęp bez logowania |
| require_certificate | false | false | Zostaw, jeśli nie stawiasz TLS |
| port | 1883 | 1883 | Standardowy port MQTT |
Dodatek sam wystawia brokera na porcie 1883. Integracja MQTT w Home Assistant wykryje go automatycznie i zaproponuje konfigurację. Wystarczy zatwierdzić.
Jest jedna rzecz, o której wiele poradników milczy. Jeśli planujesz później postawić Zigbee2MQTT na tym samym urządzeniu, oba dodatki muszą widzieć ten sam broker i tego samego użytkownika. Warto zapisać dane logowania od razu, bo wracanie do nich po fakcie bywa irytujące. Sam kiedyś szukałem hasła w notatkach przez kwadrans, więc traktuj to jako życzliwe ostrzeżenie.
Konfiguracja brokera: użytkownicy, hasła i uprawnienia w Mosquitto
Domyślna konfiguracja Mosquitto działa bez żadnego uwierzytelniania. Każdy w sieci lokalnej może się podłączyć i czytać twoje tematy. W praktyce oznacza to, że sąsiad z dostępem do Wi-Fi albo zainfekowane urządzenie IoT może podejrzeć, kiedy włączasz światło, albo co gorsza wysłać fałszywy rozkaz do zamka.
Hasła w Mosquitto trzyma się w osobnym pliku, generowanym przez narzędzie mosquitto_passwd. Sam plik nie zawiera haseł jawnym tekstem, tylko ich skróty. Pierwszy użytkownik wymaga flagi -c, każdy kolejny już bez niej, inaczej nadpiszesz cały plik. To najczęstszy błąd przy starcie.
Uprawnienia definiujesz w pliku ACL. Bez niego każdy zalogowany użytkownik ma dostęp do wszystkich tematów. Z ACL wskazujesz, kto może czytać, a kto publikować w danym drzewie tematów.
| Poziom | Kto tego potrzebuje | Zakres dostępu | Ryzyko pominięcia |
|---|---|---|---|
| Bez uwierzytelniania | Nikt w normalnej instalacji | Pełny odczyt i zapis | Każdy w LAN steruje domem |
| Tylko hasło | Małe instalacje testowe | Wszystkie tematy po zalogowaniu | Urządzenie może pisać wszędzie |
| Hasło plus ACL | Każda działająca instalacja | Wybrane drzewa tematów | Brak, to zalecany minimum |
| ACL plus TLS | Dostęp z zewnątrz sieci | Jak wyżej, ruch szyfrowany | Podsłuch haseł w sieci |
Osobne konto dla każdego urządzenia to nie przesada. Gdy jedno z nich zacznie wysyłać dziwne dane, w logach od razu widzisz, które. Wspólne konto dla całego domu zaciera ten obraz.
Szyfrowanie TLS dokłada się dopiero, gdy broker ma być dostępny spoza sieci lokalnej. W zamkniętym LAN-ie sam ACL zwykle wystarcza i nie komplikuje konfiguracji klientów.
Integracja MQTT w Home Assistant: połączenie z brokerem i pierwszy test
Broker działa, zostało połączyć go z Home Assistant. Wchodzisz w Ustawienia → Urządzenia i usługi → Dodaj integrację i wybierasz MQTT. Jeśli Mosquitto stoi na tym samym serwerze co HA, wpisujesz localhost albo adres IP, port 1883 i dane logowania z pliku konfiguracyjnego brokera.
Po zatwierdzeniu integracja pojawi się na liście. Nie ma tam jeszcze żadnych encji, bo MQTT nie odkrywa urządzeń samo z siebie. To normalne i wielu osobom właśnie w tym miejscu wydaje się, że coś nie zadziałało.
Test najprościej zrobić w narzędziu MQTT dostępnym w menu Narzędzia dla deweloperów. Subskrybujesz temat i publikujesz na niego wiadomość z drugiej zakładki. Jeśli wiadomość wraca, połączenie działa.
| Pole | Wartość domyślna | Kiedy zmienić |
|---|---|---|
| Broker | localhost | Gdy broker stoi na innym urządzeniu |
| Port | 1883 | Na 8883 przy szyfrowanym połączeniu TLS |
| Użytkownik | pusty | Zawsze, gdy włączone logowanie w brokerze |
| Hasło | puste | Razem z użytkownikiem, para z pliku konfiguracji |
Na start lepiej zostawić anonymous: false i od razu ustawić konto z hasłem. Otwarty broker w sieci lokalnej kusi, żeby go tak zostawić, ale przy pierwszej zmianie routera albo wystawieniu usługi na zewnątrz robi się z tego dziura. Kilka minut konfiguracji teraz oszczędza sporo nerwów później.
Gdy test przechodzi, masz fundament pod dalszą pracę. Kolejny krok to podłączenie konkretnych urządzeń, a przy sprzęcie Zigbee przyda się osobny artykuł o Zigbee2MQTT, gdzie tematy MQTT pojawiają się już automatycznie.
Pierwsze tematy MQTT: publikowanie, subskrybowanie i praktyczne zastosowania
Gdy broker Mosquitto działa, a Home Assistant łączy się z nim bez błędów, czas sprawdzić, czy dane faktycznie przepływają. Najprostszy test to ręczne opublikowanie wiadomości i obserwowanie, kto ją odbierze. Bez tego kroku konfiguracja pozostaje teorią.
W narzędziach deweloperskich Home Assistant (Developer Tools → MQTT) znajdziesz pola topic, payload i przycisk publikowania. Wpisz temat, wpisz wartość, wyślij. Jeśli subskrybujesz ten sam temat w drugiej zakładce, zobaczysz wiadomość natychmiast. Tak wygląda cała magia MQTT w praktyce.
Struktura tematów ma znaczenie większe, niż się wydaje na starcie. Poziomymi ukośnikami budujesz hierarchię: dom/parter/salon/temperatura czyta się lepiej niż temp_salon_1. Dzika gwiazdka + zastępuje jeden poziom, a # całą resztę gałęzi. Subskrypcja dom/+/salon/temperatura złapie odczyt z każdego piętra.
| Temat | Typ | Zastosowanie | Przykładowy payload |
|---|---|---|---|
| dom/salon/temperatura | odczyt | czujnik temperatury | 21.5 |
| dom/salon/swiatlo/set | komenda | sterowanie lampą | ON |
| dom/salon/swiatlo/state | status | potwierdzenie stanu | ON |
| dom/parter/ruch | zdarzenie | detekcja obecności | 1 |
Uważam, że rozdzielenie tematów komend (/set) od tematów stanu (/state) to jedna z tych decyzji, które oszczędzają godziny później. Home Assistant wysyła komendę, ale stan czyta z osobnego tematu. Dzięki temu wiesz, czy urządzenie faktycznie wykonało polecenie, czy tylko je przyjęło.
Hipotetycznie: gdyby ktoś podłączył przez MQTT czujnik zalania w piwnicy, wystarczy temat dom/piwnica/zalanie z payloadem binarnym. Automatyzacja w Home Assistant subskrybuje ten temat i wysyła powiadomienie. Żadnego chmurowego API, żadnego opóźnienia.
Bezpieczeństwo i diagnostyka brokera Mosquitto w codziennym użytkowaniu
Domowy broker MQTT bez haseł i bez szyfrowania to zaproszenie do kłopotów. W sieci lokalnej ryzyko jest mniejsze, ale każdy telefon gościa, inteligentny telewizor czy przypadkowo zainstalowana aplikacja może wysyłać i odbierać pakiety na porcie 1883. Uwierzytelnianie to nie paranoja, a podstawa.
W praktyce wystarczą trzy kroki, żeby znacząco podnieść poziom bezpieczeństwa. Reszta to diagnostyka, która ratuje wtedy, gdy automatyzacja przestaje reagować o 23:00.
- Utwórz osobnych użytkowników dla każdego urządzenia lub integracji zamiast współdzielić jedno konto z pełnymi uprawnieniami.
- Włącz listę ACL, żeby Zigbee2MQTT mógł publikować tylko na swoje tematy, a nie na całe drzewo brokerа.
- Rozważ szyfrowanie TLS na porcie 8883, choć w zamkniętej sieci LAN bywa to nadmiarowe i częściej psuje niż pomaga.
- Nigdy nie przekierowuj portu 1883 na router z internetu, nawet tymczasowo do testów.
- Sprawdzaj logi Mosquitto po restarcie Home Assistant, bo tam najszybciej widać odrzucone połączenia.
Dla większości instalacji domowych szyfrowanie MQTT w LAN to przerost formy nad treścią. VLAN i dobre hasła dają więcej realnej ochrony niż TLS między dwoma urządzeniami w tym samym mieszkaniu. Szyfrowanie ma sens, gdy broker stoi na VPS albo łączy się przez internet z drugim budynkiem.
Diagnostyka sprowadza się do dwóch narzędzi: MQTT Explorer do podglądu tematyki oraz logów Mosquitto. Jeśli encje w Home Assistant przestają się aktualizować, pierwszy krok to sprawdzenie, czy broker w ogóle przyjmuje wiadomości. Hipoteza czysto robocza: gdyby Zigbee2MQTT zgłaszał błąd autoryzacji po zmianie hasła w ACL, prawdopodobnie zobaczysz to dopiero w logu, nie w interfejsie HA. Dlatego warto mieć podgląd logów pod ręką.
Więcej o samej integracji Zigbee2MQTT z brokerem znajdziesz w naszym przewodniku instalacji Zigbee2MQTT.
Komentarze (0)
Dodaj komentarz