logo MQTT

Internet věcí vyžaduje obrovskou škálovatelnost v síťovém prostoru, aby zvládl nárůst zařízení. IETF 6LoWPAN se používá k připojení zařízení k IP sítím. S miliardami zařízení, které jsou přidávány do internetového prostoru, hraje IPv6 hlavní roli při řešení škálovatelnosti síťové vrstvy. CoAP od IETF, ZeroMQ a MQTT poskytly odlehčený přenos dat. „MQ“ v „MQTT“ pochází z produktové řady IBM MQ řady zpráv: (Message Queuing Telemetry Transport) Zdroj: Wikipedia

MQTT je tedy jednoduchý centralizovaný protokol sloužící nejčastěji pro použití s nejrůznějšími senzory IoT (Internetu věcí). Lze jej však využít i pro přenos mnoha jiných, například telemetrických dat. Základem je princip typu zveřejnit/odebírat (publish/subscribe). Zařízení s funkcí zveřejnit odesílají zprávy zprostředkovateli (broker), který na základě přihlášených odběrů provede třídění a přeposlání uživatelům. Klient-uživatel může zároveň publikovat (publish) i odebírat (subscribe).

Připravujeme samostatnou stránku zdrojů 🡒 github.com/octopusengine/octopusLAB_mqtt


🡒 https://github.com/micropython/micropython-lib/tree/master/umqtt.simple

🡒 https://github.com/micropython/micropython-lib/tree/master/umqtt.robust

Ukázky:

# --- example_pub.py ---
from umqtt.simple import MQTTClient

# Test reception e.g. with:
# mosquitto_sub -t foo_topic

def main(server="localhost"):
    c = MQTTClient("umqtt_client", server)
    c.connect()
    c.publish(b"foo_topic", b"hello")
    c.disconnect()

if __name__ == "__main__":
    main()
# --- example_sub.py ---
import time
from umqtt.simple import MQTTClient

# Publish test messages e.g. with:
# mosquitto_pub -t foo_topic -m hello

# Received messages from subscriptions will be delivered to this callback
def sub_cb(topic, msg):
    print((topic, msg))

def main(server="localhost"):
    c = MQTTClient("umqtt_client", server)
    c.set_callback(sub_cb)
    c.connect()
    c.subscribe(b"foo_topic")
    while True:
        if True:
            # Blocking wait for message
            c.wait_msg()
        else:
            # Non-blocking wait for message
            c.check_msg()
            # Then need to sleep to avoid 100% CPU usage (in a real
            # app other useful actions would be performed instead)
            time.sleep(1)

    c.disconnect()

if __name__ == "__main__":
    main()

Mosquito - Raspberry Pi MQTT broker

Instalce:

sudo apt-get install mosquitto mosquitto-clients

Ukázka: