IoT wireless - LoRaWAN, Zigbee mesh e MQTT
Dalla serra dell'istituto agrario che misura umidità ogni 10 minuti al contatore dell'acqua che deve vivere 10 anni con una singola pila: scopri come LoRaWAN, MQTT e le reti LPWAN connettono migliaia di sensori senza Wi-Fi né 5G, con architetture leggere e protocolli pensati per il mondo reale.
L'IoT e le sue esigenze di connettività
L'Internet of Things pone requisiti di rete radicalmente diversi rispetto alla connettività tradizionale. Un sensore di temperatura in un campo agricolo, un contatore dell'acqua in una città, un tracker GPS su un container — questi dispositivi non devono trasmettere video in streaming né scaricare aggiornamenti software ogni ora. Devono fare una cosa sola: inviare piccoli pacchetti di dati con grande affidabilità, a lungo raggio, consumando pochissima energia.
Low Power Wide Area Network: famiglia di tecnologie radio per dispositivi che inviano pochi byte, raramente, su chilometri, con batterie che durano anni. Rinunciano a velocità e latenza ultra-bassa in cambio di autonomia e copertura.
Né il Wi-Fi (troppo energivoro e corto raggio) né il 4G/5G (costoso e ad alto consumo) rispondono a questi requisiti. La categoria progettata è la LPWAN.
In aula capita di voler usare LoRa per tutto. Se devi trasmettere video, aggiornamenti OTA da 10 MB o controllo real-time sotto 100 ms, LPWAN è sbagliata: serve Wi-Fi/5G. LPWAN serve per telemetria lenta periodica.
Contatore acqua seminterrato: niente Wi-Fi, batteria 8 anni, 50 byte al giorno → LoRaWAN Classe A gateway tetto. Luci corridoio con sensore presenza: alimentate a rete ma mesh economica? Zigbee mesh sui portalampada fa da router: una lampadina offline, il mesh si riorganizza.
LoRaWAN: architettura, classi e sicurezza
LoRaWAN è lo standard LPWAN più diffuso. LoRa (Long Range) è la modulazione fisica Chirp Spread Spectrum (CSS) di Semtech. LoRaWAN è il protocollo MAC e di rete che definisce accesso al canale, autenticazione e organizzazione.
Segnale la cui frequenza aumenta/diminuisce nel tempo. Robustissimo al rumore: decodificabile anche 20 dB sotto rumore ambientale. Permette 10-15 km in campo aperto con pochi milliwatt.
Il Gateway LoRaWAN non è un router — è un relay
Il gateway LoRaWAN non prende decisioni. Riceve tutti i frame radio, li impacchetta in UDP/IP e li inoltra al Network Server. Un pacchetto può essere ricevuto da più gateway — il Network Server deduplica.
No: overlapping di copertura. In laboratorio con 1 gateway Packet Tracer sembra SPOF, ma in produzione TTN usa decine di gateway sovrapposti. Non confondere star-of-stars con star semplice.
Le tre classi di dispositivi LoRaWAN
...sleep ore...
TX → RX1 → RX2
Consumo minimo — anni con singola batteria.
Beacon sync → RX slot
Beacon → RX slot…
Finestre sincronizzate con beacon periodici. Server invia in orari prevedibili.
RX2 sempre aperto
(salvo TX)
Quasi sempre in ascolto, massima reattività, richiede alimentazione stabile.
Sicurezza LoRaWAN — doppio livello
Modello progettato per separare responsabilità operatore rete e fornitore applicazione. Due chiavi AES-128 distinte:
Condivisa dispositivo ↔ Network Server. Protegge integrità e autenticità livello rete.
Condivisa dispositivo ↔ Application Server. Cifra payload (temperatura, GPS).
Join genera chiavi sessione uniche ad ogni attivazione. Chiavi non statiche, più sicuro.
Chiavi hardcoded firmware. Semplice ma meno sicuro: se compromesso, chiavi recuperabili.
{
"devEUI": "70B3D57ED0069A2F",
"appEUI": "800000000000000C",
"appKey": "2B7E151628AED2A6ABF7158809CF4F3C",
"class": "A",
"region": "EU868",
"adr": true,
"join": "OTAA"
}Con TTN Community + 1 gateway Dragino indoor (100 euro) mostrate join OTAA reale: frame Join Request in chiaro, Join Accept cifrato con AppKey. Con SDR vedete chirp su waterfall 868.1 MHz. ABP disabilitato in produzione: chiavi statiche nelle prove esame errore grave.
MQTT — Message Queuing Telemetry Transport
Se LoRaWAN risolve trasporto radio, MQTT risolve trasporto applicativo: come consegnare messaggi dai sensori alle applicazioni in modo efficiente e scalabile.
MQTT è protocollo messaggistica leggero publish/subscribe, IBM 1999 per telemetria satellitare bassa banda. Oggi standard de facto IoT applicativo, AWS IoT, Azure IoT Hub, sistemi industriali.
Livello applicativo (7) su TCP/IP (1883 chiaro, 8883 TLS). Non legato a radio specifica: funziona sopra Wi-Fi, Ethernet, 4G o sopra LoRaWAN via Network Server.
Topic — indirizzamento gerarchico
In MQTT i messaggi non vanno a destinatari specifici ma pubblicati su topic gerarchici separati da /.
fabbrica/linea3/motore7/rpm
citta/zona_est/lampione42/stato
# = tutti successivi -> edificio/#
Quality of Service
Fire-and-forget, puo essere perso. Telemetria alta frequenza non critica.
ritrasmette se no ACK
Duplicati possibili. Comandi dove duplicato tollerabile.
Handshake 4 fasi, massima affidabilita. Apri valvola, sblocca serratura.
Messaggio retain=true conservato dal broker. Nuovo subscriber riceve subito ultimo valore.
Messaggio testamento pubblicato se connessione cade in modo inaspettato.
Sicurezza MQTT
listener 8883 cafile /etc/mosquitto/certs/ca.crt certfile /etc/mosquitto/certs/server.crt keyfile /etc/mosquitto/certs/server.key allow_anonymous false password_file /etc/mosquitto/passwd acl_file /etc/mosquitto/acl # acl user sensore42 topic write sensori/42/# topic read comandi/42/# user dashboard topic read sensori/#
import paho.mqtt.client as mqtt, ssl, json
client = mqtt.Client(client_id="sensore-42")
client.username_pw_set("sensore42","pwd-sicura")
client.tls_set(ca_certs="ca.crt")
client.will_set("sensori/42/stato", payload="offline", qos=1, retain=True)
client.connect("broker.istituto.local", 8883, 60)
client.publish("sensori/42/stato", "online", qos=1, retain=True)
client.publish("sensori/42/temperatura", json.dumps({"t":24.3}), qos=1)
def on_message(c,u,msg):
print(msg.topic, msg.payload.decode())
sub = mqtt.Client()
sub.tls_set(ca_certs="ca.crt")
sub.username_pw_set("dashboard","pwd")
sub.on_message = on_message
sub.connect("broker.istituto.local",8883)
sub.subscribe([("sensori/+/temperatura",1),("sensori/+/stato",1)])
sub.loop_forever()Username/password in chiaro su porta 1883 leggibili da Wireshark in 2 click. Usate sempre 8883 + ACL. Retain senza limite + client malizioso fa DoS saturando RAM. Impostate quota.
Confronto tecnologie LPWAN
LoRaWAN non e' l'unica LPWAN. Zigbee mesh, pur non essendo LPWAN, e' spesso complementare in locale e porta dati a gateway LoRaWAN/MQTT.
| Caratteristica | LoRaWAN | Sigfox | NB-IoT | Zigbee mesh |
|---|---|---|---|---|
| Frequenza | 868 MHz ISM | 868 MHz ISM | Bande LTE licenziate | 2.4 GHz ISM |
| Copertura | 2-15 km | 3-50 km | 1-10 km cellulare | 10-100 m per hop, mesh km |
| Velocita | 0.3-50 kbps | 100 bps UL / 600 DL | 20-250 kbps | 250 kbps |
| Infrastruttura | Privata o pubblica TTN | Solo operatore Sigfox | Operatori 4G/LTE | Coordinatore + router locali |
| Messaggi/giorno | Illimitati (duty 1%) | 140 UL / 4 DL | Illimitati | Illimitati |
| Batteria | Anni | Anni | Anni (PSM) | Anni end, router su rete |
| Punto forza | Flessibile, privata, open | Semplicita, copertura EU | Roaming int., SIM | Mesh self-healing |
Non quale tecnologia e' migliore ma quali caratteristiche deve avere il sistema. LoRaWAN, Zigbee e MQTT svolgono ruoli differenti e possono coesistere.
# Thing: Water Level Monitor Thing: Water Level Monitor - Server: iot.istituto.local 192.168.1.100 - Topic publish: istituto/seminterrato/acqua/livello IoT Server Rules: IF waterLevel > 80 THEN publish istituto/allarmi/acqua/allarme = critico QoS1 retain true Smartphone PT subscribe istituto/# per test
Nel .pkt troverete rete cellulare + smart home. Aggiungete regole IoT server retain. Fate crashare un thing scollegando alimentazione: mostrate come LWT mancante in PT richiede heartbeat applicativo. Occasione per spiegare differenza simulazione vs hardware reale.
Caso di studio: monitoraggio wireless di una serra
Immagina una serra con temperatura e umidita in punti diversi. Sensori a batteria devono funzionare mesi.
Serra istituto 6 campate: ogni campata 1 sensore LoRaWAN Classe A batteria AA 2 anni, gateway tetto. Dati TTN → MQTT → Node-RED Raspberry Pi → Grafana aula. In parallelo Zigbee mesh per irrigazione elettrovalvole router alimentati con comando MQTT istituto/serra/irrigazione/campata3. Se Wi-Fi cade, Zigbee locale e LoRaWAN continuano: resilienza multidisciplinare agrario + informatica.
Monnit agricoltura precisione: sensori LoRaWAN umidita suolo 15 min, ADR SF7-12, batteria 10 anni. Amsterdam smart city: 2000 sensori parcheggio NB-IoT rete KPN, roaming EU, payload JSON via MQTT AWS IoT. Stesso MQTT sopra, modelli rete privata vs operatore diversi.
868 MHz duty cycle legale 1%: non trasmettere continuamente. SF12 1.2 sec per 20 byte → max ~30 msg/ora per device. Classe C sempre RX ma TX comunque limitato.
Verifica / Esercizio guidato
🔬 Progetta la rete IoT per istituto: serra + contatori + aula smart
Hai: serra 6 sensori T/H batteria, 20 contatori acqua seminterrato senza Wi-Fi, 10 aule luci + sensori presenza alimentati, 1 broker MQTT Raspberry, 1 gateway LoRaWAN tetto. Progetta.
- Serra scegli classe LoRaWAN e OTAA/ABP, motiva consumo e sicurezza. Calcola msg/giorno con duty cycle 1%.
- Contatori acqua: LoRaWAN vs NB-IoT? Costo SIM vs gateway privato, roaming, ownership.
- Aula smart luci: perche Zigbee mesh meglio di Wi-Fi e LoRaWAN? Topologia coordinator/router/end device.
- MQTT: definisci topic hierarchy istituto → QoS per allarmi acqua vs telemetria temperatura vs comando luci. Dove retain e LWT?
1) Serra Classe A OTAA: Sleep 99%, invio 10 min =144 msg/giorno, time-on-air SF7 60ms → 8.6 sec TX/giorno =0.01% duty ok anche SF12 ~1 sec →144 sec =0.16% ancora ok. OTAA chiavi sessione uniche, se rubato vecchie invalide. ABP vietato: chiave statica recuperabile flash.
2) Contatori: 20 contatori senza alimentazione, no LTE affidabile, dati sensibili → LoRaWAN privato: 1 gateway 120 euro vs 20 SIM 2 euro/mese*12*20=480euro/anno. Ownership interna. NB-IoT solo se roaming extra-istituto.
3) Aula Zigbee: Luci router mesh self-healing: se 1 brucia, AODV ricalcola. Latenza 50ms locale vs LoRaWAN >1 sec. Wi-Fi consumo 10x, batterie sensori presenza mesi vs anni. Topologia: 1 coordinator piano (Raspberry+ dongle), 10 router lampadine, 10 end device PIR batteria sleep.
4) MQTT topics:
istituto/serra/campataN/temperatura QoS1 retain true
istituto/seminterrato/contatoreID/allarme QoS2 retain true LWT offline su istituto/.../stato
istituto/aulaN/luce/comando QoS1 retain true + stato .../stato retain
ACL: sensore serra solo write istituto/serra/#, dashboard read istituto/#
LWT serra: se offline 30 min, broker pubblica offline → Node-RED Telegram.
Riepilogo e concetti chiave
📚 Prossimo passo — WMAN e WWAN: WiMAX, reti cellulari e 5G
Ora che connetti sensori su km con poca energia, saliamo di scala: come funzionano le reti geografiche, dal WiMAX al 5G network slicing che affitta fette di rete per IoT critico, veicolo connesso e eMBB.
