Raspberry Pi w roli centrum IoT: kompletna konfiguracja

0
106
1/5 - (1 vote)

Nawigacja:

Co daje Raspberry Pi jako centrum IoT i kiedy to ma sens

Przewagi Raspberry Pi nad gotowymi hubami IoT

Raspberry Pi jako hub IoT dobrze sprawdza się tam, gdzie liczy się niski koszt, elastyczność i brak abonamentów. Jeden mały komputer może zastąpić kilka chmurowych bramek producentów, które każdy działa osobno i wymaga własnej aplikacji. Zamiast trzech różnych pudełek do oświetlenia, ogrzewania i gniazdek, wystarczy jedno Raspberry Pi, jedna konfiguracja sieci i jedno logiczne centrum zarządzania.

W gotowych hubach IoT producenci często zamykają użytkownika w swoim ekosystemie. Jeśli urządzenia danej firmy przestają być rozwijane albo pojawi się miesięczna opłata za dostęp do „zaawansowanych funkcji”, trudno coś z tym zrobić. Na Raspberry Pi pełna kontrola jest po stronie użytkownika – od systemu operacyjnego, przez wybór oprogramowania (Home Assistant, Node-RED, Mosquitto), aż po sposób integracji urządzeń Wi-Fi, Zigbee czy Z-Wave. Brak abonamentu i zależności od jednej chmury to realna oszczędność w dłuższej perspektywie.

Dodatkowym atutem jest możliwość dostosowania poziomu rozbudowy do aktualnych potrzeb. Początkowo Pi może obsługiwać prosty broker MQTT i kilka czujników, a później da się dołożyć Home Assistant, monitoring zużycia energii, logowanie do bazy danych, grafy w Grafanie czy automatyzacje oparte na Node-RED. Nie ma konieczności kupowania nowej bramki za każdym razem, gdy pojawi się nowy pomysł na automatyzację.

Ograniczenia Raspberry Pi jako centrum automatyki

Za elastyczność i niski koszt trzeba jednak zapłacić w inny sposób: Raspberry Pi nie jest sprzętem przemysłowym, a raczej „porządną zabawką”, która wymaga pewnej opieki. Najbardziej newralgicznym elementem w tradycyjnej konfiguracji jest karta SD – podatna na uszkodzenia, szczególnie przy ciągłym zapisie logów i baz danych. Stąd tak duży nacisk na użycie dysku SSD lub przynajmniej dobrej jakości karty z rozsądną konfiguracją systemu plików.

Raspberry Pi ma też ograniczoną wydajność. Dla kilku–kilkunastu urządzeń nie stanowi to problemu, ale przy rozbudowanym domu z dziesiątkami integracji, intensywnym logowaniem i przetwarzaniem danych w czasie rzeczywistym, model 3 czy Zero może zaczynać się dusić. Wtedy potrzebna jest sensowna architektura usług (np. kontenery Docker) oraz unikanie nadmiarowych dodatków, które wykorzystuje się raz w miesiącu.

Trzeci aspekt to „samodzielny serwis”. Przy gotowym hubie odpowiada za to producent – jeśli coś nie działa, aktualizacje przychodzą same (lub przynajmniej tak powinno być). Na Raspberry Pi trzeba samodzielnie dbać o aktualizacje, backupy, monitorowanie temperatury i stanu dysku, a także o podstawowe zabezpieczenie systemu. Dla części osób to zaleta (pełna kontrola), dla innych wada (dodatkowy obowiązek).

Przykładowe scenariusze zastosowania Raspberry Pi jako huba IoT

W mieszkaniu Raspberry Pi najczęściej pełni rolę uniwersalnej bramki dla oświetlenia, gniazdek i czujników. Jedno urządzenie w salonie lub przy routerze może spiąć żarówki Wi-Fi, kilka włączników na ESPHome, czujnik zalania w łazience, prosty monitoring temperatury oraz np. sterowanie roletami. Dla typowego mieszkania wystarcza Raspberry Pi 3 lub 4 z 2–4 GB RAM, bez większych inwestycji w chłodzenie. Wydajność jest w zupełności wystarczająca, a koszt całego zestawu niewielki.

W domu jednorodzinnym rośnie liczba urządzeń i złożoność scenariuszy. Dochodzą bramy garażowe, pompy, ogrzewanie podłogowe, monitoring zużycia energii, sterowanie oświetleniem zewnętrznym, nawadnianie ogrodu. W takim środowisku najlepszym wyborem jest Raspberry Pi 4 lub 5 z 4–8 GB RAM i dyskiem SSD, a także zewnętrznym donglem Zigbee. W większych instalacjach domowych można też rozważyć rozdzielenie funkcji: jedno Pi jako broker MQTT i Home Assistant, drugie jako serwer baz danych i Grafana, ale najczęściej jedna sztuka w rozsądnej konfiguracji wciąż sobie radzi.

W małym biurze czy warsztacie Raspberry Pi może zbierać dane z czujników temperatury, wilgotności, zużycia energii maszyn, a także obsługiwać proste scenariusze bezpieczeństwa (np. powiadomienie MQTT/Telegram o otwarciu drzwi poza godzinami pracy). Tu szczególnie istotne jest dobranie stabilnego zasilania oraz porządnego nośnika danych. Brak abonamentów i pełna kontrola nad danymi może mieć znaczenie także z punktu widzenia polityki bezpieczeństwa firmy.

Kiedy lepiej odpuścić Raspberry Pi

Są sytuacje, w których Raspberry Pi jako centrum IoT nie jest najlepszym wyborem. Jeśli system ma obsługiwać krytyczną infrastrukturę (np. kotłownię bez żadnego backupu, system alarmowy bez dodatkowej centrali czy monitoring, od którego zależy bezpieczeństwo pracowników), lepiej zastosować rozwiązanie przemysłowe lub przynajmniej zapasowy węzeł. RPi sprawdzi się tam jako warstwa nadzorująca, ale nie jako jedyny punkt krytyczny.

