# X10 (standard)

X10 è uno standard industriale aperto e internazionale per la comunicazione tra dispositivi elettronici per la domotica. Usa principalmente una tecnica di trasmissione dei dati su linee elettriche (in italiano "onde convogliate", in inglese PLC - Power Line Communication) per segnalazione e controllo. È anche definito un trasporto basato su radio.
Anche se esistono alternative con larghezza di banda superiore, tra cui KNX (konnex), INSTEON, BACnet e LonWorks, X10 rimane popolare in ambiente domestico con milioni di unità in uso in tutto il mondo, economico e vitale grazie alla continua introduzione di nuovi componenti sul mercato.

## Storia

X10 è nato nel 1975 dalla Pico Electronics di Glenrothes in Scozia con lo scopo di controllare apparecchiature tramite la stessa linea di alimentazione a 110VCA o 220VCA.
Nel 1974 la Pico Electronics fu incaricata dalla BSR (un'industria che lavorava nell'ambito HiFi e musicale) di progettare uno dei componenti per un giradischi innovativo, in seguito progettarono assieme uno dei primi telecomandi (funzionante ad ultrasuoni) che fu applicato a comando dei fari di illuminazione negli spettacoli. In un solo anno, allo stesso scopo, nasce X10 e la relativa X10 Ltd, società con la partecipazione delle due aziende.
Nel 1978 X10 era maturo e cominciarono ad essere disponibili moduli a blister nei negozi di elettronica. Negli anni '80 migliaia di appassionati iniziarono a fare sperimentazione con tutti i computer disponibili, Apple II, Mac, DOS, Windows. Nel 1984 nasce X10 (USA) Inc da cui nasce nel 1989 il primo sistema di sicurezza X10.

## Panoramica sul funzionamento delle onde convogliate

Le apparecchiature X10 comunicano tra di loro comandi o dati digitali - attraverso l'impianto elettrico, lo stesso che in una casa alimenta lampadari ed elettrodomestici.
Il segnale digitale viene modulato sotto forma di impulsi su una portante a 120 kHz. La trasmissione avviene quando la semionda della corrente alternata passa per lo zero. Come noto, l'alimentazione elettrica viene fornita con un'onda sinusoidale che - a seconda del paese - oscilla a una frequenza di 50 o 60 Hz; ad ogni passaggio per lo zero viene trasmesso un bit; per cui la velocità di trasmissione - salvo intoppi - è di 100 o 120 bps.
I dati vengono generalmente trasmessi da un modulo di comando verso un modulo attuatore e consistono di due parti: un indirizzo; e un comando. Moduli attuatori avanzati possono - su interrogazione del modulo comando - trasmettere una risposta di stato che potrebbe essere un semplice "off" / "on" oppure un valore come un livello dimmer o una temperatura o ancora una lettura di un altro sensore.
I dispositivi X10 sono generalmente da inserire nelle prese di corrente, la spina fuoriesce dalla parte posteriore (allo stesso modo del caricabatterie del telefonino) mentre nella parte anteriore si trovano le regolazioni (indirizzo del modulo e altro) e le prese di uscita a cui per esempio si può collegare una lampada a piantana o un televisore o un altro elettrodomestico da comandare. Recentemente (2004) sono comparsi sul mercato però anche dispositivi più compatti, moduli di comando che possono trovare posto incassati al posto dei moduli interruttori a muro e nelle coppette dei lampadari.
La frequenza relativamente alta della portante X10 non disturba le normali apparecchiature collegate alla rete elettrica, al contrario è importante tenere in considerazione che non passa attraverso i trasformatori o tra una fase e l'altra di un impianto multifase, in questi casi è possibile utilizzare - tra una linea e l'altra - un accoppiatore passivo - composto da condensatori - oppure un accoppiatore X10 attivo - che è un vero e proprio ripetitore. I vecchi ripetitori X10 (analogici) - prevedendo un utilizzo in un impianto trifase - per consentire un aggancio in fase dei segnali, per ogni bit ricevuto, provavano a trasmetterlo tre volte a distanza di un sesto di ciclo emettendolo effettivamente quando centrato con il passaggio per lo zero.
Se fosse necessario impedire la fuoriuscita del segnale X10 dall'area locale, così da evitare che i comandi interferiscano con i moduli di un vicino di casa, è possibile inserire un filtro induttivo che attenua i segnali in ingresso e in uscita.

