Mosquitto MQTT Server je zprostředkovatel zpráv, který pracuje přes protokol MQTT. MQTT je lehký protokol pro zasílání zpráv, který je standardem ISO pro použití nad protokolem TCP/IP. Většinou se používá pro komunikaci se zařízeními internetu věcí. Chystáme se nainstalovat Mosquitto na server Ubuntu 16.04 a budeme odesílat zprávy z MQTT-spy softwaru. Mosquitto je projekt Eclipse a je distribuován pod licencí EDL. Takže začneme.
Kompilace serveru Mosquitto MQTT ze zdroje
Chcete-li nainstalovat komár, musíme provést následující kroky. Nejprve aktualizujte seznam zdrojů a získejte závislosti
apt update
apt-get install build-essential libwrap0-dev libssl-dev libc-ares-dev uuid-dev xsltproc
Přidejte uživatele mosquitto, protože ve výchozím nastavení běží jako non-root.
adduser mosquitto
Pro pohodlí přidáme tomuto uživateli práva sudo, protože zbytek instalačního procesu provedeme jako tento uživatel
usermod -aG sudo mosquitto
Poté se přihlásíme jako tento uživatel a cd do jeho domovského adresáře
su mosquitto
cd
Dále si stáhneme zdrojový kód Mosquitto, nejnovější verze je v době psaní článku 1.4.9, ale doporučuji vám zkontrolovat stránku pro stahování, abyste zjistili, zda není nová verze. Pojďme si tedy stáhnout nejnovější verzi
wget https://mosquitto.org/files/source/mosquitto-1.4.9.tar.gz
Rozbalíme jej a cd do adresáře
tar xvzf mosquitto-1.4.9.tar.gz
cd mosquitto-1.4.9/
A pak zkompilujeme a nainstalujeme software
make && sudo make install
Konfigurace serveru Mosquitto MQTT
Po dokončení instalace musíme vytvořit heslo pro nového uživatele.
sudo mosquitto_passwd -c /etc/mosquitto/pwfile mqtt-spy
Budete vyzváni k vytvoření hesla pro nového uživatele mqtt-spy, které použijeme pro připojení z klienta. To se liší od uživatele komára, tedy systémového uživatele pro provoz komárového serveru. Tomuto uživateli komára musíme přidat oprávnění do všech relevantních adresářů
sudo mkdir /var/lib/mosquitto/
sudo chown -R mosquitto:mosquitto /var/lib/mosquitto/
Dále musíme vytvořit konfigurační soubor pro Mosquitto MQTT Server, takže k vytvoření nového souboru použijte nano
sudo nano /etc/mosquitto/mosquitto.conf
Zde můžete vložit toto
persistence true
persistence_location /var/lib/mosquitto/
persistence_file mosquitto.db
log_dest syslog
log_dest stdout
log_dest topic
log_type error
log_type warning
log_type notice
log_type information
connection_messages true
log_timestamp true
allow_anonymous false
password_file /etc/mosquitto/pwfile
Konfigurace se zdá dlouhá, ale přidali jsme podrobnější protokoly a soubor s hesly.
Po uložení konfigurace spustíme ldconfig
sudo ldconfig
Pojďme přidat soubor systemd unit
sudo nano /etc/systemd/system/mosquitto.service
Vložte toto:
[Unit]
Description=Insite MQTT Broker
[Service]
ExecStart=/usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=always
[Install]
WantedBy=multi-user.target
Spusťte službu
sudo systemctl start mosquitto.service
A zkontrolujte jeho stav
systemctl status mosquitto.service
Chcete-li jej spustit při spouštění, proveďte tento příkaz
sudo systemctl enable mosquitto.service
Nastavení MQTT-Spy a připojení
MQTT-Spy je Java klient, který budeme používat pro připojení k MQTT serveru. Můžete jej získat z githubu, ale musíte mít nainstalovaný Oracle JDK. NEFUNGUJE s OpenJDK. První věc, kterou musíte udělat po spuštění MQTT-spy, je vytvořit nové připojení. Přidáte IP svého serveru a výchozí port 1883.
Poté přidáte heslo a uživatelské jméno, které jsme vytvořili dříve, v mém případě je to mqtt-spy a heslo je heslo.
Poté můžeme otevřít okno terminálu na serveru a zadat následující příkaz
mosquitto_sub -v -t 'linoxide/topic' -u mqtt-spy -P password
Pro vysvětlení parametrů, -v je pro podrobnost, -t je pro téma následované tématem v uvozovkách, -u je pro uživatele a -P je heslo. Po zadání tohoto příkazu se zdá, že se zasekne, ale pak musíme použít MQTT-spy k vytvoření nového tématu a odeslání zprávy do stejného tématu, jako na obrázku níže.
Závěr
Úspěšně jsme nainstalovali server Mosquitto MQTT, který vám umožňuje mít síť připojených zařízení IoT přes protokol MQTT 3.1. Nainstalovali jsme jej na Ubuntu na klasickém x86 PC, které většina lidí používá pro účely vývoje a učení. Pro skutečný IoT byste chtěli zařízení ARM. To je pro tento článek vše, děkuji za přečtení.