Jeżeli użytkownik nie ma czasu lub chęci zajmować się aktualizacjami, backupami i sporadycznym diagnozowaniem problemów, bardziej sensowny jest gotowy hub IoT renomowanego producenta. Będzie mniej elastyczny, ale łatwiejszy w utrzymaniu. Podobnie, gdy jedyną potrzebą jest sterowanie kilkoma żarówkami z aplikacji – zakup Raspberry Pi, dysku, dongla Zigbee i konfiguracja całego stosu może być przerostem formy nad treścią.

Nie najlepszym momentem na start z Raspberry Pi jest także okres, gdy brakuje czasu na naukę podstaw Linuxa i sieci. Szybkie „nałóż i zapomnij” tutaj nie działa – nawet gotowy obraz Home Assistant OS wymaga minimalnej orientacji w sieci lokalnej, routerze i kopiach zapasowych. Lepiej wtedy zacząć od prostszej, dobrze udokumentowanej integracji na gotowym hubie, a do Pi wrócić, gdy będzie więcej przestrzeni na spokojne testy.

Wybór wersji Raspberry Pi i sprzętu towarzyszącego pod IoT

Przegląd modeli: który Raspberry Pi do jakiego zastosowania

Do zastosowań IoT nie każdy model Raspberry Pi nadaje się tak samo dobrze. Różnią się wydajnością, poborem mocy, portami i ceną. Z punktu widzenia domowej automatyki najczęściej w grze są: Raspberry Pi 3, Raspberry Pi 4, Raspberry Pi 5 oraz mniejsze Raspberry Pi Zero W/2.

Raspberry Pi 3 (szczególnie 3B+) wciąż daje radę jako prosty hub IoT. Sprawdzi się tam, gdzie planowana jest niewielka liczba usług: Mosquitto, niewymagający Home Assistant, kilka lekkich kontenerów. Przy większej liczbie integracji i długotrwałej pracy pod obciążeniem może jednak brakować mocy, a pamięć 1 GB RAM potrafi być wąskim gardłem.

Raspberry Pi 4 stał się standardem dla domowych centrów IoT. Znakomita wydajność, konfiguracje 2–8 GB RAM, USB 3.0 (pod SSD), lepsza sieć i ogólna responsywność systemu powodują, że to bezpieczny wybór. Model 4 z 4 GB RAM to rozsądny kompromis między ceną a możliwościami. Dopiero przy naprawdę rozbudowanych automatyzacjach, wielu integracjach i ciężkim logowaniu warto sięgnąć po 8 GB.

Raspberry Pi 5 podnosi poprzeczkę wydajności jeszcze wyżej, ale kosztem większej złożoności (inne zasilanie, wyższa cena, większe wymagania co do chłodzenia). Do typowej domowej automatyki to już często „armata na muchę”. Ma sens, jeśli planowane jest równoległe uruchamianie kilku cięższych usług (np. rozbudowana baza danych, zaawansowany monitoring, dodatkowe serwisy multimedialne) albo jeśli intensywnie korzysta się z interfejsu graficznego.

Raspberry Pi Zero W oraz Zero 2 W lepiej wykorzystać jako tanie węzły pomiarowe niż centralne huby. Nadają się świetnie jako urządzenia końcowe (np. czujnik z kamerą, mini rejestrator danych MQTT), ale postawienie na nich Home Assistanta czy bardziej obciążonego brokera MQTT zwykle kończy się walką z wydajnością i stabilnością.

Ile RAM-u ma sens w centrum IoT

Ram w Raspberry Pi kusi, ale w kontekście centrum IoT nie zawsze większa ilość oznacza realny zysk. Dla prostych scenariuszy (Mosquitto, Home Assistant, kilka dodatków) 2 GB RAM często wystarcza, o ile nie uruchamia się ciężkich usług bazodanowych ani dużej liczby kontenerów. Taka konfiguracja sprawdzi się w mniejszym mieszkaniu z ograniczoną liczbą urządzeń.

Dla bardziej rozbudowanej automatyki domowej bezpieczniejszym wyborem jest 4 GB RAM. Pozwala to na płynne działanie Home Assistanta, kilku integracji, Node-RED, niewielkiej bazy danych (np. MariaDB dla długoterminowych statystyk) oraz ewentualnie dodatkowych usług. System ma zapas na cache i sporadyczne skoki obciążenia, co przekłada się na stabilność.

Konfiguracje z 8 GB RAM mają sens, gdy Raspberry Pi pełni więcej niż jedną funkcję: oprócz IoT obsługuje np. kontenery Dockera z innymi usługami dla domowników, serwer plików, monitoring czy kompilację oprogramowania. Jeśli Pi jest wyłącznie hubem IoT, 8 GB często pozostaje niewykorzystane, a dopłata do większej pamięci nie przekłada się na realne korzyści.

Zasilacz, karta SD czy dysk SSD – co najbardziej wpływa na stabilność

Najczęstszym źródłem problemów z Raspberry Pi używanym jako centrum IoT jest słabe zasilanie. Tanie, przypadkowe ładowarki USB lub kable o zbyt małym przekroju przewodów powodują spadki napięcia, resetowanie się urządzenia, błędy na karcie SD i ogólną niestabilność. W praktyce lepiej kupić oficjalny zasilacz Raspberry Pi lub solidny zasilacz o odpowiednim natężeniu prądu (dla Pi 4 – 3A) niż później tracić czas na diagnozowanie dziwnych restartów.

Kolejny kluczowy element to nośnik danych. Karta SD jest wygodna i tania, ale ma ograniczoną żywotność przy intensywnym zapisie. System IoT generuje logi, bazy danych, historię zdarzeń – to wszystko zużywa pamięć flash. Dobrym kompromisem jest użycie porządnej karty klasy A1/A2 od znanego producenta i zminimalizowanie zapisu (np. wyłączenie zbędnych logów, przeniesienie części danych w RAM). Stabilniejszym rozwiązaniem, choć droższym, jest dysk SSD podłączony do USB 3.0.