## Il protocollo

Indipendentemente dalla portante fisica, i pacchetti trasmessi con il protocollo di controllo X10 consistono di 4 bit per indicare un house code, seguiti da uno o più gruppi di 4 bit a designare il codice dell'unità, e a chiudere un comando sempre di 4 bit. Al fine di rendere la configurazione più facile all'utilizzatore, l'house code viene selezionato come una lettera da "A" a "P", mentre il codice dell'unità come un numero da 1 a 16.
Al momento dell'installazione, ogni dispositivo sotto controllo è configurato con uno dei 256 indirizzi possibili (16 house code x 16 codici dei unità); ogni dispositivo reagisce ai comandi specificatamente inviatigli, o anche a broadcast.
Il protocollo potrebbe trasmettere un messaggio che dica "seleziona A3", seguito da "accensione". È permesso indirizzare molteplici unità prima di dare il comando, in modo da avere effetto contemporaneamente. Ad esempio, "seleziona A3", "seleziona A15" "seleziona A4" e infine "accendi" fa sì che le unità "A3", "A4" e "A15" si accendano tutte.
Si noti che non sono poste restrizioni, eccetto magari considerazioni relative ai vicini, all'utilizzo di più house code all'interno della stessa casa. Il comando "accendi tutte le luci" e "spegni tutte le unità" avrà effetto esclusivamente su un singolo house code, per cui usarne molteplici comporta dividere i dispositivi in zone separate.
List dei comandi:
| Codice | Funzione | Descrizione |
| 0 0 0 0 | All Units Off | spegni tutti i dispositivi con l'house code indicato nel messaggio |
| 0 0 0 1 | All Lights On | accendi tutti i dispositivi di illuminazione (con la possibilità di controllo di luminosità) |
| 0 0 1 0 | On | accendi un dispositivo |
| 0 0 1 1 | Off | spegni un dispositivo |
| 0 1 0 0 | Dim | riduci l'intensità della luce |
| 0 1 0 1 | Bright | aumenta l'intensità della luce |
| 0 1 1 1 | Extended Code | codice d'estensione |
| 1 0 0 0 | Hail Request | richiedi una risposta da uno o più dispositivi con l'house code indicato nel messaggio |
| 1 0 0 1 | Hail Acknowledge | risposta al messaggio precedente |
| 1 0 1 x | Pré-Set Dim | seleziona uno di due livelli di luminosità predefiniti |
| 1 1 0 1 | Status is On | risposta a Status Request che il dispositivo è acceso |
| 1 0 0 1 | Hail Acknowledge | risposta al messaggio precedente |
| 1 1 1 0 | Status is Off | risposta che il dispositivo è spento |
| 1 1 1 1 | Status Request | richiedi lo stato di un dispositivo |

## Dettagli sullo strato fisico del protocollo a onde convogliate

Nel caso di portante fisica su linee di alimentazione in corrente alternata a 60 Hz, un bit pari a 1 è rappresentato da un burst di durata pari a 1 ms a 120 kHz nel momento in cui l'onda attraversa lo zero (nominalmente a 0°, ma effettivamente entro 200 μs), immediatamente seguito dall'assenza di un impulso. Un bit pari a 0 è rappresentato dall'assenza dei 120 kHz durante l'attraversamento, immediatamente seguita dalla presenza di un impulso. Tutti i messaggi sono inviati due volte per ridurre la possibilità di riceverne di spuri. Tenendo conto della ritrasmissione, del controllo di linea, ecc., la velocità si aggira intorno ai 20 bit/s, così lenta che la tecnologia resta confinata all'accensione e spegnimento di dispositivi o altre operazioni molto semplici.
Al fine di permettere di identificare l'inizio, ogni pacchetto dati inizia con la sequenza 1110. Subito dopo si trova l'house code (A-P) e quindi un codice di funzione. Questo ha come scopo di specificare il codice di unità (1-16) o un comando, con la selezione tra i due modi determinata dall'ultimo bit: 0 nel primo caso e 1 nel secondo. La sequenza formata da 1110, un house code e un codice di funzione rappresenta il minimo pacchetto dati X10 valido.
Ogni pacchetto dati è inviato due volte per assicurare che il ricevitore lo capisca nonostante il rumore, per ridondanza, affidabilità e tenere conto dei ripetitori di linea.
Ogni volta che i dati cambiano da un indirizzo a un altro, da un indirizzo a un comando o da un comando a un altro, i pacchetti dati devono essere intervallati da almeno 6 attraversamenti dello zero (o 000000). Questa sequenza effettua il reset dell'hardware del decodificatore.

