Instalace Mosquitto MQTT Broker na Raspberry Pi

02.10.2022 Raspberry Pi #raspberrypi #mqtt

Tento tutoriál ukazuje, jak nainstalovat Mosquitto Broker pro komunikaci MQTT na desku Raspberry Pi.


Co je to MQTT Broker?

MQTT je zkratka pro  Message Queuing  Telemetry  Transport. MQTT je jednoduchý protokol pro zasílání zpráv navržený pro omezená zařízení s malou šířkou pásma. Je to tedy perfektní řešení pro výměnu dat mezi více zařízeními IoT.

Komunikace MQTT funguje jako systém publikování a odběru. Zařízení publikují zprávy na konkrétní téma. Zprávu obdrží všechna zařízení, která jsou přihlášena k odběru tohoto tématu.

Broker MQTT je zodpovědný za příjem všech zpráv, filtrování zpráv, rozhodování o tom, kdo o ně má zájem, a následné zveřejnění zprávy všem přihlášeným klientům.

mqtt_broker (1) 

Existuje několik brokerů, které můžete využít. V projektech domácí automatizace používáme Mosquitto Broker nainstalovaný na Raspberry Pi.

eclipse-mosquitto-logo 

Podrobnější vysvětlení komunikace MQTT najdete v tomto článku: Co je to MQTT a jak funguje.

Předpoklady

Než budete pokračovat v tomto návodu

Instalace Mosquitto Broker na Raspberry Pi OS

Po přípravě desky Raspberry Pi pomocí OS Raspberry Pi můžete pokračovat v tomto návodu. 

Pojďme nainstalovat Mosquitto Broker.

1) Otevřete nové okno terminálu Raspberry Pi. Pokud používáte Raspberry Pi bez monitoru, podívejte se na tento návod, kde se dozvíte, jak vytvořit SSH spojení mezi vaším počítačem a Raspberry Pi.

raspberry-pi-terminal-window 

2) Spusťte následující příkaz pro upgrade a aktualizaci systému:

sudo apt update && sudo apt upgrade

3) Stiskněte Y a Enter. Aktualizace a upgrade bude nějakou dobu trvat.

4) Chcete-li nainstalovat Mosquitto Broker, zadejte následující příkazy:

sudo apt install -y mosquitto mosquitto-clients

5) Aby se Mosquitto automaticky spustilo při startu Raspberry Pi, musíte spustit následující příkaz (to znamená, že Mosquitto broker se automaticky spustí při spuštění Raspberry Pi):

sudo systemctl enable mosquitto.service

6) Nyní otestujte instalaci spuštěním následujícího příkazu:

mosquitto -v

Tím se vrátí verze Mosquitto, která aktuálně běží ve vašem Raspberry Pi. Bude to 2.0.11 nebo vyšší.

mosquitto-check-installed-version  

Zobrazí se následující zpráva: "Starting in local only mode. Připojení bude možné pouze z klientů běžících na tomto počítači. Vytvořte konfigurační soubor, který definuje posluchače pro umožnění vzdáleného přístupu."

To znamená, že ve výchozím nastavení nemůžete komunikovat s brokerem Mosquitto z jiného zařízení (kromě vašeho Raspberry Pi). To platí pro Mosquitto verze 2. Další informace o tomto tématu v dokumentaci Mosquitto.

Ve verzi Mosquitto 2.0 a vyšší musíte před připojením klientů explicitně vybrat možnosti ověření. V dřívějších verzích je výchozí nastavení povolit klientům připojení bez ověřování.

Povolit vzdálený přístup/ověření

Pro povolení vzdáleného přístupu, abychom mohli komunikovat s ostatními zařízeními IoT, musíme upravit/vytvořit konfigurační soubor.

V tomto tutoriálu se budeme zabývat:

Vyberte sekci, která je pro váš scénář vhodnější. Doporučujeme také nahlédnout do dokumentace pro více podrobností.

Mosquitto Broker - povolení vzdáleného přístupu (bez ověřování)

1) Spuštěním následujícího příkazu otevřete soubor mosquitto.conf.

sudo nano /etc/mosquitto/mosquitto.conf

2) Přejděte na konec souboru pomocí kláves se šipkami a vložte následující dva řádky:

listener 1883
allow_anonymous true

mosquitto-configuration-file 

3) Poté stiskněte CTRL-X pro ukončení a uložení souboru. Stiskněte Y a  Enter.
 