Dysk SSD daje kilka korzyści naraz: większą trwałość, lepszą wydajność I/O i mniejsze ryzyko uszkodzenia systemu przy gwałtownym odcięciu zasilania. Jednorazowy wydatek na nieduży dysk (nawet używany, ale w dobrym stanie) bywa tańszy niż regularna wymiana kart SD co rok–dwa. Dla centrum IoT, które ma pracować 24/7 przez lata, to inwestycja z gatunku „zrób raz i miej spokój”.

Dodatkowe elementy: obudowa, chłodzenie, USB hub i dongle

Obudowa Raspberry Pi pełni nie tylko funkcję estetyczną, ale też ochronną i chłodzącą. Do centrum IoT wystarczy prosta, zamknięta obudowa z miejscem na niewielki radiator i ewentualny wentylator. Lepiej unikać całkowicie otwartych płytek leżących luzem za szafką – kurz, przypadkowe dotknięcie kabli czy zwarcie metalowym przedmiotem potrafi zakończyć projekt w najmniej oczekiwanym momencie.

Chłodzenie ma sens szczególnie przy Raspberry Pi 4 i 5. Pod obciążeniem procesor lubi się rozgrzać, co skutkuje obniżaniem taktowania (throttlingiem), a w skrajnym przypadku niestabilnością systemu. Zestaw: mały radiator + cichy wentylator sterowany prostym kontrolerem lub zasilany z 5V zazwyczaj wystarcza, by utrzymać temperatury na komfortowym poziomie. To niewielki koszt, który podnosi niezawodność.

USB hub przydaje się, gdy do Raspberry Pi trzeba podłączyć kilka urządzeń: dongle Zigbee, Z-Wave, dysk USB, czasem adapter Wi-Fi o większym zasięgu. Lepiej użyć aktywnego (z własnym zasilaniem) huba, niż przeciążać porty Pi. Małe dongle Zigbee/Z-Wave najlepiej podłączać przez kilkudziesięciocentymetrowy przedłużacz USB – zwiększa to zasięg i zmniejsza zakłócenia od obudowy oraz innych urządzeń.

W kontekście IoT ważne są jeszcze moduły komunikacyjne: wbudowane Wi-Fi i Bluetooth w Pi 3/4 w większości przypadków wystarczą, ale do intensywnego ruchu sieciowego lub tam, gdzie liczy się stabilność, lepiej podłączyć Pi po kablu Ethernet. Dongle Zigbee (np. CC2652, ConBee, EFR32) i ewentualnie Z-Wave stają się „antenami” całej instalacji – tu oszczędzanie na jakości często odkłada problem tylko w czasie.

Hub Philips do automatyki domowej obok rośliny w nowoczesnym wnętrzu
Źródło: Pexels | Autor: Pascal 📷

Przygotowanie systemu: Raspberry Pi OS i podstawowe ustawienia

Wybór systemu: Raspberry Pi OS Lite czy z GUI

Raspberry Pi jako centrum IoT nie potrzebuje zwykle środowiska graficznego. Raspberry Pi OS Lite (bez GUI) jest lżejszy, zużywa mniej RAM i rzadziej sprawia problemy związane z aktualizacjami komponentów graficznych. Do zarządzania Pi wykorzystuje się SSH i ewentualnie webowe panele Home Assistanta czy innych usług, co w praktyce jest wygodniejsze przy długofalowym użytkowaniu.

Raspberry Pi OS z GUI ma sens, jeśli Pi ma pełnić równocześnie rolę „zwykłego komputera” lub gdy użytkownik bardzo nie chce pracować w konsoli. Trzeba jednak liczyć się z większym obciążeniem pamięci oraz z tym, że część poradników będzie i tak operować na poziomie CLI. W projektach nastawionych na stabilność i długi czas pracy bez ingerencji lepszą opcją pozostaje wariant Lite.

Instalacja systemu jest najprostsza przy użyciu Raspberry Pi Imager. Wybiera się system (np. Raspberry Pi OS Lite 64-bit), wskazuje nośnik (karta SD lub SSD) i opcjonalnie włącza od razu SSH, ustawia nazwę hosta oraz hasło użytkownika. Taka prekonfiguracja oszczędza później czasu i pozwala od razu podłączyć Pi do sieci przewodowej, bez konieczności wyświetlacza i klawiatury.

Pierwsze uruchomienie: podstawowa konfiguracja i aktualizacje

Konfiguracja sieci, SSH i podstawowe zabezpieczenia

Po pierwszym zalogowaniu przez SSH (lub lokalnie) dobrze jest od razu uporządkować kilka kluczowych ustawień. Na start przydaje się narzędzie raspi-config:

sudo raspi-config

W praktyce najważniejsze opcje to:

  • Change User Password – natychmiastowa zmiana domyślnego hasła użytkownika pi. Domyślne hasła to szybka droga do przejęcia urządzenia.
  • System Options → Hostname – nadanie Pi sensownej nazwy, np. iot-hub lub ha-pi4, ułatwia orientację w sieci.
  • Interface Options → SSH – upewnienie się, że SSH jest włączone (jeśli nie zostało włączone przy flashowaniu obrazu).
  • Localisation Options – ustawienie strefy czasowej i układu klawiatury, tak aby logi i zadania cron miały poprawny czas.

Następny krok to aktualizacja systemu. Lepiej zrobić ją od razu, zanim zacznie się instalować dodatkowe usługi:

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Po restarcie dobrze jest wyczyścić stare pakiety:

sudo apt autoremove -y

SSH warto wzmocnić, nawet w sieci domowej. Minimum to wyłączenie logowania roota i ewentualnie zmiana portu (gdy przekierowuje się dostęp z Internetu, co przy hubie IoT zwykle nie jest dobrym pomysłem). Plik konfiguracyjny:

sudo nano /etc/ssh/sshd_config

Przydatne parametry:

  • PermitRootLogin no – blokada logowania roota.
  • PasswordAuthentication no – po skonfigurowaniu kluczy SSH.
  • AllowUsers pi – zawężenie listy użytkowników z dostępem przez SSH.

Po zmianach:

sudo systemctl restart ssh

Rozsądnym minimum jest też prosty firewall. ufw da się ogarnąć w kilka minut:

sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable

Później, przy instalacji Home Assistanta czy Mosquitto, wystarczy dodawać kolejne reguły typu: sudo ufw allow 8123/tcp.

Stały adres IP i przygotowanie pod długą pracę 24/7

Hub IoT powinien mieć stały adres IP, w przeciwnym razie integracje zaczną działać „raz tak, raz nie”. Najwygodniej ustawić rezerwację DHCP w routerze (po MAC adresie). Jeśli to niemożliwe, można skonfigurować statyczny adres bezpośrednio na Raspberry Pi.

Na nowszych systemach sieć obsługuje dhcpcd. Konfigurację edytuje się w:

sudo nano /etc/dhcpcd.conf

Przykładowy fragment:

interface eth0
static ip_address=192.168.1.50/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 1.1.1.1

Po zapisaniu i restarcie:

sudo reboot

Żeby Pi lepiej znosiło pracę non stop, przydają się jeszcze dwie drobne optymalizacje:

  • Wyłączenie zbędnych usług – np. Bluetooth, jeśli nie jest używany:
    sudo systemctl disable hciuart.service
    sudo systemctl disable bluetooth.service
  • Synchronizacja czasu – domyślnie działa systemd-timesyncd, ale warto sprawdzić status:
    timedatectl status

    Poprawny czas jest kluczowy dla logów, certyfikatów TLS i automatyzacji opartych o harmonogram.

Minimalne „higieniczne” ustawienia bezpieczeństwa w sieci domowej

Raspberry Pi jako centrum IoT nie powinno być anonimowym hostem w sieci. Kilka prostych kroków znacząco ogranicza ryzyko problemów:

  • Brak przekierowań portów z Internetu – jeżeli nie ma twardej potrzeby, nie wystawia się 8123 (Home Assistant), 1883 (MQTT) ani SSH na zewnątrz. Zdalny dostęp lepiej realizować przez VPN (np. WireGuard na routerze lub osobnym serwerze).
  • Osobny VLAN / sieć dla IoT – jeśli router to wspiera, warto odseparować „zabawki” (żarówki, gniazdka, czujniki Wi-Fi) od komputerów i telefonów. Pi jako hub może siedzieć w obu sieciach: np. po kablu w głównym LAN, a dodatkowe Wi-Fi USB widzi sieć IoT.
  • Regularne aktualizacje – nie codziennie, ale np. raz w miesiącu:
    sudo apt update && sudo apt full-upgrade -y

    Przed aktualizacją warto mieć świeżą kopię konfiguracji (backup Home Assistanta, eksport konfiguracji Node-RED, zrzut katalogu /etc).

Architektura domowego IoT: jak poukładać komunikację i usługi

Warstwy systemu: od czujnika do interfejsu użytkownika

Domowy system IoT łatwiej ogarnąć, gdy spojrzy się na niego warstwowo. Prosty model dzieli się na:

  • Warstwę urządzeń – czujniki, przekaźniki, wtyczki, lampy, urządzenia na Wi-Fi, Zigbee, Z-Wave, przewodowe moduły (np. Modbus, RS-485).
  • Warstwę transportu – sieć IP (Ethernet/Wi-Fi), odpowiednio bramy radiowe (koordinator Zigbee, kontroler Z-Wave) i czasem magistrale przewodowe.
  • Warstwę pośrednią – broker MQTT, ewentualnie serwisy pośredniczące (np. ESPHome, Zigbee2MQTT, Z-Wave JS).
  • Warstwę logiki i prezentacji – Home Assistant, Node-RED, własne aplikacje/serwisy webowe.

Raspberry Pi w takim układzie zwykle „trzyma” warstwę pośrednią i logiki. Komunikację z czujnikami oddelegowuje się do dedykowanych mostków (dongle Zigbee, bramka Z-Wave, ESP32 z firmware ESPHome). Dzięki temu wymiana samego Pi na mocniejszy model nie wymaga dotykania instalacji w ścianach czy przeprogramowywania urządzeń.

Rozdzielenie ról: jedno Pi czy kilka?

Dla większości mieszkań i domów jednorodzinnych jedno porządnie skonfigurowane Raspberry Pi 4 spokojnie obsłuży:

  • brokera MQTT (Mosquitto),
  • Home Assistanta,
  • Node-RED,
  • kilka małych serwisów typu: Zigbee2MQTT, ESPHome, prosty serwer www.

Rozdzielenie na kilka urządzeń ma sens dopiero, gdy:

  • system rośnie do dziesiątek–setek urządzeń i automatyzacji,
  • chce się odizolować krytyczne funkcje (np. ogrzewanie) od „zabawek” typu eksperymentalne integracje,
  • część usług wymaga znacznie większych zasobów (np. system monitoringu wideo, ciężkie bazy danych).

Typowy „budżetowy” scenariusz to jedno główne Pi jako centrum IoT i kilka tańszych węzłów: ESP32/ESP8266 lub Raspberry Pi Zero 2 do zadań terenowych (czujniki, przekaźniki, wyświetlacze). Wymiana lub restart jednego z węzłów nie zatrzymuje całego systemu.

Monolit czy usługi w kontenerach (Docker/Podman)

Home Assistant, Mosquitto i towarzyszące narzędzia można uruchomić „na gołym systemie” lub w kontenerach. Każde podejście ma swoje plusy.

Instalacja bez kontenerów:

  • mniej warstw i prostsza diagnostyka dla początkujących,
  • mniejsze narzuty na zasoby,
  • łatwiejsze korzystanie z poradników, które zakładają klasyczny system.

Kontenery (Docker/Podman):

  • lepsza izolacja poszczególnych usług,
  • prostsza aktualizacja i rollback (nowy obraz vs. backup starego),
  • łatwiejsze przeniesienie całości na inną maszynę.

Jeżeli Raspberry Pi ma być wyłącznie hubem IoT, a użytkownik nie ma doświadczenia z Dockerem, rozsądnie jest zacząć od wersji „gołego” systemu i dopiero później, przy rozbudowie, rozważyć kontenery. Dla osób, które już używają Dockera na innych maszynach, od razu opłaca się ustandaryzować podejście również na Pi.

Projektowanie komunikacji: MQTT jako „szyna danych”

Mosquitto i protokół MQTT sprawdzają się jako centralny kanał komunikacji pomiędzy urządzeniami i logiką systemu. Zamiast tworzyć wiele połączeń typu „każdy z każdym”, wszystkie czujniki i sterowniki publikują dane do jednego brokera, a warstwa logiki je subskrybuje.

Przykładowa struktura tematów MQTT może wyglądać tak:

  • dom/parter/salon/temperatura
  • dom/parter/salon/rolety/stan
  • dom/parter/salon/rolety/sterowanie
  • dom/pietro/sypialnia/czujnik_ruchu

Dobrze jest od razu przyjąć czytelną konwencję nazewnictwa: od ogółu do szczegółu, bez polskich znaków i z prostymi, małymi literami. Dzięki temu łatwiej filtruje się tematy w Home Assistant czy Node-RED i nie gubi się w setkach wpisów.

Urządzenia smart home i tablet na dwukolorowym tle z góry
Źródło: Pexels | Autor: Jakub Zerdzicki

Instalacja i konfiguracja brokera MQTT (Mosquitto) na Raspberry Pi

Instalacja Mosquitto z repozytoriów Raspberry Pi OS

Na Raspberry Pi OS Mosquitto dostępny jest bezpośrednio w repozytoriach, więc instalacja sprowadza się do kilku komend:

sudo apt update
sudo apt install mosquitto mosquitto-clients -y

Usługa startuje domyślnie jako daemon. Dla pewności można sprawdzić jej stan:

sudo systemctl status mosquitto

Jeżeli wszystko działa, broker nasłuchuje już na porcie 1883. Narzędzie mosquitto-clients przyda się później do lokalnego testowania (publikacja i subskrypcja wiadomości).

Podstawowa konfiguracja: port, autostart i proste testy

Domyślna konfiguracja jest rozrzucona po kilku plikach, ale najprościej dodać własny plik w katalogu /etc/mosquitto/conf.d. Na początek można ograniczyć się do minimalnego zestawu:

sudo nano /etc/mosquitto/conf.d/local.conf

Przykładowa zawartość:

listener 1883 0.0.0.0
allow_anonymous false
password_file /etc/mosquitto/passwd
persistence true
persistence_location /var/lib/mosquitto/
log_timestamp true

Anonimowy dostęp jest wygodny do testów, ale lepiej od razu przejść na prostą autoryzację. Plik z hasłami tworzy się poleceniem:

sudo mosquitto_passwd -c /etc/mosquitto/passwd iotuser

Następnie restart usługi:

sudo systemctl restart mosquitto

Do szybkiego sprawdzenia działania wystarczy para terminali. W jednym:

mosquitto_sub -h localhost -p 1883 -u iotuser -P TWOJE_HASLO -t test/topic

W drugim:

mosquitto_pub -h localhost -p 1883 -u iotuser -P TWOJE_HASLO -t test/topic -m "hello iot"

Jeżeli w pierwszym oknie pojawia się wiadomość, broker działa poprawnie. Port 1883 należy dodać do reguł firewalla, jeśli używany jest ufw:

sudo ufw allow 1883/tcp

Zabezpieczenie MQTT: hasła, TLS i dostęp tylko z zaufanych sieci

Hasła w pliku /etc/mosquitto/passwd są przechowywane w formie zahashowanej, ale dostęp do tego pliku i tak warto ograniczyć:

sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
sudo chmod 640 /etc/mosquitto/passwd

Jeżeli w sieci pojawiają się mniej zaufane urządzenia (np. tańsze smart-sprzęty z niejasnym firmware), rozsądnie jest odseparować brokera MQTT w osobnej podsieci lub VLAN-ie i zezwolić na dostęp tylko wybranym IP. Można to zrobić zarówno na routerze, jak i lokalnie, np. za pomocą dodatkowego firewalla lub reguł iptables.

Szyfrowanie TLS na potrzeby sieci domowej bywa przesadą, ale przy dostępie z zewnątrz (np. klient MQTT w telefonie łączący się przez Internet) jest już mocno wskazane. Konfiguracja TLS w Mosquitto wymaga:

  • certyfikatu serwera (certfile),
  • klucza prywatnego (keyfile),
  • opcjonalnie certyfikatu CA, jeśli korzysta się z własnego urzędu.

Fragment konfiguracji dla TLS mógłby wyglądać tak:

Konfiguracja Mosquitto z TLS na potrzeby zdalnego dostępu

Do połączeń z LAN-em certyfikaty często są zbędne, ale przy zdalnym dostępie (np. klient MQTT w telefonie, gdy jesteś poza domem) szyfrowanie usuwa z głowy sporo zmartwień. Najprostsza ścieżka to samopodpisany certyfikat lub własne mini-CA wygenerowane za pomocą openssl albo cfssl.

Przykład tworzenia samopodpisanego certyfikatu (wariant na szybko, do własnego użytku):

cd /etc/mosquitto/certs
sudo openssl req -new -x509 -days 365 
  -nodes -out server.crt -keyout server.key 
  -subj "/CN=twoje_domenowe_nazwe_lub_IP"
sudo chown mosquitto:mosquitto server.*
sudo chmod 640 server.key

