MQTT (trasporto di telemetria in coda dei messaggi) è un protocollo di messaggistica leggero comunemente utilizzato nelle applicazioni IoT (Internet of Things) per una comunicazione affidabile ed efficiente tra i dispositivi. L'hosting di un server MQTT su un Raspberry Pi consente di creare un hub di messaggistica locale per i tuoi progetti IoT. Questa guida ti guida per l'impostazione e l'esecuzione di un server MQTT su un Raspberry Pi.
Cosa avrai bisogno
- Raspberry Pi (Qualsiasi modello con supporto GPIO, ad esempio PI 3, PI 4)
- Scheda microSD (almeno 8 GB, classe 10 o migliore)
- Alimentazione elettrica (5V, 2,5a minimo per PI 3; 5V, 3A per PI 4)
- Raspberry Pi OS (Versione lite o desktop)
- Connessione Internet
- Clienti MQTT (ad esempio, ESP8266, ESP32 o Strumenti software MQTT)
Passaggio 1: aggiorna il Raspberry Pi
- Assicurati che il tuo Raspberry Pi sia aggiornato:
sudo apt update && sudo apt upgrade -y
Passaggio 2: installa broker Mosquitto MQTT
Mosquitto è un broker MQTT leggero e ampiamente usato.
- 
Installa Mosquitto e i suoi strumenti client: sudo apt install -y mosquitto mosquitto-clients
- 
Abilita Mosquitto di iniziare allo stivale: sudo systemctl enable mosquitto
- 
Inizia il servizio Mosquitto: sudo systemctl start mosquitto
Passaggio 3: testare il broker MQTT
- 
Apri due sessioni di finestre o SSH al tuo Raspberry Pi. 
- 
Nel primo terminale, iscriviti a un argomento di prova: mosquitto_sub -h localhost -t test/topic
- 
Nel secondo terminale, pubblica un messaggio di test: mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
- 
Dovresti vedere il messaggio "Ciao, mqtt!" Nel primo terminale. 
Passaggio 4: configurare Mosquitto per connessioni esterne
- 
Apri il file di configurazione Mosquitto: sudo nano /etc/mosquitto/mosquitto.conf
- 
Aggiungi le seguenti righe per consentire connessioni esterne: listener 1883 allow_anonymous trueNota: Per gli ambienti di produzione, impostare l'autenticazione dell'utente invece di consentire l'accesso anonimo. 
- 
Riavvia il servizio Mosquitto per applicare le modifiche: sudo systemctl restart mosquitto
- 
Testare la connessione da un altro dispositivo sulla stessa rete utilizzando uno strumento client MQTT (ad es. MQTT.FX o MQTT Explorer). 
Passaggio 5: proteggere il broker MQTT (opzionale)
- 
Abilita autenticazione della password: sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>- Immettere e confermare una password per l'utente.
 
- 
Aggiorna il file di configurazione Mosquitto per utilizzare il file della password: allow_anonymous false password_file /etc/mosquitto/passwd
- 
Riavvia il servizio Mosquitto: sudo systemctl restart mosquitto
- 
Testare la connessione utilizzando il nome utente e la password. 
Passaggio 6: collegare i dispositivi IoT al broker MQTT
- 
Per ESP8266/ESP32: Usa l'IDE Arduino per programmare i tuoi dispositivi IoT per pubblicare/iscriverti agli argomenti sul tuo broker Raspberry Pi MQTT. #include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* mqtt_server = "<raspberry-pi-ip>"; WiFiClient espClient; PubSubClient client(espClient); void setup() { WiFi.begin(ssid, password); client.setServer(mqtt_server, 1883); } void loop() { if (!client.connected()) { client.connect("ESPClient"); } client.loop(); client.publish("test/topic", "Hello from ESP8266!"); delay(1000); }
- 
Per i clienti del software: Usa mqtt.fx, mqtt explorer o python con il paho-mqttbiblioteca.import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("test/topic") def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("<raspberry-pi-ip>", 1883, 60) client.loop_forever()
Risoluzione dei problemi
- 
Impossibile connettersi al broker MQTT: - Assicurati che Mosquitto stia correndo: sudo systemctl status mosquitto
- Controlla le impostazioni del firewall sul tuo Raspberry Pi.
 
- Assicurati che Mosquitto stia correndo: 
- 
Errori di autenticazione: - Verificare il nome utente e la password nella configurazione Mosquitto e nella configurazione del client.
 
- 
Connessione rifiutata: - Assicurarsi che il dispositivo sia sulla stessa rete del Raspberry Pi.
- Controlla che la porta 1883 sia aperta.
 
Applicazioni di MQTT
- Comunicazione del dispositivo IoT
- Sistemi di automazione domestica
- Streaming dei dati in tempo reale
- Monitoraggio e controllo remoti
Conclusione
Ospitare un server MQTT su un Raspberry Pi è un modo eccellente per consentire una comunicazione leggera e affidabile per i tuoi progetti IoT. Seguendo questa guida, è possibile impostare e proteggere un broker MQTT Mosquitto, collegare i dispositivi IoT e iniziare a costruire potenti applicazioni. Sperimenta diverse configurazioni per esplorare il pieno potenziale di MQTT!
 
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  