## Il protocollo su portante radio

Al fine di permettere il funzionamento di tastierini senza fili, interruttori remoti e simili, è stato definito anche un protocollo radio, operante alla frequenza di 310 MHz negli Stati Uniti e 433 MHz in Europa. I dispositivi inviano pacchetti dati che sono molto simili a quelli che vengono scambiati su linee di alimentazione. Un ricevitore radio si occupa di tradurre i pacchetti dalla modalità radio a quella a onde convogliate.
Tra i dispositivi disponibili che usano questo protocollo si possono trovare:
* tastierini
* controllori portatili da uno a quattro dispositivi X10
* antifurto capaci di inviare dati raccolti da sensori
* interruttori passivi a infrarossi per il controllo di luci e suoni

## Moduli di dispositivo

A seconda del carico da controllare, si devono usare moduli differenti. Nel caso di lampadine a incandescenza si può scegliere un modulo per lampada o una presa da muro. Questi controllano la potenza mediante un interruttore TRIAC allo stato solido e sono in grado di attenuare la luce. Sono quasi totalmente silenziosi quando operano, e pensati per carichi che vanno da 40 a 500 watt.
Per altri tipi di carico, come lampade fluorescenti, lampade a scarica o elettrodomestici, il TRIAC non risulta adatto ed è necessario un modulo da elettrodomestico, che controlla la potenza mediante un relay. Negli Stati Uniti questi moduli sono generalmente indicati per carichi sino a 15 ampere (1800 W a 120 V).
Molti moduli di dispositivo offrono la possibilità di essere controllati localmente. Se il modulo è spento, usando l'interruttore lo si può accendere senza che sia necessario un controllore X10. I moduli interruttori da muro non è detto che lo permettano.
Alcuni moduli interruttori da muro permettono "l'attenuazione locale". Di solito, il pulsante sull'interruttore offre solamente la possibilità di accendere e spegnere, senza variare l'intensità della luce. Se questo è possibile, la pressione sul pulsante fa sì che la lampada vari lungo tutto l'arco della propria luminosità.
Moduli di fascia alta dispongono di caratteristiche avanzate, come la programmabilità sui livelli, la personalizzazione del fade, l'abilità di trasmettere comandi quando vengono usati (cosiddetti dispositivi a due vie), e supporto scene.
Esistono moduli sensore che riportano temperatura, luce, infrarosso, movimento o apertura e chiusura di contatti. Tra i moduli dispositivo si elencano termostati, sirene d'allarme e controllori per interruttori a basso voltaggio.

## Controllori

I controllori X10 vanno da modelli estremamente semplici a modelli molto sofisticati. I primi sono messi per controllare dispositivi X10 con 4 indirizzi consecutivi (1-4 oppure 5-8). Un controllore tipicamente include i seguenti pulsanti:
* unità 1 accesa/spenta
* unità 2 accesa/spenta
* unità 3 accesa/spenta
* unità 4 accesa/spenta
* aumenta/diminuisci luminosità
* accendi/spegni tutte le unità
Controllori più sofisticati possono controllare più unità e/o eseguire funzioni preprogrammate a ore specifiche del giorno. Sono disponibili anche unità che utilizzano rivelatori di movimento passivi a infrarossi o a fotocellule per accendere o spegnere le luci basandosi su condizioni all'esterno.
Infine, unità ancora più complesse completamente programmabili oppure usare un programma eseguite in un computer. Sistemi come questi sono in grado di eseguire eventi multipli a momenti selezionati, rispondere a eventi generati da sensori esterni ed eseguire con la pressione di un singolo pulsante un'intera "scena", accendendo luci, impostando i livelli di luminosità. Esistono programmi di controllo che girano sotto Microsoft Windows, Macintosh e Linux.
Sono disponibili anche sistemi anti-effrazione. In questi il controllore usa il protocollo X10 oppure collegamenti ordinari al fine di interrogare un numero di sensori remoti connessi a porte, finestre e altre punti d'accesso. Poi si può usare il protocollo X10 per attivare luci, sirene, ecc.

## Punti deboli e limitazioni