Następnie nowy listener TLS w konfiguracji:

sudo nano /etc/mosquitto/conf.d/tls.conf
listener 8883 0.0.0.0
protocol mqtt
cafile /etc/ssl/certs/ca-certificates.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
allow_anonymous false
password_file /etc/mosquitto/passwd

Po restarcie:

sudo systemctl restart mosquitto

Połączenie testowe z lokalnego hosta (z pominięciem weryfikacji certyfikatu, tylko na czas testu):

mosquitto_sub -h localhost -p 8883 --cafile /etc/mosquitto/certs/server.crt 
  -u iotuser -P TWOJE_HASLO -t test/tls -d --insecure

Na telefonie lub laptopie zdalnym certyfikat server.crt można zaimportować jako zaufany, wtedy nie trzeba używać opcji typu --insecure.

Dobre praktyki przy planowaniu tematów i uprawnień MQTT

W małym domu i kilku urządzeniach kusi, żeby trzymać pełny dostęp dla wszystkich. Później przy kilkudziesięciu węzłach trudno się z tego wycofać. Lepiej od razu rozdzielić role, nawet w prosty sposób.

  • Osobne konta dla klas urządzeń – np. esp_sensory, esp_przekazniki, integracje, debug. Łatwiej potem zablokować lub zmienić hasło wybranej grupie.
  • Uprawnienia tylko do potrzebnych tematów – Mosquitto obsługuje ACL. Dla prostego podziału wystarczy plik /etc/mosquitto/acl z wpisami w stylu:
user esp_sensory
topic write dom/+/+/+/odczyt
topic read  dom/+/+/+/sterowanie

user esp_przekazniki
topic write dom/+/+/+/sterowanie
topic read  dom/+/+/+/odczyt

W pliku konfiguracyjnym brokera dodaje się wtedy:

acl_file /etc/mosquitto/acl

Takie ograniczenie powoduje, że przejęcie jednego modułu nie rozwala całego systemu – atakujący może mieszać tylko w tematach przypisanych jego klasie.

Home Assistant, Node-RED i spółka – wybór „mózgu” automatyki

Home Assistant na Raspberry Pi: warianty instalacji

Na Pi są w praktyce trzy podejścia do Home Assistanta. Różnią się wysiłkiem przy starcie i wygodą później.

  • Home Assistant OS (dawniej HassOS) – dedykowany system z wbudowanym Supervisor-em i Add-onami. Najbardziej „gotowe” rozwiązanie kosztem elastyczności hosta.
  • Home Assistant Container – Home Assistant w Dockerze na klasycznym Raspberry Pi OS. Daje kontrolę nad systemem i jednocześnie izolację.
  • Home Assistant Core – instalacja w Pythonie bez Dockera. Dobra edukacyjnie, ale wymaga więcej pilnowania zależności.

Dla kogoś, kto chce, żeby Pi było przede wszystkim hubem IoT, a nie serwerem „do wszystkiego”, najbardziej opłacalny czasowo jest Home Assistant OS. Wersja kontenerowa jest z kolei wygodna, jeśli na tym samym Pi mają działać inne, bardziej niestandardowe usługi.

Home Assistant OS na osobnej karcie vs obok Raspberry Pi OS

Prosty trik, który oszczędza nerwy: dwie karty microSD lub karta + SSD. Na jednej Raspberry Pi OS z Mosquitto, Node-RED i resztą, na drugiej obraz Home Assistant OS. Można wówczas:

  • przetestować Home Assistanta bez ruszania istniejącego systemu,
  • łatwo wrócić do „starego” środowiska po zmianie karty,
  • utrzymywać środowisko „produkcyjne” i „do eksperymentów” na zamianę.

Dla osoby liczącej koszty to po prostu druga karta za kilkadziesiąt złotych zamiast godzin reanimacji głównego systemu po nieudanym teście.

Instalacja Home Assistant Container na Raspberry Pi OS (wariant pragmatyczny)

Jeśli Mosquitto i kilka innych serwisów już działa na Raspberry Pi OS, dołożenie Home Assistanta w kontenerze jest dość proste. Zakładając, że Docker jest zainstalowany:

sudo mkdir -p /opt/homeassistant
sudo chown -R $USER:$USER /opt/homeassistant

Przykładowy docker-compose w katalogu /opt/homeassistant:

version: "3.9"
services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    volumes:
      - /opt/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    environment:
      - TZ=Europe/Warsaw
    restart: unless-stopped
    network_mode: host

Start:

cd /opt/homeassistant
docker compose up -d

Po chwili interfejs WWW będzie zwykle dostępny pod adresem http://IP_RPI:8123. Konfiguracja brokera MQTT w Home Assistant to w tym wariancie tylko podanie IP/portu i danych użytkownika skonfigurowanego wcześniej w Mosquitto.

Node-RED jako „klej” automatyki

Home Assistant świetnie spina integracje i scenariusze typowo „domowe”, ale Node-RED często wygrywa przy złożonych przepływach z wieloma warunkami, opóźnieniami, integracją z zewnętrznymi API oraz przy szybkich eksperymentach.

W lekkiej konfiguracji Node-RED można zainstalować bez Dockera:

sudo apt install -y nodered
sudo systemctl enable nodered
sudo systemctl start nodered

Interfejs WWW standardowo działa na porcie 1880: http://IP_RPI:1880. W pierwszych krokach wystarczy dodać:

  • node’y mqtt in i mqtt out spięte z lokalnym brokerem,
  • kilka prostych „przełączników” logicznych (switch, change, delay),
  • węzły debug do podglądu wiadomości.

Dobrym kompromisem jest używanie Home Assistanta do definicji encji, integracji z urządzeniami i prostych automatyzacji związanych z trybami życia domowników, a Node-RED do scenariuszy z logiką czasową (np. zaawansowane sterowanie ogrzewaniem i wentylacją czy „anty-panika” dla oświetlenia).

