Acest laborator introduce utilizarea protocolului MQTT pentru a transmite date de la un Raspberry Pi Pico catre un broker MQTT configurat pe un laptop. Veti invata cum sa configurati un broker MQTT pe Windows, sa trimiteti un mesaj simplu folosind MQTT si veti finaliza laboratorul cu doua taskuri:
1. Ce este MQTT?
MQTT (Message Queuing Telemetry Transport) este un protocol de comunicatie simplu si eficient, folosit in principal in aplicatiile Internet of Things (IoT) pentru a transmite mesaje intre dispozitive si servere. Protocolul MQTT este bazat pe un model publish-subscribe (publicare-abonare), unde un broker (server) gestioneaza mesajele intre clientul care publica si clientul care se aboneaza la un anumit canal de comunicatie, numit topic.
Componentele principale ale MQTT:
Fluxul de Conexiune MQTT:
Pas 1: Instalare Mosquitto
Pas 2: Configurare Mosquitto pentru a permite conexiuni externe
Pas 3: Porneste Mosquitto
In acest exemplu, vei scrie un program pe Raspberry Pi Pico care se conecteaza la Wi-Fi si trimite un mesaj simplu („Hello World”) catre brokerul MQTT.
a) Instalarea MicroPython pe Raspberry Pi Pico
b) Pregatirea bibliotecii umqtt.simple pe Pico
c) Codul de conectare la broker si publicare a unui mesaj
Codul de mai jos configureaza conexiunea si trimite un mesaj de test pe topicul test/topic.
import network import time import umqtt.simple as mqtt # Seteaza detaliile retelei Wi-Fi ssid = 'numele_wifi' password = 'parola_wifi' # Conectare la Wi-Fi wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) while not wlan.isconnected(): print("Conectare la retea...") time.sleep(1) print("Conectat la retea:", wlan.ifconfig()) # Configurare client MQTT mqtt_server = 'IP-ul_laptopului' # Inlocuieste cu IP-ul laptopului client_id = 'pico_test' topic = 'test/topic' # Initializeaza clientul MQTT si se conecteaza la broker client = mqtt.MQTTClient(client_id, mqtt_server, port=1883) try: client.connect() print("Conectat la broker MQTT") # Trimite un mesaj simplu message = "Hello World" client.publish(topic, message) print(f"Mesaj trimis: {message}") # Deconecteaza-te client.disconnect() except Exception as e: print("Eroare de conectare:", e)
c) Explicatii despre Cod
Pasi:
Configurati Raspberry Pi Pico sa citeasca date de la un senzor de temperatura si unul de lumina si sa publice aceste date pe doua topicuri MQTT separate.
Utilizati Wireshark pentru a monitoriza traficul MQTT intre Raspberry Pi Pico si brokerul Mosquitto de pe laptop, pentru a vizualiza structura si tipul pachetelor MQTT transmise. Identificati unde in interiorul pachetului sunt transmise datele revelante.
Interpretarea Pachetelor MQTT in Wireshark:
- CONNECT: Pachetul de conectare de la Pico catre broker.
- PUBLISH: Pachetul care contine mesajul publicat pe un topic specific.
- DISCONNECT: Pachetul de deconectare, trimis cand conexiunea este inchisa.