4) Restartujte Mosquitto, aby se změny projevily.

sudo systemctl restart mosquitto

Mosquitto Broker - povolení vzdáleného přístupu (ověření: uživatel a heslo)

Ke svému brokerovi MQTT můžete přidat ověření uživatele/hesla.

1) Spusťte následující příkaz, ale nahraďte YOUR_USERNAME s uživatelským jménem, ​​které chcete používat:

sudo mosquitto_passwd -c /etc/mosquitto/passwd YOUR_USERNAME

Budu používat uživatele MQTT test, takže příkaz spustím následovně:

sudo mosquitto_passwd -c /etc/mosquitto/passwd test

Když spustíte předchozí příkaz s požadovaným uživatelským jménem, ​​budete požádáni o zadání hesla. Při zadávání hesla se nebudou zobrazovat žádné znaky. Zadejte heslo a zapamatujte si kombinaci uživatel/heslo, budete je potřebovat později ve svých projektech, abyste se mohli spojit s brokerem.

Tento předchozí příkaz vytvoří soubor hesel s názvem passwd v adresáři /etc/mosquitto.

Nyní musíme upravit konfigurační soubor mosquito tak, aby umožňoval ověření pouze pomocí uživatelského jména a hesla, které jsme definovali.

2) Spusťte následující příkaz pro úpravu konfiguračního souboru:

sudo nano /etc/mosquitto/mosquitto.conf

3) Přidejte následující řádek na začátek souboru (ujistěte se, že je na začátku souboru, jinak to nebude fungovat):

per_listener_settings true

4) Přidejte následující tři řádky, abyste umožnili připojení ověřeným uživatelům a sdělte Mosquitto, kde se nachází soubor s uživatelským jménem/heslem.

allow_anonymous false
listener 1883
password_file /etc/mosquitto/passwd

Váš konfigurační soubor bude vypadat následovně (nové řádky jsou tučně):

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

per_listener_settings true

pid_file /run/mosquitto/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d
allow_anonymous false 
listener 1883  
password_file /etc/mosquitto/passwd

mosquitto-broker-config-file-authentication-user-pass 

5) Stiskněte CTRL-X, poté Y a nakonec stiskněte Enter pro ukončení a uložení změn.

6) Restartujte Mosquitto, aby se změny projevily.

sudo systemctl restart mosquitto

Chcete-li zkontrolovat, zda Mosquitto skutečně běží, můžete spustit následující příkaz:

sudo systemctl status mosquitto

Nyní máte povoleno ověřování pomocí uživatelského jména a hesla. Pamatujte, že pokaždé, když budete chtít komunikovat s brokerem, budete muset zadat uživatelské jméno a heslo.

Přidat další uživatele/změnit heslo

Chcete-li přidat další uživatele do existujícího souboru s hesly nebo změnit heslo pro stávajícího uživatele, vynechejte argument -c:

mosquitto_passwd <password file> <username>

Například, pokud chci změnit heslo pro uživatele test s ohledem na to, že byl zavolán soubor hesel, který jsme vytvořili passwd, příkaz bude následující:

sudo mosquitto_passwd /etc/mosquitto/passwd test

IP adresa Raspberry Pi

Abyste mohli Mosquitto broker používat později ve svých projektech, budete potřebovat znát IP adresu Raspberry Pi. Chcete-li získat svou IP adresu Raspberry Pi, zadejte v okně terminálu Pi následující příkaz:

hostname -I


raspberr-pi-ip-address 

V našem případě je IP adresa Raspberry Pi 192.168.1.144. Uložte si svou IP adresu Raspberry Pi, protože ji budete potřebovat v budoucích projektech.

Testování Mosquitto Broker a MQTT Client

Po instalaci zprostředkovatele Mosquitto byste měli instalaci otestovat. Můžete postupovat podle následujícího návodu:

Závěr

Zprostředkovatel MQTT je nezbytný, pokud chcete používat protokol MQTT v projektech IoT. Broker MQTT přijímá všechny zprávy MQTT a předává je všem přihlášeným klientům.

Literatura:

Install Mosquitto MQTT Broker on Raspberry Pi. Random Nerd Tutorials [online]. RandomNerdTutorials.com, 2022 [cit. 2022-09-28]. Dostupné z: https://randomnerdtutorials.com/how-to-install-mosquitto-broker-on-raspberry-pi/