MQTT jako wspólny mianownik między Home Assistantem a Node-RED

Żeby uniknąć „pętli integracji”, rozsądnie jest ustalić prostą zasadę: wszystkie urządzenia komunikują się przez MQTT, a Home Assistant i Node-RED są równorzędnymi klientami brokera. Jeden system może publikować stany i komendy, drugi je subskrybuje i ewentualnie przetwarza dalej.

Przykładowy podział ról:

  • ESPHome/urządzenia → publikują odczyty do dom/...,
  • Home Assistant → mapuje te tematy na encje (czujniki, światła, przełączniki),
  • Node-RED → subskrybuje kluczowe tematy i w razie potrzeby wysyła sterowanie z powrotem do MQTT.

Taki układ pozwala w każdej chwili wyłączyć Node-RED bez zabijania podstawowych funkcji (Home Assistant wciąż obsłuży większość codziennych automatyzacji), a jednocześnie włączyć z powrotem zaawansowane przepływy, gdy pojawi się na to czas.

Komunikacja z urządzeniami: Wi-Fi, Zigbee, Z-Wave, przewodowe rozwiązania

Wi-Fi: najszybszy start, ale nie zawsze najlepszy wybór

Najtańsze i najprostsze na start są urządzenia na Wi-Fi. Moduły ESP8266/ESP32 kosztują grosze, a firmware takie jak ESPHome czy Tasmota pozwalają szybko włączyć je w domową automatyzację. Problem zaczyna się przy skali.

Domowe routery z marketu często padają na kolana przy kilkudziesięciu klientach Wi-Fi, szczególnie tanich IoT, które lubią tracić połączenie i łączyć się ponownie. Do tego większość urządzeń łączy się po 2,4 GHz, gdzie i tak jest tłok.

Kilka zasad, które oszczędzają później szukania „duchów” w automatyce:

  • wydzielona sieć (SSID) dla IoT na 2,4 GHz, z prostym WPA2 i ewentualnym VLAN-em,
  • solidniejszy punkt dostępowy lub router niż najtańszy „plastik” od dostawcy,
  • tam, gdzie się da – urządzenia stacjonarne (telewizor, NAS, Raspberry Pi) po kablu, żeby nie zabierały eteru Wi-Fi.

Na początek kilka Wi-Fi-owych czujników i przekaźników spokojnie wystarczy, ale przy planowaniu większej instalacji lepiej dołożyć Zigbee albo przewodowe magistrale.

Zigbee na Raspberry Pi: koordynator USB i Zigbee2MQTT

Zigbee jest energooszczędny i dobrze skaluje się przy kilkudziesięciu–stu urządzeniach. Kluczowe elementy to:

  • koordynator – najczęściej dongle USB (np. na układach CC2652, EFR32),
  • oprogramowanie – Zigbee2MQTT lub ZHA (Zigbee Home Automation) w Home Assistant.

Z punktu widzenia „budżetowego pragmatyka” Zigbee2MQTT ma dwie duże zalety: działa niezależnie od Home Assistanta, a komunikację wystawia po MQTT. Łatwiej potem wymienić zwykłe żarówki czy gniazdka na inne, nie zmieniając logiki w Home Assistant czy Node-RED.

Instalacja Zigbee2MQTT w lekkiej konfiguracji

Najprostszy wariant to docker na tym samym hostcie co Mosquitto:

sudo mkdir -p /opt/zigbee2mqtt
sudo chown -R $USER:$USER /opt/zigbee2mqtt
cd /opt/zigbee2mqtt

Plik configuration.yaml (minimalny przykład):

homeassistant: true
permit_join: true

mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
  user: iotuser
  password: TWOJE_HASLO

serial:
  port: /dev/ttyUSB0

W docker-compose:

version: "3.9"
services:
  zigbee2mqtt:
    image: koenkk/zigbee2mqtt
    container_name: zigbee2mqtt
    restart: unless-stopped
    volumes:
      - /opt/zigbee2mqtt:/app/data
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    environment:
      - TZ=Europe/Warsaw
    network_mode: host

Po uruchomieniu:

docker compose up -d

Interfejs WWW Zigbee2MQTT zwykle jest dostępny na porcie 8080. W pierwszej fazie parowania (permit_join: true) można dodać wszystkie czujniki i żarówki, potem lepiej przełączyć na false, żeby nikt „z sąsiedztwa” nie dołączył przypadkiem do sieci.

Z-Wave: kiedy ma sens i jak to spiąć z Pi

Z-Wave jest droższy niż Zigbee, ale pojawia się często w gotowych instalacjach (moduły w puszkach, sterowniki rolet, włączniki). Jeśli w domu już jest Z-Wave, na Raspberry Pi wystarczy kontroler USB i integracja Z-Wave JS (jako add-on Home Assistanta lub osobny kontener).

Wariant w kontenerze (z Z-Wave JS UI) jest podobny do Zigbee2MQTT: osobna usługa widząca port USB i dogadująca się z Home Assistantem. Jeśli dopiero ktoś planuje instalację od zera, a budżet ma znaczenie, zwykle łatwiej oprzeć się na Zigbee i ESP/Modbus niż inwestować w pełne Z-Wave.

Przewodowe magistrale: Modbus, RS-485, 1-Wire

Jeśli w czasie remontu lub budowy da się pociągnąć dodatkowy przewód, przewodowe czujniki i moduły są często tańsze i stabilniejsze niż ich bezprzewodowe odpowiedniki.

  • RS-485/Modbus RTU – świetnie nadaje się do rozdzielni, kotłowni, instalacji ogrzewania podłogowego. Do Raspberry Pi dodaje się tani konwerter USB–RS485 i używa np. mbusd lub integracji Modbus w Home Assistant.
  • 1-Wire – do prostych czujników temperatury (DS18B20). Kilka żył przewodu i można zasilić oraz odpytywać sporo czujników z jednego GPIO lub z konwertera.