Un problema di X10 è l'eccessiva attenuazione del segnale tra i due conduttori nel sistema elettrico in uso nelle abitazioni. Segnali da un trasmettitore che viaggiano su un conduttore potrebbero non propagarsi attraverso l'alta impedenza di un trasformatore di distribuzione che connette l'altro conduttore. Spesso non esiste un percorso affidabile per permettere ai segnali X10 di propagarsi da un conduttore di fase a un altro; questo problema può essere transitorio, dovuto a elettrodomestici come forni o asciugatrici che vengono accesi e spenti (all'accensione essi formano un ponte a bassa impedenza per i segnali X10 tra i 2 conduttori di fase). Questo problema è risolvibile in maniera permanente installando un condensatore che permetta ai segnali di propagarsi. I produttori vendono accoppiatori di segnale che si inseriscono in una presa elettrica per fare ciò. In casi più sofisticati si installa un ripetitore attivo tra le fasi, oppure si combinano degli amplificatori di segnale con un dispositivo di accoppiamento. Un ripetitore è necessario nel caso di un sistema trifase. In molti paesi tipicamente un'intera casa usa un singolo conduttore di fase, per cui il problema non si presenta.
Un interruttore differenziale può attenuare i segnali X10 che lo attraversano. Questo può far sì che i segnali non siano sufficientemente forti per consentire una comunicazione affidabile.
Un altro problema è costituito da TV o dispositivi senza fili che generano segnali di accensione o spegnimento spuri. Il filtraggio del rumore, come fatto nei computer e negli elettrodomestici moderni, aiuta a limitare i disturbi dei segnali X10, ma filtri che non sono pensati per questa specifica applicazione possono attenuare le comunicazioni X10 che viaggiano su quelle parti di circuito cui l'elettrodomestico è connesso.
Inoltre, certi tipi di alimentatori utilizzati negli apparati elettrici moderni (ad esempio, computer, TV e ricevitori satellitari) "mangiano" i segnali per via del fatto che creano un percorso a bassa impedenza per segnali ad alta frequenza. Tipicamente i condensatori presenti in ingresso a questi alimentatori mettono in corto i segnali X10 dalla linea alla terra, impedendo ogni comunicazione nei loro pressi. Esistono filtri che impediscono ai segnali X10 di raggiungere dispositivi di tale genere; inserendo dispositivi "difficili" in questi filtri permette di curare problemi che vanno e vengono.
Alcuni controllori X10 potrebbero avere difficoltà con dispositivi a bassa potenza (sotto i 50 W) o con bulbi fluorescenti che non presentano carichi resistivi. Un modulo da elettrodomestico dovrebbe costituire la soluzione.
I segnali X10 possono essere trasmessi solo un comando alla volta, dapprima indirizzando il dispositivo da controllare e poi inviando l'operazione che quel dispositivo deve eseguire. Se due segnali sono trasmessi contemporaneamente, vi può essere una collisione o si possono mischiare, facendo sì che o il comando non venga interpretato o che dia luogo a operazioni scorrette.
Il protocollo è lento; occorrono circa tre quarti di secondo per inviare un indirizzo e un comando. Anche se di solito non percepibile, si nota con interruttori a due vie e controllori collegati a computer. La percezione del ritardo può essere abbassata mediante l'uso di scene e controllo di livello più lento. Con moduli maggiormente avanzati, un'altra opzione consiste nell'utilizzo di comandi estesi che permettono controlli di gruppo, permettendo di variare molteplici moduli all'istante con un singolo comando. Il protocollo permette un controllo avanzato della velocità di abbassamento delle luci, di impostare direttamente il livello di luminosità e di controllare dei gruppi (cosiddetti scene settings) mediante un insieme di comandi avanzati che formano una parte ufficiale dello standard. Tuttavia, il supporto di queste funzionalità non è obbligatorio e molti dei modelli economici implementano solo le funzioni base. In tal caso l'aggiustamento deve avvenire circuito per circuito, il che può essere poco piacevole dal punto di vista visivo, oltre che lento.
Sia su portante fisica sia su radio, il protocollo non permette cifratura e può al più indirizzare 256 dispositivi. A meno di filtraggio, i segnali a onde convogliate provenienti dai vicini possono interferire tra loro se gli stessi indirizzi sono in uso. La stessa cosa può avvenire nel caso senza fili, in particolare se un adattatore tra portante fisica e radio viene installato.

## Adattatori

Esistono adattatori che convertono X10 verso altri standard domotici (ad esempio KNX).