Arduino csatlakoztatása Mosquitto MQTT szerverhez

Az MQTT (Message Queue Telemetry Transport) egy ISO szabvány (ISO/IEC PRF 20922), publish-subscribe alapú pehelysúlyú üzenetküldő protokoll. Az MQTT protokollnak alacsony a sávszélesség igénye. Szükséges hozzá egy broker. A broker feladata az üzenetek továbbküldése a klienseknek, téma alapján. Azaz a kliensek feliratkoznak különböző témákra, majd a broker a témákba érkezett üzeneteket továbbítja a feliratkozott klienseknek.

MQTT broker

A Mosquitto nevű brokert választottam. Készítettem neki egy docker dobozt, erről bővebb információ GitHub repositoryban található.

Arduino szenzor

Egy BMP180 tipusú szenzort használok, ez hőmérsékletet és páratartalmat mér. Egy NodeMCU boardhoz van csatlakoztatva, ami Arduino kompatibilis.
A program csatlakozik a WiFi hálózathoz, majd az MQTT brokerhez, 5 másodpercenként elvégzi a méréseket és az adatokat beküldi a megfelelő témákba. Feliratkozik a demo/led nevű témára, ha oda 1-es érkezik, akkor bekapcsolja a ledjét, 0 esetén meg ki. A mért adatok megtekinthetők böngésző segítségével és elérhetők jsonben is.

A PubSubClient library segítségével könnyen lehet arduino kódból MQTT brokerhez csatlakozni, elintézi az üzenetek küldését és fogadását is.
A firmware forrása letölthető innen.



Kliensek

Konzolból a mosquitto_sub parancs segítségével lehet ellenőrizni, hogy a szenzor küldi-e az adatokat, például a következő parancs:

# mosquitto_sub -h 192.168.0.11 -q 2 -t demo/# -v

csatlakozik az MQTT brokerhez, feliratkozik a demo és az alatta lévő csatornákra.

Látványosabb az MQTT Dash nevű androidon futó program. Szebben jeleníti meg a kapott adatokat, fűzhetünk az adatok elé, mögé szövegeket. Létre lehet hozni gombot amire kattintva elküldi egy üzenetet a beállított csatornára.

Végszó

Mint látható egyszerűen és kis erőforrással hozhatunk létre egy rendszert ami különböző adatokat mér és azokat – akár távol a mérési ponttól – megjeleníti. Ez jó alapja lehet egy okos otthonnak.

Kategória: Elektronika, Programozás Címke: , , ,
Top