Prosty przykład integracji Modbus w Home Assistant (odczyt temperatury z rejestru):

Najczęściej zadawane pytania (FAQ)

Czy Raspberry Pi nadaje się jako centrum smart home i kiedy to ma sens?

Raspberry Pi ma sens jako centrum IoT, gdy chcesz połączyć wiele urządzeń różnych producentów w jednym miejscu, uniknąć abonamentów i mieć nad nimi pełną kontrolę. Jeden mini komputer może zastąpić kilka osobnych bramek chmurowych, każdą z własną aplikacją.

Najlepiej sprawdza się w mieszkaniu, domu jednorodzinnym i małym biurze, gdzie liczba urządzeń rośnie, a scenariusze automatyzacji stają się coraz bardziej złożone. Nie jest to jednak „podłącz i zapomnij” – wymaga minimum opieki (aktualizacje, backupy, kontrola nośnika danych).

Jaki model Raspberry Pi wybrać pod Home Assistant i centrum IoT?

Dla typowego domu lub mieszkania najbardziej opłacalny jest Raspberry Pi 4 z 4 GB RAM i dyskiem SSD na USB 3.0. Taki zestaw spokojnie obsłuży Home Assistanta, brokera MQTT i kilka dodatkowych usług (np. Node-RED, prosty monitoring).

Raspberry Pi 3 (3B+) wystarczy do prostych instalacji z kilkunastoma urządzeniami i lekkim Home Assistantem. Raspberry Pi 5 ma sens dopiero wtedy, gdy planujesz sporo ciężkich usług równolegle (rozbudowana baza danych, Grafana, monitoring) – w przeciętnym mieszkaniu to zwykle zbędny wydatek.

Kiedy lepiej kupić gotowy hub IoT zamiast Raspberry Pi?

Gotowy hub jest lepszym wyborem, gdy:

  • chcesz tylko sterować kilkoma żarówkami lub gniazdkami z aplikacji,
  • nie masz czasu, chęci ani podstawowej wiedzy z Linuxa i sieci,
  • oczekujesz, że wszystko będzie aktualizować się samo bez Twojej ingerencji.

Raspberry Pi wymaga minimum administracji: konfiguracji, aktualizacji, backupów i sporadycznej diagnostyki. Jeśli to brzmi jak kłopot, a potrzeby są proste, taniej i szybciej będzie kupić porządny hub jednego producenta i nie rozbudowywać całości na siłę.

Czy Raspberry Pi jest wystarczająco niezawodne do automatyki domowej?

Do typowej automatyki domowej – oświetlenie, rolety, czujniki, powiadomienia – Raspberry Pi jest wystarczająco stabilne, pod warunkiem rozsądnej konfiguracji. Kluczowe jest:

  • użycie dysku SSD zamiast taniej karty SD,
  • dobre zasilanie,
  • regularne kopie zapasowe.

Nie jest to jednak sprzęt przemysłowy. Nie powinien być jedynym, krytycznym elementem systemów typu kotłownia bez żadnego backupu, pełny system alarmowy czy monitoring bezpieczeństwa pracowników. W takich przypadkach lepiej, by Pi pełniło rolę „nadbudówki”, a nie jedynej centralki.

Ile RAM potrzeba w Raspberry Pi do IoT i Home Assistanta?

Do prostego centrum IoT (kilka–kilkanaście urządzeń, broker MQTT, Home Assistant bez ciężkich dodatków) wystarcza 2 GB RAM. Jednak z punktu widzenia wygody i zapasu mocy dużo rozsądniejsza jest konfiguracja 4 GB RAM – różnica w cenie jest niewielka, a unikniesz duszenia się systemu po rozbudowie automatyzacji.

Wersja 8 GB ma sens głównie wtedy, gdy planujesz:

  • wiele integracji i dziesiątki urządzeń,
  • intensywne logowanie do bazy danych,
  • Grafanę, dodatkowe usługi analityczne lub kontenery Dockera „na bogato”.

W przeciętnym mieszkaniu 4 GB to optymalny punkt „efekt vs koszt”.

Czy Raspberry Pi Zero nadaje się na centralny hub IoT?

Raspberry Pi Zero W / Zero 2 W lepiej traktować jako tanie węzły pomiarowe lub proste urządzenia końcowe (czujniki, mini-logger danych, prosty moduł z kamerą). Jako główne centrum IoT z Home Assistantem lub rozbudowanym MQTT zazwyczaj szybko okaże się niewydajne i niestabilne.

Praktyczniejszy scenariusz to: jedno Raspberry Pi 3/4/5 jako centralny hub, a Zero używane lokalnie tam, gdzie nie ma sensu ciągnąć kabli czy stawiać droższego sprzętu.

Jakie oprogramowanie warto zainstalować na Raspberry Pi do IoT?

Najczęstszy i najbardziej opłacalny zestaw na start to:

  • Home Assistant – jako główne centrum automatyki i interfejs użytkownika,
  • broker MQTT (np. Mosquitto) – do komunikacji z czujnikami i modułami opartymi o ESP,
  • Node-RED – jeśli lubisz budować logikę przepływów „z klocków”.

W miarę rozwoju projektu możesz dołożyć bazę danych i Grafanę do ładnych wykresów lub dodatkowe usługi. Lepiej jednak startować od minimalnego zestawu i rozbudowywać go stopniowo, niż od razu instalować wszystko, co się da, a potem walczyć z wydajnością.

Opracowano na podstawie

  • Getting started with Raspberry Pi. Raspberry Pi Foundation (2023) – Oficjalne wprowadzenie, modele Raspberry Pi, typowe zastosowania
  • Raspberry Pi Documentation – Hardware. Raspberry Pi Ltd (2023) – Parametry techniczne modeli Pi 3, 4, 5, pobór mocy, porty
  • Home Assistant Documentation. Nabu Casa (2024) – Rola Home Assistant jako huba IoT, wymagania sprzętowe, scenariusze użycia