Instalace Mosquitto ze zdrojových kódů na Raspi a FreeBSD

V tomto článku si popíšeme jak Mosquitto nainstalovat na Raspberry Pi přímo ze zdrojových kódů. V závěru se v poznámce zmíníme, jak přidat podporu Websockets na FreeBSD do Mosquitta instaloveného z portů.

Instalace na Raspberry Pi

Článek ve své části pro Raspi vychází z textu  Mike Karlinera.

Budeme popisovat instalaci verze mosquitto 1.4.4 a budeme jej kompilovat s podporou websockets verze 1.4. (stav březen 2016). Následující řádky předpokládají, že umíte pracovat v příkazovém řádku unixového systému a používat balíčkovací systém debianu.

Příprava systému

V případě, že jste mosquitto instalovali z repozitáře, tak jej ze systému odstraňte.
A před začátkem kompilace nového software si svůj systém aktualizujte:

sudo apt-get update

a nainstalujte balíčky potřebné ke kompilaci:

sudo apt-get install libssl-dev
sudo apt-get install cmake libc-ares-dev uuid-dev daemon

Vytvořte si adresář v němž budete kompilovat knihovnu websockets a mosquitto, např. ~/src/:

mkdir ~/src/

a stáhněte si do něj zdroje používaného software:

cd ~/src/
wget http://mosquitto.org/files/source/mosquitto-1.4.4.tar.gz
wget http://git.libwebsockets.org/cgi-bin/cgit/libwebsockets/snapshot/libwebsockets-1.4-chrome43-firefox-36.tar.gz

Vlastní kompilace a instalace zkompilovaného software

Nejprve přeložíme a nainstalujeme knihovnu websockets:

cd ~/src/
tar xvzf libwebsockets-1.4-chrome43-firefox-36.tar.gz
cd libwebsockets-1.4-chrome43-firefox-36/
mkdir build
cd build/
cmake ..
sudo make install
sudo ldconfig

poté rozbalíme zdrojové kódy MQTT brokera:

cd ~/src/
tar xvzf mosquitto-1.4.4.tar.gz

přepneme se do vytovřeného adresáře se zdrojovými kódy:

cd mosquitto-1.4.4/

a v souboru config.mk zapneme možnost užívání websockets tak, že řádek:

WITH_WEBSOCKETS:=no

změníme na:

WITH_WEBSOCKETS:=yes

Poté software přeložíme a nainstalujeme:

make
sudo make install
sudo cp mosquitto.conf /etc/mosquitto/

Úprava konfigurace

Nyní upravíme konfiguraci v souboru /etc/mosquitto/mosquitto.conf, tak aby server poslouchal jak na standardním MQTT portu tak na nestandardním portu, kde bude poskytovat připojení pomocí websockets.

Upravíme řádek v úvodní části konfigurace – nastavíme jméno uživatele, pod kterým broker poběží v sekci General configuration:

user mosquitto

v sekci Default listener nastavíme port pro MQTT:

# Port to use for the default listener.
port 1883

a připojíme v sekci Extra listeners následující konfiguraci:

listener 8813
protocol websockets

Přidání uživatele

Přidáme uživatele mosquitto do systému:

sudo adduser mosquitto

Spuštění brokeru

A v závěru spustíme broker z příkazové řádky:

 /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Tím nám běží čerstvě zkompilovaný mosquitto broker s podporou websockets. Jak jej používat si ukážeme v nějakém dalším článku.

Instalace na FreeBSD s podporou websockets

Na FreeBSD je v portech aktuální mosquitto avšak bez podpory websockets (zřejmě kvůli licenci knihovny websockets).
Knihovnu websockets nejprve nainstalujete stejně jako na raspi s tím, že předpokládáme, že máte nainstalovaný port cmake. Tedy:

wget http://git.libwebsockets.org/cgi-bin/cgit/libwebsockets/snapshot/libwebsockets-1.4-chrome43-firefox-36.tar.gz
tar xvzf libwebsockets-1.4-chrome43-firefox-36.tar.gz
cd libwebsockets-1.4-chrome43-firefox-36/
mkdir build
cd build/
cmake ..
make install
/etc/rc.d/ldconfig start

Poté přejdeme do portu net/mosquitto:

cd /usr/port/net/mosquitto/

a do souboru /usr/port/net/mosquitto/Makefile doplníme za řádek USERS následující konfiguraci:

CMAKE_ARGS=     -DWITH_THREADING:BOOL=OFF -DWITH_WEBSOCKETS=ON

a poté standardně port přeložíme a nainstalujeme:

 make all install clean

Konfiguraci k MQTT brokeru poté nalezneme v souboru /usr/local/mosquitto/mosquitto.conf, ve kterém provedeme stejné změny, jako v případě raspi.

  1. Komáři se ženili aneb něco o MQTT
  2. Instalace MQTT brokeru Mosquitto na Raspi a FreeBSD
  3. Komár (mosquitto) na Raspi
  4. ESP8266 a Arduino IDE
  5. ESP8266 a použití v praxi
  6. ESP8266 jako teplotní čidlo
  7. ESP8266 jako IoT display
Příspěvek byl publikován v rubrice IoT, Raspberry Pi se štítky , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.