Komár (mosquitto) na Raspi

Mosquitto

komarMQTT
Mosquitto je malý MQTT broker, který lze bez větších problémů provozovat na malých zařízeních jako je, např. i Raspberry Pi. Problém se současnou verzi raspbianu (debianu na raspi) je ten, že jeho repozitáře obsahují pouze velice zastaralou verzi MQTT brokera (serveru) mosquitto. V článku instalace mosquitto ze zdrojových kódů popisujeme jak mosquitto na raspi a FreeBSD nainstalovat přímo ze zdrojových kódů.

V tomto článku si ukážeme další cestu instalace podpořenou přímo tvůrci tohoto software.

V další části budeme předpokládat, že používáme raspbian verze jessie. Verzi vašeho operačního systému raspbian(debian) zjistíte v příkazové řádce systému takto:

cat /etc/os-release

Tento příkaz vám může vypsat text podobný tomuto:

PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Z kterého již lehce zjistíte verzi systému. V případně, že používáte starší verzi raspbianu, tedy wheezy, mosquitto podle uvedeného návodu nainstalujete ovšem bez podpory websockets, jejiž knihovna pro wheezy není v hlavních repozitářích této verze a tak jí vývojáři nepodporují. Na verzi jessie je mosquitto přeloženo s podporou websocketů. Vždy však, jak na wheezy tak na jessie, můžete instalovat broker přímo ze zdrojů a knihovnu websockets si ručně dokompilovat tak, jak popsáno v našem článku Instalace na raspi ze zdrojových kódů

Úprava zdrojů balíčkovacího systému

Nejprve musíme systému pro správu software předat a potvrdit GPG veřejný klíč k repozitáři s balíčky mosquitto:

# stáhneme GPG klíč
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
# nahrajeme do správy balíčků
sudo apt-key add mosquitto-repo.gpg.key

Dále vložíme seznam odkazů pro naši verzi operačního systému rasbian (tedy musíme vědět zda máme jessie či wheezy) na tento repozitář do adresáře /etc/apt/sources.list.d/:

 cd /etc/apt/sources.list.d/
# ZVOLTE SEZNAM ZDROJŮ DLE VERZE VAŠEHO SYSTÉMU
# Následuje verze pro JESSIE
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
# následuje verze pro WHEEZY - ZVOLTE POUZE JEDEN SEZNAM
# sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

Upgrade informací v systému správy software apt

Nyní musíme obnovit databázi instalovatelných balíčků pro systém apt:

 sudo apt-get update

Instalace brokeru mosquitto z adresáře tvůrců

Nejprve zjistíme zda a jaké balíčky projektu mosquitto jsou nám k dispozici:

 sudo apt-cache search mosquitto

a poté broker nainstalujeme

sudo apt-get install mosquitto

V případě, že už máte mosquitto nainstalovaný z oficiálního repozitáře vašeho systému stačí po apt-get update zadat příkaz:

sudo apt-get dist-upgrade

Konfigurace

Když nyní zkusíme mosquitto nastartovat pomocí:

sudo /etc/init.d/mosquitto start

Můžeme se přesvědčit, že běží a používá defaultního MQTT portu 1883. Přesvědčit se můžete např. příkazem:

sudo ss -a -p | grep mosq

který by měl vypsat následující výstup:

 tcp    LISTEN     0      100                  *:1883                  *:*        users:(("mosquitto",pid=4470,fd=3))

tedy vidíme TCP port 1883, na kterém mosquitto poslouchá.

Nyní v adresáři /etc/mosquitto/conf.d vytvoříme konfigurační doplněk, ve kterém mosquitto dokonfigurujeme tak, aby poslouchal i na portu např. 8813 jednoduše tak, že do nového souboru /etc/mosquitto/conf.d/websockets.conf vložíme následující řádky:

# default port for MQTT protocol
port 1883
# adding websockets listener
listener 8813
protocol websockets

Nyní MQTT broker mosquitto běží na našem Raspi jak na standardním portu TCP 1883 tak s podporou websockets na 8813.

A na závěr zbývá nastavit automatický start mosquitto při startu systému:

sudo update-rc.d mosquitto defaults
  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