cerca
Reti wireless - Zigbee
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.RW-13Aprile History

Hide minor edits - Show changes to output

Changed lines 34-35 from:
'''ZigBee''' è un protocollo di comunicazione di alto livello, basato sullo standard wireless IEEE 802.15.4. E' stato standardizzato principalmente per l'automazione e la sensoristica, quindi per soluzioni che prevedono la creazione di Wireless Personal Area Network (WPAN) a basso costo e a basso consumo e con un alto numero di nodi. La lunga autonomia dei dispositivi è legata al bassissimo data rate delle trasmissioni (da 20 a 250 Kb/s), che rimane comunque sufficiente per gestire i modesti volumi di traffico.
to:
'''ZigBee''' è un protocollo di comunicazione di alto livello, basato sullo standard wireless IEEE 802.15.4. E' stato standardizzato principalmente per l'automazione e la sensoristica, quindi per soluzioni che prevedono la creazione di Wireless Personal Area Network (WPAN) a basso costo e a basso consumo e con un alto numero di nodi. La lunga autonomia dei dispositivi è legata al bassissimo data rate delle trasmissioni (da 20 a 250 Kb/s), che rimane comunque sufficiente per gestire i loro modesti volumi di traffico.
Changed line 51 from:
* pubblico (standard): sviluppato e certificato dalla ZigBee Alliance per garantire l'interoperabilità tra dispositivi di diversi produttori. E' sufficiente essere iscritti per iniziare a sviluppare il tuo prodotto, a patto di inviare tutti i tuoi moduli e codici sorgenti. Ad esempio mantenere privato un protocollo per gestire l'accensione di una lampadina sarebbe folle, perché altrimenti pochi produttori di lampadine si uniformerebbero al mio sistema e io avrei fatto un protocollo che non saprebbe usare nessuno;
to:
* pubblico (standard): sviluppato e certificato dalla ZigBee Alliance per garantire l'interoperabilità tra dispositivi di diversi produttori. E' sufficiente essere iscritti per iniziare a sviluppare il tuo prodotto, a patto di inviare tutti i tuoi moduli e codici sorgenti. Ad esempio mantenere privato un protocollo per gestire l'accensione di una lampadina sarebbe folle, perché pochi produttori di lampadine si uniformerebbero al mio sistema e io avrei fatto un protocollo che non saprebbe usare nessuno;
Changed lines 76-77 from:
Il rapporto segnale rumore (potenza segnale / potenza rumore nel segnale) è un parametro che dà una stima sulla bontà del segnale: se è molto basso avrò percentuali di intercettazione delle trasmissioni trascurabili. Lo ZigBee trasmette usando il metodo [[http://en.wikipedia.org/wiki/Code_division_multiple_access|CDMA]], che oltre a permettere l'invio in contemporanea da diversi trasmettitori senza provocare collisioni, permette valori più bassi di rapporto segnale rumore (quindi robustezza maggiore) rispetto a Wi-Fi e Bluetooth.
to:
Il rapporto segnale rumore (potenza segnale / potenza rumore nel segnale) è un parametro che dà una stima sulla bontà del segnale: se è molto basso avrò percentuali di fallimento delle trasmissioni trascurabili. Lo ZigBee trasmette usando il metodo [[http://en.wikipedia.org/wiki/Code_division_multiple_access|CDMA]], che oltre a permettere l'invio in contemporanea da diversi trasmettitori senza provocare collisioni, ha valori più bassi di rapporto segnale rumore (quindi robustezza maggiore) rispetto a Wi-Fi e Bluetooth.
Changed line 82 from:
Dello standard 802.15.4, lo ZigBee eredita le specifiche della parte del livello datalink del Medium Access Control (MAC), che fa da tramite tra il livello fisico (che gestisce le potenze e le modalità di connessione-trasmissione della rete) e quello applicativo (che dice cosa posso fare col protocollo). In altre parole il MAC si occupa di rendere il livello applicativo del tutto trasparente alla tecnologia che c'è sotto, sollevandolo da ogni preoccupazione sul tipo di connessione che sto utilizzando (wireless o cablata che sia).
to:
Dello standard 802.15.4, lo ZigBee eredita le specifiche anche della parte del livello datalink del Medium Access Control (MAC), che fa da tramite tra il livello fisico (che gestisce le potenze e le modalità di connessione-trasmissione della rete) e quello applicativo (che dice cosa posso fare col protocollo). In altre parole il MAC si occupa di rendere il livello applicativo del tutto trasparente alla tecnologia che c'è sotto, sollevandolo da ogni preoccupazione sul tipo di connessione che sto utilizzando (wireless o cablata che sia).
Changed lines 103-105 from:
* ''SSP'' (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non è richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, dispositivi fidati per la distribuzione delle chiavi di sicurezza;
* ''ZDO'' (Zigbee Device Object), in cui vengono salvati tutti i dati di configurazione del dispositivo e della rete, così che quando io slave device voglio collegarmi ad essa potrò richidere le informazioni di questo modulo per sapere tutto ciò che serve per entrare nel giro. Spieghiamo meglio un concetto: ogni device è definito da un profilo ed è implementato come application object; ogni application object è collegato al resto dello stack ZigBee attraverso un endpoint (un componente indirizzabile all'interno del dispositivo). La comunicazione avviene da endpoint a endpoint, e all'interno della rete ne esistono due speciali: 0, usato per la configurazione e la gestione dell'intero dispositivo ZigBee; 255, per la comunicazione in broadcasting;
* ''APS'' (Application Support Sub-layer), che principalmente mantiene le tabelle per fare il binding ed inoltra i messaggi tra gli endpoint. I suoi servizi sono usati sia dal modulo ZDO che dall'Application Framework;
to:
* ''SSP'' (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non sia richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, dispositivi fidati per la distribuzione delle chiavi di sicurezza;
* ''ZDO'' (Zigbee Device Object), in cui vengono salvati tutti i dati di configurazione del dispositivo e della rete, così che quando io slave voglio collegarmi ad essa potrò richiedere le informazioni di questo modulo per sapere tutto ciò che serve per entrare nel giro. Spieghiamo meglio un concetto: ogni device è definito da un profilo ed è implementato come application object; ogni application object è collegato al resto dello stack ZigBee attraverso un endpoint (un componente indirizzabile all'interno del dispositivo). La comunicazione avviene da endpoint a endpoint, e all'interno della rete ne esistono due speciali: 0, usato per la configurazione e la gestione dell'intero dispositivo ZigBee; 255, per la comunicazione in broadcasting;
* ''APS'' (Application Support Sub-layer), che mantiene le tabelle per fare il binding ed inoltra i messaggi tra gli endpoint. I suoi servizi sono usati sia dal modulo ZDO che dall'Application Framework;
Changed line 108 from:
Condludendo, lo stack ZigBee ha tre tipi di profili:
to:
Concludendo, lo stack ZigBee ha tre tipi di profili:
Changed line 122 from:
Lo '''ZigBee Coordinator''' (ZC) è il dispositivo che crea e configura la rete, cercando un canale radio adatto e definendo tra i parametri operativi il PAN ID, cioè il numero a 16bit usato dai membri della rete per riferirsi ad essa. Una volta avviata la rete si mette in modalità ''Coordinatore'', permettendo (o meno) a Router ed End Device di fare una join alla sua rete. Tra le sue altre funzioni, agisce come deposito per le chiavi di sicurezza (''trust center''), ed occasionalmente effettua attività di routing.\\
to:
Lo '''ZigBee Coordinator''' (ZC) è il dispositivo che crea e configura la rete, cercando un canale radio adatto e definendo tra i parametri operativi il PAN ID, cioè il numero a 16bit usato dai membri della rete per riferirsi ad essa. Una volta avviata la rete si mette in modalità ''Coordinatore'', permettendo (o meno) a Router ed End Device di fare una join alla sua rete. Tra le altre funzioni, agisce come deposito per le chiavi di sicurezza (''trust center''), ed occasionalmente effettua attività di routing.\\
Added line 2:
[[#su]]
Added lines 14-32:
>>left bgcolor=#f5f9fc width=240px border='2px solid #cccccc' padding=5px<<
%center%'''Indice'''

# [[#z1|Introduzione]]
# [[#z2|ZigBee Alliance]]
# [[#z3|Livello fisico]]
# [[#z4|Livello datalink]]
# [[#z5|ZigBee stack architecture]]
# [[#z6|Tipi di dispositivo]]
# [[#z7|Topologie della rete ZigBee]]
# [[#z8|Join in una rete]]
# [[#z9|Cluster]]
# [[#z10|Comparative]]

>><<

----

[[#z1]]
Added lines 44-46:
[[#su|[-'''Torna su'''-]]]

[[#z2]]
Added lines 67-69:
[[#su|[-'''Torna su'''-]]]

[[#z3]]
Added lines 78-80:
[[#su|[-'''Torna su'''-]]]

[[#z4]]
Added lines 89-91:
[[#su|[-'''Torna su'''-]]]

[[#z5]]
Added lines 115-117:
[[#su|[-'''Torna su'''-]]]

[[#z6]]
Changed lines 119-136 from:
Da un punto di vista logico, i dispositivi ZigBee possono essere di tre tipi:
* ''ZigBee Coordinator'' (ZC): unico per ogni rete, ne costituisce la radice e può fare da ponte tra più reti diverse. E' un full function device, è spesso alimentato ed è in grado di memorizzare informazioni sulla sua rete e agire come deposito per le chiavi di sicurezza. Inoltre, il coordinatore è il dispositivo che fa partire e configura la rete, gestisce i trust center e le binding table;
* ''ZigBee Router'' (ZR): si connette al coordinatore e permette l'inoltro dei messaggi tra i dispositivi, aumentando così le distanze di copertura della rete. Può essercene più di uno
per ogni rete (a meno che non si abbia una rete a stella, e allora non ce n'è neanche uno), ed è anch'esso un full function device;
* ''ZigBee Device'' o
''ZigBee End Device'' (ZED): è un reduced function device, perché le sue funzionalità si riducono al dialogare con coordinatore o router (non possono trasmettere dati provenienti da altri dispositivi). Richiedono poca memoria, hanno bassi consumi e costi inferiori rispetto agli altri due tipi di dispositivi.

!!Cluster
Dalle [[FAQ del protocollo->http://www
.zigbee.org/About/FAQ.aspx]]: ''The ZigBee Cluster Library (ZCL) is a significant addition to revision 1.1. In ZigBee, a cluster is a message or collection of messages pertaining to a given application domain. Some devices (such as on/off switches) have the same definition and functionality whatever application profile is used. The idea behind creating the ZCL was to provide cluster reusability by abstracting clusters across several application domains and placing them in a library organized according to functional domains (e.g., lighting, closures, HVAC).''

%center%Attach:RW-zcl.gif

!!Comparative
Vediamo ora le principali differenze tra ZigBee, Wi-Fi e Bluetooth attraverso la seguente tabella:

%center%Attach:RW-tabellaComparativa.gif

Qualche commento ulteriore sullo ZigBee. Anzitutto la durata delle batterie dipende dal tipo delle batterie stesse: per le normali stilo si parla di anni, mentre per quelle al litio più avanzate si parla tranquillamente
di decenni. La dimensione della rete intesa come numero di nodi collegabili è sovradimensionata in modo imbarazzante rispetto alla quasi totalità delle applicazioni. E' supportata l'architettura di rete mesh, che permette l'autocostruzione della rete stessa: il device ne chiede la struttura al coordinatore e vi si adatta. Mentre per rimpiazzare un modulo Bluetooth dovrò rifare l'aggancio al dispositivo, la sostituzione di un modulo ZigBee avviene automaticamente nel modo corretto, perché è tutto demandato a livello applicativo (e non fisico o network come negli altri protocolli).\\
Lo ZigBee cerca quindi di prendere sia i pregi della Wi
-Fi che quelli del Bluetooth.
to:
Da un punto di vista logico, i dispositivi ZigBee possono essere di tre tipi: ''Coordinatore'', ''Router'' ed ''End Device''.

!!!ZigBee Coordinator
Lo '''ZigBee Coordinator''' (ZC) è il dispositivo che crea e configura la rete, cercando
un canale radio adatto e definendo tra i parametri operativi il PAN ID, cioè il numero a 16bit usato dai membri della rete per riferirsi ad essa. Una volta avviata la rete si mette in modalità ''Coordinatore'', permettendo (o meno) a Router ed End Device di fare una join alla sua rete. Tra le sue altre funzioni, agisce come deposito per le chiavi di sicurezza (''trust center''), ed occasionalmente effettua attività di routing.\\
Lo ZC è unico
per ogni rete, ne costituisce la radice e può fare da ponte tra più reti diverse. E' chiaramente un full function device, e dato che non può andare in modalità ''sleep'' per ottemperare ai suoi mille doveri, deve essere alimentato da rete elettrica.

!!!ZigBee Router
Lo '''ZigBee Router'''
(ZR) permette l'inoltro dei messaggi (aumentando così le distanze di copertura della rete) e ha il potere di accettare o meno richieste di join alla rete da parte di altri device. Ovviamente prima si dovrà unire a una rete già esistente, chiedendo l'autorizzazione al Coordinator o a un altro Router. L'inoltro dei messaggi avviene attraverso il mantenimento di tabelle di routing dinamiche e sempre aggiornate, in cui lo ZR può memorizzare fino a 20 percorsi diversi. \\
Per ogni rete può esserci più di un Router, che però essendo un full function device deve essere alimentato da rete elettrica (uno ZR in frequente sleep mode serve a poco
).

!!!ZigBee End Device
Lo
'''ZigBee End Device''' (ZED) è un ''reduced function device'', perché le sue funzionalità si riducono al dialogare col Coordinatore o col Router (non può trasmettere/ricevere dati a/da altri ZED). Richiede poca memoria, ha bassi consumi (va a batterie) e costi inferiori rispetto agli altri due tipi di dispositivi. \\
Al contrario di ZC e ZR, la loro presenza in una rete ZigBee non è essenziale: si possono benissimo realizzare reti con solo un Coordinatore e uno o più Router (caso tipico
: supervisione di macchine industriali, in cui è richiesta massima efficienza e reattività).

[[#su|[-'''Torna su
'''-]]]

[[#z7]]
Changed line 137 from:
La rete Zigbee può assumere 3 diverse topologie, ognuna con i suoi pregi e difetti. Ogni Device non può essere mai collegato direttamente ad un altro Device ma solamente ad Router o ad un Coordinatore in quanto sono loro che possiedono le tabelle dei dispositivi collegati.
to:
La rete ZigBee può assumere 3 diverse topologie, ognuna con i suoi pregi e difetti. Ecco una semplice legenda per gli schemi che seguiranno:
Added lines 139-144:

Alcuni dettagli numerici prima di cominciare:
* la massima distanza Router-Router o Coordinatore-Router è 6;
* ad ogni ZR o ZC possono essere associati un massimo di 20 dispositivi, di cui al massimo 6 possono essere Router;
* facendosi due conti, si può facilmente dedurre che il numero di dispositivi che compongono la rete possono superare di gran lunga le 65000 unità.
Added line 147:
Changed lines 149-152 from:
Questa topologia è indicata per reti con pochi slave poiché con molti nodi la sua gestione diventa complessa e il coordinatore sarebbe sommerso da richieste di instradamento.

Questa topologia
non richiede alcun algoritmo di routing in quanto si passa sempre dal coordinatore.
to:

Questa topologia è indicata per reti con pochi slave, o la sua gestione diventerebbe troppo complessa e il coordinatore sarebbe sommerso da richieste di instradamento. Presuppone inoltre la non dinamicità della rete, dato che si instaurano collegamenti univoci tra i vari ZED e lo ZC.

La topologia a stella
non richiede alcun algoritmo di routing in quanto si passa sempre dal coordinatore.
Added line 156:
Added line 158:
Changed lines 161-163 from:
Anche questa topologia non necessita di algoritmi di routing specifici, in quanto si invia il messaggio al padre, unico per ogni dispositivo. È però poco affidabile in quanto se cadesse uno dei Router della rete, tutta la sua sottorete sarebbe esclusa dalla comunicazione e dovrebbe ripetere l'operazione di inserimento.

!!!Topologia mesh
to:
Anche questa topologia non necessita di algoritmi di routing specifici, in quanto si invia il messaggio al padre, unico per ogni dispositivo. Tuttavia è poco affidabile, perché se cade uno dei Router della rete, tutta la sua sottorete sarebbe esclusa dalla comunicazione e dovrebbe ripetere l'operazione di inserimento.

!!!Topologia Mesh
Added line 165:
Changed lines 167-170 from:
Permettendo il collegamento diretto tra molti Router, la rete consente di migliorare l'invio di messaggi tra dispositivi, in quanto è possibile scegliere tra differenti strade in base al carico dei dispositivi, alla distanza e ad altri fattori.
Inoltre la rete è più affidabile: se un Router cade non cade tutta la sua sottorete, ma entrano in gioco algoritmi di re-routing che si accorgono della mancanza di un nodo e ricalcolano il percorso migliore per portare a destinazione il messaggio.
Questo rende però necessari algoritmi di routing specifici.
to:

Permettendo il collegamento diretto tra molti Router, la rete consente di migliorare l'invio di messaggi tra dispositivi, in quanto è possibile scegliere tra differenti strade in base al loro carico, alla distanza e ad altri fattori. \\
La
rete è inoltre più affidabile: se un Router cade non cade tutta la sua sottorete, ma entrano in gioco algoritmi di re-routing che si accorgono della mancanza di un nodo e ricalcolano il percorso migliore per portare a destinazione il messaggio. Questo rende però necessari algoritmi di routing specifici.

[[#su|[-'''Torna su'''-]]]

[[#z8]]
Changed line 176 from:
*richiedendo la connessione ad un ID specifico
to:
*richiedendo la connessione ad un dispositivo noto
Changed lines 179-181 from:
Nel primo caso il Router o Device che si unisce alla rete conosce già l'ID del dispositivo a cui chiedere la connessione (ad esempio può essere impostato fisicamente).

Nel secondo caso invece il dispositivo deve ricercare un Router o un Coordinator che gli risponda. Tra i dispositivi che rispondo ne viene scelto uno al quale si richiede la connessione. Se la connessione va a buon fine il dispositivo che ha chiesto la join riceve il suo indirizzo dal Router con il quale si è collegato.
to:
Nel primo caso il Router o Device che si unisce alla rete conosce già l'ID del dispositivo a cui chiedere la connessione (ad esempio può essere impostato fisicamente).\\
Nel secondo caso invece il dispositivo deve ricercare un Router o un Coordinator che gli risponda. Tra i dispositivi che rispondono ne viene scelto uno al quale si richiede la connessione. Se la connessione va a buon fine, il dispositivo che ha chiesto la join riceve il suo indirizzo dal Router con il quale si è collegato.

[[#su|[-'''Torna su'''-]]]

[[#z9]]
!!Cluster
Dalle [[FAQ del protocollo->http://www.zigbee.org/About/FAQ.aspx]]: ''The ZigBee Cluster Library (ZCL) is a significant addition to revision 1.1. In ZigBee, a cluster is a message or collection of messages pertaining to a given application domain. Some devices (such as on/off switches) have the same definition and functionality whatever application profile is used. The idea behind creating the ZCL was to provide cluster reusability by abstracting clusters across several application domains and placing them in a library organized according to functional domains (e.g., lighting, closures, HVAC).''

%center%Attach:RW-zcl.gif

[[#su|[-'''Torna su'''-]]]

[[#z10]]
!!Comparative
Vediamo ora le principali differenze tra ZigBee, Wi-Fi e Bluetooth attraverso la seguente tabella:

%center%Attach:RW-tabellaComparativa.gif

Qualche commento ulteriore sullo ZigBee. Anzitutto la durata delle batterie dipende dal tipo delle batterie stesse: per le normali stilo si parla di anni, mentre per quelle al litio più avanzate si parla tranquillamente di decenni. La dimensione della rete intesa come numero di nodi collegabili è sovradimensionata in modo imbarazzante rispetto alla quasi totalità delle applicazioni. E' supportata l'architettura di rete mesh, che permette l'autocostruzione della rete stessa: il device ne chiede la struttura al coordinatore e vi si adatta. Mentre per rimpiazzare un modulo Bluetooth dovrò rifare l'aggancio al dispositivo, la sostituzione di un modulo ZigBee avviene automaticamente nel modo corretto, perché è tutto demandato a livello applicativo (e non fisico o network come negli altri protocolli).\\
Lo ZigBee cerca quindi di prendere sia i pregi della Wi-Fi che quelli del Bluetooth.

[[#su|[-'''Torna su'''-]]]
Changed line 50 from:
Il rapporto segnale rumore (potenza segnale / potenza rumore nel segnale) è un parametro che dà una stima sulla bontà del segnale: se è molto basso avrò percentuali di fallimento delle trasmissioni trascurabili. Lo ZigBee è il protocollo con i valori più bassi di rapporto segnale rumore, quindi quello con qualità e robustezza maggiori rispetto a Wi-Fi e Bluetooth.
to:
Il rapporto segnale rumore (potenza segnale / potenza rumore nel segnale) è un parametro che dà una stima sulla bontà del segnale: se è molto basso avrò percentuali di intercettazione delle trasmissioni trascurabili. Lo ZigBee trasmette usando il metodo [[http://en.wikipedia.org/wiki/Code_division_multiple_access|CDMA]], che oltre a permettere l'invio in contemporanea da diversi trasmettitori senza provocare collisioni, permette valori più bassi di rapporto segnale rumore (quindi robustezza maggiore) rispetto a Wi-Fi e Bluetooth.
Changed lines 39-40 from:
* Commercial Building Automation (CBA), applications targeted at a commercial building
environment;
to:
* Commercial Building Automation (CBA), applications targeted at a commercial building environment;
Added lines 126-134:

!!Join in una rete
Esistono due modi in cui un dispositivo si unisce ad una rete Zigbee:
*richiedendo la connessione ad un ID specifico
*richiedendo la connessione ad un qualunque dispositivo

Nel primo caso il Router o Device che si unisce alla rete conosce già l'ID del dispositivo a cui chiedere la connessione (ad esempio può essere impostato fisicamente).

Nel secondo caso invece il dispositivo deve ricercare un Router o un Coordinator che gli risponda. Tra i dispositivi che rispondo ne viene scelto uno al quale si richiede la connessione. Se la connessione va a buon fine il dispositivo che ha chiesto la join riceve il suo indirizzo dal Router con il quale si è collegato.
Changed line 105 from:
Attach:RW-zigbee-topology_devices.png
to:
%center%Attach:RW-zigbee-topology_devices.png
Changed lines 7-8 from:
%center% %sottotitolo% Appunti del 13 Aprile
to:
%center% %sottotitolo% Appunti del 13 e 16 Aprile
Changed lines 118-125 from:
Anche questa topologia non necessita di algoritmi di routing specifici, in quanto si invia il messaggio al padre, unico per ogni dispositivo. È però poco affidabile in quanto se cadesse uno dei Router della rete, tutta la sua sottorete sarebbe esclusa dalla comunicazione e dovrebbe ripetere l'inserimento nella rete.
to:
Anche questa topologia non necessita di algoritmi di routing specifici, in quanto si invia il messaggio al padre, unico per ogni dispositivo. È però poco affidabile in quanto se cadesse uno dei Router della rete, tutta la sua sottorete sarebbe esclusa dalla comunicazione e dovrebbe ripetere l'operazione di inserimento.

!!!Topologia mesh
Questa è la rete che permette la dinamicità maggiore ed è indicata per reti di grosse dimensioni.
%center%Attach:RW-zigbee-mesh_topology.png
Permettendo il collegamento diretto tra molti Router, la rete consente di migliorare l'invio di messaggi tra dispositivi, in quanto è possibile scegliere tra differenti strade in base al carico dei dispositivi, alla distanza e ad altri fattori.
Inoltre la rete è più affidabile: se un Router cade non cade tutta la sua sottorete, ma entrano in gioco algoritmi di re-routing che si accorgono della mancanza di un nodo e ricalcolano il percorso migliore per portare a destinazione il messaggio.
Questo rende però necessari algoritmi di routing specifici
.
Added lines 103-118:
!!Topologie della rete Zigbee
La rete Zigbee può assumere 3 diverse topologie, ognuna con i suoi pregi e difetti. Ogni Device non può essere mai collegato direttamente ad un altro Device ma solamente ad Router o ad un Coordinatore in quanto sono loro che possiedono le tabelle dei dispositivi collegati.
Attach:RW-zigbee-topology_devices.png
!!!Topologia a stella
La topologia a stella è la topologia più semplice in quanto ogni dispositivo (Router o Device) è collegato direttamente al Coordinator.
%center%Attach:RW-zigbee-star_topology.png
Questa topologia è indicata per reti con pochi slave poiché con molti nodi la sua gestione diventa complessa e il coordinatore sarebbe sommerso da richieste di instradamento.

Questa topologia non richiede alcun algoritmo di routing in quanto si passa sempre dal coordinatore.

!!!Topologia ad albero
Questa rete assume le sembianze di un albero radicato nel Coordinator.
%center%Attach:RW-zigbee-tree_topology.png
Per comunicare tra loro i device fanno risalire le richieste lungo l'albero, fino a trovare un router che abbia come figlio (o discendente) il device con cui si vuole comunicare.

Anche questa topologia non necessita di algoritmi di routing specifici, in quanto si invia il messaggio al padre, unico per ogni dispositivo. È però poco affidabile in quanto se cadesse uno dei Router della rete, tutta la sua sottorete sarebbe esclusa dalla comunicazione e dovrebbe ripetere l'inserimento nella rete.
Changed line 1 from:
(:title Reti wireless - Appunti del 13 Aprile:)
to:
(:title Reti wireless - Zigbee:)
Changed lines 5-7 from:
%titolo%''':: Reti wireless - Appunti del 13 Aprile ::'''
to:
%titolo%''':: Reti wireless - Zigbee ::'''

%center% %sottotitolo% Appunti del 13 Aprile
Added lines 7-10:
>>frame<<
Le immagini di questa pagina sono prese dalle slide del prof [[Rapacioli->Giovanni Rapacioli]]
>><<
Added lines 90-91:

%center%Attach:RW-zcl.gif
Changed lines 31-34 from:
* Automated Metering Infrastructure (AMI);
* Home Automation (HA);
* Commercial Building Automation (CBA);
* Personal Home and Hospital Care (PHHC)
;
to:
* Automated Metering Infrastructure (AMI), applications for two-way communications of metering data and energy management to provide more efficient and reliable energy usage;
* Home Automation (HA), applications for the residential automation market;
* Commercial Building Automation (CBA), applications targeted at a commercial building
environment;
* Personal Home and Hospital Care (PHHC), used by all the devices which jointly cooperate to fulfil the requirements of a non-invasive health care application
;
Changed line 66 from:
* ''SSP'' (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non è richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, che permettono di demandare a dispositivi fidati l'autenticazione delle richieste di join alla rete;
to:
* ''SSP'' (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non è richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, dispositivi fidati per la distribuzione delle chiavi di sicurezza;
Changed lines 71-72 from:

!!Caratteristiche
to:
Condludendo, lo stack ZigBee ha tre tipi di profili:
* ''Profilo 0'': è quello privato, che può essere usato per qualsiasi uso e che non offre l'interoperabilità con altre reti ZigBee;
* ''Profilo 1'': lo standard ZigBee Stack Profile;
* ''Profilo 2'': lo ZigBee Pro Stack Profile, basato sullo stack della versione del 2007, a cui sono state aggiunte molte funzioni sulla sicurezza più altre finezze mostrate nella tabella sotto:

%center%Attach:RW-zigbeeVsPro.gif

!!Tipi di dispositivo
Da un punto di vista logico, i dispositivi ZigBee possono essere di tre tipi:
* ''ZigBee Coordinator'' (ZC): unico per ogni rete, ne costituisce la radice e può fare da ponte tra più reti diverse. E' un full function device, è spesso alimentato ed è in grado di memorizzare informazioni sulla sua rete e agire come deposito per le chiavi di sicurezza. Inoltre, il coordinatore è il dispositivo che fa partire e configura la rete, gestisce i trust center e le binding table;
* ''ZigBee Router'' (ZR): si connette al coordinatore e permette l'inoltro dei messaggi tra i dispositivi, aumentando così le distanze di copertura della rete. Può essercene più di uno per ogni rete (a meno che non si abbia una rete a stella, e allora non ce n'è neanche uno), ed è anch'esso un full function device;
* ''ZigBee Device'' o ''ZigBee End Device'' (ZED): è un reduced function device, perché le sue funzionalità si riducono al dialogare con coordinatore o router (non possono trasmettere dati provenienti da altri dispositivi). Richiedono poca memoria, hanno bassi consumi e costi inferiori rispetto agli altri due tipi di dispositivi.

!!Cluster
Dalle [[FAQ del protocollo->http://www.zigbee.org/About/FAQ.aspx]]: ''The ZigBee Cluster Library (ZCL) is a significant addition to revision 1.1. In ZigBee, a cluster is a message or collection of messages pertaining to a given application domain. Some devices (such as on/off switches) have the same definition and functionality whatever application profile is used. The idea behind creating the ZCL was to provide cluster reusability by abstracting clusters across several application domains and placing them in a library organized according to functional domains (e.g., lighting, closures, HVAC).''

!!Comparative
Added line 89:
Changed lines 92-95 from:
Qualche commento ulteriore sullo ZigBee. Anzitutto la durata delle batterie dipende dal tipo delle batterie stesse: per le normali stilo si parla di anni, mentre per quelle al litio più avanzate si parla tranquillamente di decenni. La dimensione della rete intesa come numero di nodi collegabili è sovradimensionata in modo imbarazzante rispetto alla quasi totalità delle applicazioni. E' supportata l'architettura di rete mesh, che permette l'autocostruzione della rete stessa: il device ne chiede la struttura al coordinatore e vi si adatta. Mentre per rimpiazzare un modulo Bluetooth dovrò rifare l'aggancio al dispositivo, la sostituzione di un modulo ZigBee avviene automaticamente nel modo corretto, perché è tutto demandato a livello applicativo (e non fisico o network come negli altri protocolli).


..to be continued
to:
Qualche commento ulteriore sullo ZigBee. Anzitutto la durata delle batterie dipende dal tipo delle batterie stesse: per le normali stilo si parla di anni, mentre per quelle al litio più avanzate si parla tranquillamente di decenni. La dimensione della rete intesa come numero di nodi collegabili è sovradimensionata in modo imbarazzante rispetto alla quasi totalità delle applicazioni. E' supportata l'architettura di rete mesh, che permette l'autocostruzione della rete stessa: il device ne chiede la struttura al coordinatore e vi si adatta. Mentre per rimpiazzare un modulo Bluetooth dovrò rifare l'aggancio al dispositivo, la sostituzione di un modulo ZigBee avviene automaticamente nel modo corretto, perché è tutto demandato a livello applicativo (e non fisico o network come negli altri protocolli).\\
Lo ZigBee cerca quindi di prendere sia i pregi della Wi-Fi che quelli del Bluetooth.
Changed line 78 from:
to:
..to be continued
Changed lines 11-17 from:
* building automation (sistemi intelligenti di illuminazione, controllo avanzato del riscaldamento/condizionamento, ...);
* consumer electronics (per TV, lettori DVD/CD, ...) e PC & peripherals (per mouse, tastiere o joystick wireless, ...). Hanno poco senso perché ci sono già il Bluetooth e l'IrDA che funzionano benissimo;
* home control (rilevatori di fumo o incendi, elettrodomestici intelligenti, sistemi di sicurezza e di controllo degli accessi tramite badge o sistemi biometrici, ...);
* telecom services (monitoraggio e controllo dei servizi mobili, teleassistenza, ...);
* industrial control (controllo dei processi, gestione degli asset, gestione ambientale o energetica, ...);
* personal health care (ad esempio il monitoraggio dei parametri vitali dei pazienti). Queste due ultime applicazioni sono le più interessanti su cui investire (almeno per la società del prof Rapacioli).
to:
* ''building automation'' (sistemi intelligenti di illuminazione, controllo avanzato del riscaldamento/condizionamento, ...);
* ''consumer electronics'' (per TV, lettori DVD/CD, ...) e PC & peripherals (per mouse, tastiere o joystick wireless, ...). Hanno poco senso perché ci sono già il Bluetooth e l'IrDA che funzionano benissimo;
* ''home control'' (rilevatori di fumo o incendi, elettrodomestici intelligenti, sistemi di sicurezza e di controllo degli accessi tramite badge o sistemi biometrici, ...);
* ''telecom services'' (monitoraggio e controllo dei servizi mobili, teleassistenza, ...);
* ''industrial control'' (controllo dei processi, gestione degli asset, gestione ambientale o energetica, ...);
* ''personal health care'' (ad esempio il monitoraggio dei parametri vitali dei pazienti). Queste due ultime applicazioni sono le più interessanti su cui investire (almeno per la società del prof Rapacioli).
Changed lines 19-20 from:
La ZigBee Alliance è un'organizzazione formatasi nel 2002 con l'obiettivo di sviluppare e promuovere il protocollo ZigBee (dal livello MAC in su).
L'utilizzo del protocollo per fini non commerciali è consentito a tutti (qui le specifiche http://www.zigbee.org/Products/DownloadZigBeeTechnicalDocuments.aspx), mentre se vuoi vendere prodotti col marchio ZigBee devi seguire una strada un po' più tortuosa. Prima di tutto devi iscriverti alla ZigBee Alliance (la sottoscrizione base costa 3500$ all'anno), che ti fornirà un id industriale per le tue soluzioni e ti schiuderà le porte dell'assistenza e delle specifiche più fighe ed utili. Per questo motivo quando dall'Alliance dicono che il protocollo è open, al nostro amico GNU gli girano le corna (la licenza GPL dice ben altro). Ora che sei membro della ZigBee Alliance (come Adopter, Participant o Promoter), devi decidere che profilo dare alla tua applicazione, ovvero definire il ruolo e le funzioni dei dispositivi della tua rete ZigBee. Fondamentalmente puoi scegliere tra due tipi di profili:
to:
La '''ZigBee Alliance''' è un'organizzazione formatasi nel 2002 con l'obiettivo di sviluppare e promuovere il protocollo ZigBee (dal livello MAC in su).
L'utilizzo del protocollo per fini non commerciali è consentito a tutti (qui le specifiche http://www.zigbee.org/Products/DownloadZigBeeTechnicalDocuments.aspx), mentre se vuoi vendere prodotti col marchio ZigBee devi seguire una strada un po' più tortuosa. Prima di tutto devi iscriverti alla ZigBee Alliance (la sottoscrizione base costa 3500$ all'anno), che ti fornirà un id industriale per le tue soluzioni e ti schiuderà le porte dell'assistenza e delle specifiche più fighe ed utili. Per questo motivo quando dall'Alliance dicono che il protocollo è open, al nostro amico GNU gli girano le corna (la licenza GPL dice ben altro). \\
Ora che sei membro della ZigBee Alliance (come Adopter, Participant o Promoter), devi decidere che profilo dare alla tua applicazione, ovvero definire il ruolo e le funzioni dei dispositivi della tua rete ZigBee. Fondamentalmente puoi scegliere tra due tipi di profili:
Changed line 25 from:
Ci sono però due fregature: la prima è che ogni due mesi questi qua fanno uscire una versione nuova del protocollo, non necessariamente retrocompatibile, e se vuoi mantenere il marchio ZigBee sei costretto a ricertificarti (pagando di nuovo); la seconda è che se per il nostro prodotto dobbiamo utilizzare moduli certificati di terze parti, anche noi dovremo iscriverci alla ZigBee Alliance e ricertificarli!
to:
Ci sono però due fregature: la prima è che ogni due mesi questi qua fanno uscire una versione nuova del protocollo, non necessariamente retrocompatibile, e se vuoi mantenere il marchio ZigBee sei costretto a ricertificarti (pagando di nuovo); la seconda è che se per il nostro prodotto dobbiamo utilizzare moduli certificati di terze parti, anche noi dovremo iscriverci alla ZigBee Alliance e ricertificarli!\\
Changed line 30 from:
Se scegliamo di adottare un profilo pubblico per il nostro prodotto, possiamo scegliere tra i seguenti Application Profiles definiti dalla ZigBee Alliance, ognuno dei quali ha una propria chiave:
to:
Se scegliamo di adottare un profilo pubblico per il nostro prodotto, possiamo scegliere tra i seguenti ''Application Profiles'' definiti dalla ZigBee Alliance, ognuno dei quali ha una propria chiave:
Changed lines 49-51 from:
* beacon-enabled. Lo ZigBee è strutturato in modo da avere un nodo coordinatore e vari altri nodi slave che comunicano con esso e solo con esso. Il beacon è un pacchetto che il modulo master manda a turno a tutti gli slave per dirgli: "io ci sono, se vuoi puoi trasmettermi qualcosa". Se effettivamente qualcuno gli trasmette qualcosa, gestisce la risposta e passa al prossimo. Il beacon è mandato in polling su tutta la rete ogni tot tempo (dai 15,36 millisecondi ai 768,432 secondi), passati i quali il master va in sleep-mode; i consumi di energia si riducono anche per i nodi slave, perché si attivano solo quando ricevono un beacon, quindi per la maggior parte del tempo sono spenti. Questa modalità di funzionamento della rete è più dinamica ma anche più complessa, ed è spesso utilizzata per implementare le reti mesh;
* non beacon-enabled, definita anche rete attiva. Non mandando beacon, il coordinatore deve rimanere sempre attivo, così da permettere agli slave di comunicare in qualsiasi momento e senza perdere nessun dato. Le conseguenze pratiche sono due: la prima è che l'autonomia del master si riduce drasticamente, e infatti spesso è alimentato; la seconda è che va adottato un meccanismo di accesso al canale di tipo CSMA/CA, quindi con una strategia collision avoidance, per evitare appunto collisioni nelle trasmissioni. Avremo quindi alcuni dispositivi sempre accesi e pronti a ricevere, ed altri che trasmettono solo in presenza di uno stimolo esterno. Ricapitolando, la modalità non beacon-enabled consuma più batteria, è più statica, ma permette agli slave di comunicare in qualsiasi momento ed è molto più semplice da realizzare.
to:
* ''beacon-enabled''. Lo ZigBee è strutturato in modo da avere un nodo coordinatore e vari altri nodi slave che comunicano con esso e solo con esso. Il beacon è un pacchetto che il modulo master manda a turno a tutti gli slave per dirgli: "io ci sono, se vuoi puoi trasmettermi qualcosa". Se effettivamente qualcuno gli trasmette qualcosa, gestisce la risposta e passa al prossimo. Il beacon è mandato in polling su tutta la rete ogni tot tempo (dai 15,36 millisecondi ai 768,432 secondi), passati i quali il master va in sleep-mode; i consumi di energia si riducono anche per i nodi slave, perché si attivano solo quando ricevono un beacon, quindi per la maggior parte del tempo sono spenti. Questa modalità di funzionamento della rete è più dinamica ma anche più complessa, ed è spesso utilizzata per implementare le reti mesh;
* ''non beacon-enabled'', definita anche rete attiva. Non mandando beacon, il coordinatore deve rimanere sempre attivo, così da permettere agli slave di comunicare in qualsiasi momento e senza perdere nessun dato. Le conseguenze pratiche sono due: la prima è che l'autonomia del master si riduce drasticamente, e infatti spesso è alimentato; la seconda è che va adottato un meccanismo di accesso al canale di tipo CSMA/CA, quindi con una strategia collision avoidance, per evitare appunto collisioni nelle trasmissioni. Avremo quindi alcuni dispositivi sempre accesi e pronti a ricevere, ed altri che trasmettono solo in presenza di uno stimolo esterno. Ricapitolando, la modalità non beacon-enabled consuma più batteria, è più statica, ma permette agli slave di comunicare in qualsiasi momento ed è molto più semplice da realizzare.
Changed lines 57-58 from:
%center%RW-stackZigBee.gif
to:
%center%Attach:RW-stackZigBee.gif
Changed lines 64-68 from:
* network, il livello più passo, che può essere paragonato al livello delle direttive ("creami una rete con questi parametri"). Il suo compito è infatti quello di gestire in automatico le direttive applicative col livello MAC (a cui è direttamente interfacciato) e quello fisico, di gestire le connessioni della rete, la sua sicurezza e la sua creazione. Si occupa inoltre del routing dei messaggi e della route discovery & maintenance. Il network è il primo livello in cui vengono aggiunti header e footer al pacchetto per la sua gestione, così da renderlo comprensibile e gestibile dai livelli sottostanti della pila OSI;
* SSP (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non è richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, che permettono di demandare a dispositivi fidati l'autenticazione delle richieste di join alla rete;
* ZDO (Zigbee Device Object), in cui vengono salvati tutti i dati di configurazione del dispositivo e della rete, così che quando io slave device voglio collegarmi ad essa potrò richidere le informazioni di questo modulo per sapere tutto ciò che serve per entrare nel giro. Spieghiamo meglio un concetto: ogni device è definito da un profilo ed è implementato come application object; ogni application object è collegato al resto dello stack ZigBee attraverso un endpoint (un componente indirizzabile all'interno del dispositivo). La comunicazione avviene da endpoint a endpoint, e all'interno della rete ne esistono due speciali: 0, usato per la configurazione e la gestione dell'intero dispositivo ZigBee; 255, per la comunicazione in broadcasting;
* APS (Application Support Sub-layer), che principalmente mantiene le tabelle per fare il binding ed inoltra i messaggi tra gli endpoint. I suoi servizi sono usati sia dal modulo ZDO che dall'Application Framework;
* AF (Application Framework), in cui si trovano gli oggetti proprietari scritti dagli sviluppatori privati. E' gestito dall'interfaccia pubblica dello ZDO.
to:
* ''network'', il livello più passo, che può essere paragonato al livello delle direttive ("creami una rete con questi parametri"). Il suo compito è infatti quello di gestire in automatico le direttive applicative col livello MAC (a cui è direttamente interfacciato) e quello fisico, di gestire le connessioni della rete, la sua sicurezza e la sua creazione. Si occupa inoltre del routing dei messaggi e della route discovery & maintenance. Il network è il primo livello in cui vengono aggiunti header e footer al pacchetto per la sua gestione, così da renderlo comprensibile e gestibile dai livelli sottostanti della pila OSI;
* ''SSP'' (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non è richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, che permettono di demandare a dispositivi fidati l'autenticazione delle richieste di join alla rete;
* ''ZDO'' (Zigbee Device Object), in cui vengono salvati tutti i dati di configurazione del dispositivo e della rete, così che quando io slave device voglio collegarmi ad essa potrò richidere le informazioni di questo modulo per sapere tutto ciò che serve per entrare nel giro. Spieghiamo meglio un concetto: ogni device è definito da un profilo ed è implementato come application object; ogni application object è collegato al resto dello stack ZigBee attraverso un endpoint (un componente indirizzabile all'interno del dispositivo). La comunicazione avviene da endpoint a endpoint, e all'interno della rete ne esistono due speciali: 0, usato per la configurazione e la gestione dell'intero dispositivo ZigBee; 255, per la comunicazione in broadcasting;
* ''APS'' (Application Support Sub-layer), che principalmente mantiene le tabelle per fare il binding ed inoltra i messaggi tra gli endpoint. I suoi servizi sono usati sia dal modulo ZDO che dall'Application Framework;
* ''AF'' (Application Framework), in cui si trovano gli oggetti proprietari scritti dagli sviluppatori privati. E' gestito dall'interfaccia pubblica dello ZDO.
Added lines 1-80:
(:title Reti wireless - Appunti del 13 Aprile:)
[[Torna alla pagina di Reti wireless-> Reti wireless]]
----

%titolo%''':: Reti wireless - Appunti del 13 Aprile ::'''

!!Introduzione
'''ZigBee''' è un protocollo di comunicazione di alto livello, basato sullo standard wireless IEEE 802.15.4. E' stato standardizzato principalmente per l'automazione e la sensoristica, quindi per soluzioni che prevedono la creazione di Wireless Personal Area Network (WPAN) a basso costo e a basso consumo e con un alto numero di nodi. La lunga autonomia dei dispositivi è legata al bassissimo data rate delle trasmissioni (da 20 a 250 Kb/s), che rimane comunque sufficiente per gestire i modesti volumi di traffico.

Prima di addentrarci nell'argomento, vediamo quali sono le principali applicazioni del protocollo:
* building automation (sistemi intelligenti di illuminazione, controllo avanzato del riscaldamento/condizionamento, ...);
* consumer electronics (per TV, lettori DVD/CD, ...) e PC & peripherals (per mouse, tastiere o joystick wireless, ...). Hanno poco senso perché ci sono già il Bluetooth e l'IrDA che funzionano benissimo;
* home control (rilevatori di fumo o incendi, elettrodomestici intelligenti, sistemi di sicurezza e di controllo degli accessi tramite badge o sistemi biometrici, ...);
* telecom services (monitoraggio e controllo dei servizi mobili, teleassistenza, ...);
* industrial control (controllo dei processi, gestione degli asset, gestione ambientale o energetica, ...);
* personal health care (ad esempio il monitoraggio dei parametri vitali dei pazienti). Queste due ultime applicazioni sono le più interessanti su cui investire (almeno per la società del prof Rapacioli).

!!ZigBee Alliance
La ZigBee Alliance è un'organizzazione formatasi nel 2002 con l'obiettivo di sviluppare e promuovere il protocollo ZigBee (dal livello MAC in su).
L'utilizzo del protocollo per fini non commerciali è consentito a tutti (qui le specifiche http://www.zigbee.org/Products/DownloadZigBeeTechnicalDocuments.aspx), mentre se vuoi vendere prodotti col marchio ZigBee devi seguire una strada un po' più tortuosa. Prima di tutto devi iscriverti alla ZigBee Alliance (la sottoscrizione base costa 3500$ all'anno), che ti fornirà un id industriale per le tue soluzioni e ti schiuderà le porte dell'assistenza e delle specifiche più fighe ed utili. Per questo motivo quando dall'Alliance dicono che il protocollo è open, al nostro amico GNU gli girano le corna (la licenza GPL dice ben altro). Ora che sei membro della ZigBee Alliance (come Adopter, Participant o Promoter), devi decidere che profilo dare alla tua applicazione, ovvero definire il ruolo e le funzioni dei dispositivi della tua rete ZigBee. Fondamentalmente puoi scegliere tra due tipi di profili:
* pubblico (standard): sviluppato e certificato dalla ZigBee Alliance per garantire l'interoperabilità tra dispositivi di diversi produttori. E' sufficiente essere iscritti per iniziare a sviluppare il tuo prodotto, a patto di inviare tutti i tuoi moduli e codici sorgenti. Ad esempio mantenere privato un protocollo per gestire l'accensione di una lampadina sarebbe folle, perché altrimenti pochi produttori di lampadine si uniformerebbero al mio sistema e io avrei fatto un protocollo che non saprebbe usare nessuno;
* proprietario (privato): sviluppato dal produttore per applicazioni in cui l'interoperabilità non è un requisito. Bisogna pagare una certa somma per ogni modulo sviluppato, ed in cambio l'Alliance ti fornisce un id profiles univoco e la certificazione ZigBee, che garantisce la coesistenza del tuo prodotto con tutti gli altri.

Ci sono però due fregature: la prima è che ogni due mesi questi qua fanno uscire una versione nuova del protocollo, non necessariamente retrocompatibile, e se vuoi mantenere il marchio ZigBee sei costretto a ricertificarti (pagando di nuovo); la seconda è che se per il nostro prodotto dobbiamo utilizzare moduli certificati di terze parti, anche noi dovremo iscriverci alla ZigBee Alliance e ricertificarli!
Come alternativa alla certificazione (che dovrebbe costare sui 20-25mila euro per ogni modulo) si può commercializzare il proprio prodotto come comune protocollo wireless, rinunciando all'attestato di garanzia ZigBee.

Bei tempi quelli del Modbus, in cui dovevi limitarti a seguire le specifiche (pubbliche) del protocollo e vivere felice.

Se scegliamo di adottare un profilo pubblico per il nostro prodotto, possiamo scegliere tra i seguenti Application Profiles definiti dalla ZigBee Alliance, ognuno dei quali ha una propria chiave:
* Automated Metering Infrastructure (AMI);
* Home Automation (HA);
* Commercial Building Automation (CBA);
* Personal Home and Hospital Care (PHHC);
* Telecom Applications (TA);
* Wireless Sensor Application (WSA).

!!Livello fisico
Il livello fisico è quello dello standard 802.15.4, che tra i vari compiti ha quello della gestione delle frequenze di utilizzo. Dal momento che queste cambiano a seconda dell'area geografica in cui ci si trova, bisognerà settare opportunamente il parametro Country del modulo ZigBee. Le frequenze utilizzate nel mondo sono fondamentalmente tre:
* 868.3 MHz, per l'Europa;
* 902-928 MHz, per l'America (915 MHz negli Stati Uniti);
* 2405-2480 MHz, per tutte le terre emerse, le precedenti comprese. E' il più performante sia in termini di larghezza di banda (max 250 Kb/s) che di numero di canali utilizzabili (max 16). Il fatto che in Europa si possa utilizzare per lo ZigBee anche questa banda di frequenze si rivela però spesso un'arma a doppio taglio, perché va a sovrapporsi con la banda di trasmissione Wi-Fi, con cui possono esserci interferenze (anche se loro dicono di no http://www.zigbee.org/About/FAQ.aspx#21).

Il rapporto segnale rumore (potenza segnale / potenza rumore nel segnale) è un parametro che dà una stima sulla bontà del segnale: se è molto basso avrò percentuali di fallimento delle trasmissioni trascurabili. Lo ZigBee è il protocollo con i valori più bassi di rapporto segnale rumore, quindi quello con qualità e robustezza maggiori rispetto a Wi-Fi e Bluetooth.

!!Livello datalink
Dello standard 802.15.4, lo ZigBee eredita le specifiche della parte del livello datalink del Medium Access Control (MAC), che fa da tramite tra il livello fisico (che gestisce le potenze e le modalità di connessione-trasmissione della rete) e quello applicativo (che dice cosa posso fare col protocollo). In altre parole il MAC si occupa di rendere il livello applicativo del tutto trasparente alla tecnologia che c'è sotto, sollevandolo da ogni preoccupazione sul tipo di connessione che sto utilizzando (wireless o cablata che sia).
Il protocollo MAC supporta fondamentalmente due tipi di rete:
* beacon-enabled. Lo ZigBee è strutturato in modo da avere un nodo coordinatore e vari altri nodi slave che comunicano con esso e solo con esso. Il beacon è un pacchetto che il modulo master manda a turno a tutti gli slave per dirgli: "io ci sono, se vuoi puoi trasmettermi qualcosa". Se effettivamente qualcuno gli trasmette qualcosa, gestisce la risposta e passa al prossimo. Il beacon è mandato in polling su tutta la rete ogni tot tempo (dai 15,36 millisecondi ai 768,432 secondi), passati i quali il master va in sleep-mode; i consumi di energia si riducono anche per i nodi slave, perché si attivano solo quando ricevono un beacon, quindi per la maggior parte del tempo sono spenti. Questa modalità di funzionamento della rete è più dinamica ma anche più complessa, ed è spesso utilizzata per implementare le reti mesh;
* non beacon-enabled, definita anche rete attiva. Non mandando beacon, il coordinatore deve rimanere sempre attivo, così da permettere agli slave di comunicare in qualsiasi momento e senza perdere nessun dato. Le conseguenze pratiche sono due: la prima è che l'autonomia del master si riduce drasticamente, e infatti spesso è alimentato; la seconda è che va adottato un meccanismo di accesso al canale di tipo CSMA/CA, quindi con una strategia collision avoidance, per evitare appunto collisioni nelle trasmissioni. Avremo quindi alcuni dispositivi sempre accesi e pronti a ricevere, ed altri che trasmettono solo in presenza di uno stimolo esterno. Ricapitolando, la modalità non beacon-enabled consuma più batteria, è più statica, ma permette agli slave di comunicare in qualsiasi momento ed è molto più semplice da realizzare.

I frame aggiunti al pacchetto dal livello MAC possono essere di quattro tipi: beacon, data, ack (il comune acknowledgement, che dà garanzie sulla ricezione dei dati) e command (per inviare comandi di gestione). Quest'ultimo è mantenuto separato dal frame dei dati così da favorire l'utilizzo da parte di sviluppatori diversi da quelli originari, perché più facilmente individuabile e documentabile.

!!ZigBee Stack Architecture
Sui due livelli visti finora si appoggia lo Stack ZigBee vero e proprio. Vediamo lo schema complessivo dell'architettura:

%center%RW-stackZigBee.gif

La parte in rosa è quella dell'802.15.4, quindi livello fisico e MAC. Si noti che attraverso la configurazione di alcuni parametri è possibile intervenire sui consumi dei moduli. Ad esempio si può aumentare l'autonomia dei device abbassando la potenza di uscita (riducendo di conseguenza il range della rete), o diminuendo la frequenza di invio dei beacon.

La parte in giallo è quella applicativa scritta dal produttore.

La parte in azzurro è quella definita dalla ZigBee Alliance. Vediamo i vari livelli:
* network, il livello più passo, che può essere paragonato al livello delle direttive ("creami una rete con questi parametri"). Il suo compito è infatti quello di gestire in automatico le direttive applicative col livello MAC (a cui è direttamente interfacciato) e quello fisico, di gestire le connessioni della rete, la sua sicurezza e la sua creazione. Si occupa inoltre del routing dei messaggi e della route discovery & maintenance. Il network è il primo livello in cui vengono aggiunti header e footer al pacchetto per la sua gestione, così da renderlo comprensibile e gestibile dai livelli sottostanti della pila OSI;
* SSP (Security Service Provider), è il modulo che si occupa della sicurezza del protocollo, un elemento di novità rispetto al Bluetooth o all'IrDA. Si noti che l'SSP non è direttamente collegata agli altri moduli, ma prevede uno scambio di messaggi tra il livello network e quello applicativo; questa scelta progettuale fa sì che l'intero modulo sia facilmente bypassabile nel caso in cui non è richiesta la sicurezza del protocollo. Tra le funzionalità principali offerte dall'SSP citiamo: gestione della chiave WEP (e nei nuovi standard ZigBee anche WPA e WPA2); crittazione dei dati; anti-replay attack, che impedisce che un modulo possa essere bloccato da un invio incessante di dati (se arrivano richieste molto ravvicinate dallo stesso dispositivo, possiamo decidere se tollerarle o scartarle o inibire il device petulante o malevolo); gestione dei trust center, che permettono di demandare a dispositivi fidati l'autenticazione delle richieste di join alla rete;
* ZDO (Zigbee Device Object), in cui vengono salvati tutti i dati di configurazione del dispositivo e della rete, così che quando io slave device voglio collegarmi ad essa potrò richidere le informazioni di questo modulo per sapere tutto ciò che serve per entrare nel giro. Spieghiamo meglio un concetto: ogni device è definito da un profilo ed è implementato come application object; ogni application object è collegato al resto dello stack ZigBee attraverso un endpoint (un componente indirizzabile all'interno del dispositivo). La comunicazione avviene da endpoint a endpoint, e all'interno della rete ne esistono due speciali: 0, usato per la configurazione e la gestione dell'intero dispositivo ZigBee; 255, per la comunicazione in broadcasting;
* APS (Application Support Sub-layer), che principalmente mantiene le tabelle per fare il binding ed inoltra i messaggi tra gli endpoint. I suoi servizi sono usati sia dal modulo ZDO che dall'Application Framework;
* AF (Application Framework), in cui si trovano gli oggetti proprietari scritti dagli sviluppatori privati. E' gestito dall'interfaccia pubblica dello ZDO.


!!Caratteristiche
Vediamo ora le principali differenze tra ZigBee, Wi-Fi e Bluetooth attraverso la seguente tabella:
%center%Attach:RW-tabellaComparativa.gif

Qualche commento ulteriore sullo ZigBee. Anzitutto la durata delle batterie dipende dal tipo delle batterie stesse: per le normali stilo si parla di anni, mentre per quelle al litio più avanzate si parla tranquillamente di decenni. La dimensione della rete intesa come numero di nodi collegabili è sovradimensionata in modo imbarazzante rispetto alla quasi totalità delle applicazioni. E' supportata l'architettura di rete mesh, che permette l'autocostruzione della rete stessa: il device ne chiede la struttura al coordinatore e vi si adatta. Mentre per rimpiazzare un modulo Bluetooth dovrò rifare l'aggancio al dispositivo, la sostituzione di un modulo ZigBee avviene automaticamente nel modo corretto, perché è tutto demandato a livello applicativo (e non fisico o network come negli altri protocolli).




----
[[Torna alla pagina di Reti wireless-> Reti wireless]]