Comandi per la gestione dell’illuminazione e delle automazioni

In questo post vedremo quali sono i comandi principali per gestire la parte di illuminazione e quella di automazione utilizzando i gateway ethernet.

Partiamo da un comando generico del tipo:

*WHO*WHAT*WHERE##

WHERE:

- 0 Comando generale, verrà inviato a tutto l’impianto
- 1 - 9 Comando d’ambiente, verrà inviato solo ai dispositivi che appartengono all’ambiente specificato
- #1 - #9 Comando di gruppo, verrà inviato solo ai dispositivi che appartengono al gruppo specificato
- 11 – 99 Comando punto-punto, verrà inviato solo al dispositivo con l’indirizzo specificato

Illuminazione

Il WHO per l’illuminazione è 1 e possiamo:

1) Accendere e spegnere una luce, un gruppo di luci o l’intero sistema
2) Cambiare la luminosità di un dimmer, un gruppo di dimmer o dell’intero sistema
3) Far lampeggiare una luce, un gruppo di luci o l’intero sistema
4) Impostare un timer per una luce, un gruppo di luci o l’intero sistema

Noi vedremo soltanto i primi due punti, per gli altri due potete dare un’occhiata alla guida ufficiale.

WHAT:

- 0 spegnimento luce
- 1 accensione luce
- 2 – 10 luminosità del dimmer 2 = 20%, 10 = 100%

Esempi:

1) *1*0*11## Spegne la luce con indirizzo 11
2) *1*5*15## Setta la luminosità del dimmer con indirizzo 15 al 50%
3) *1*1*1## Accende tutte le luci che appartengono all’ambiente 1
4) *1*0*#2## Spegne tutte le luci che appartengono al gruppo 2

E se volessimo richiedere lo stato di un punto luce/dimmer, di un gruppo di luci/dimmer o di tutte le luci/dimmer appartenenti ad un ambiente?

Possiamo utilizzare questo comando:

*#WHO*WHERE## e visto che stiamo trattando la parte d’illuminazione il comando diventa:

*#1*WHERE##

Esempi:

1) *#1*11# Richiede lo stato del punto luce/dimmer con indirizzo 11. Il gateway ritorna un messaggio del tipo *1*WHAT*11## ( *WHO*WHAT*WHERE## ) dove WHAT rappresenta lo stato del punto luce
2) *#1*1## Richiede lo stato dei punti luci/dimmer con ambiente 1. Il gateway ritorna un numero di messaggi, del tipo *1*WHAT*WHERE##, pari al numero di periferiche che appartengono all’ambiente 1

Automazione

Il WHO per l’automazione è 2 e possiamo alzare, abbassare o fermare un carico (ad esempio una tapparella).

WHAT:

- 0 ferma il carico
- 1 alza il carico
- 2 abbassa il carico

Esempi:

1) *2*1*91## Alza la tapparella/automazione con indirizzo 91
2) *2*2*9## Ferma tutte le tapparelle/automazioni che appartengono all’ambiente 9
3) *2*0*#3## Ferma tutte le tapparelle/automazioni che appartengono al gruppo 3

Ok, e per richiedere lo stato di un’automazione, di un gruppo o di tutte le automazioni di un determinato ambiente?

Il comando sarà *#2*WHERE##

Esempi:

1) *#2*45## Richiede lo stato dell’automazione con indirizzo 45. Il gateway ritorna un messaggio del tipo *2*WHAT*45## ( *WHO*WHAT*WHERE## ) dove WHAT rappresenta lo stato dell’automazione
2) *#2*6## Richiede lo stato di tutte le automazioni con ambiente 6. Il gateway ritorna un numero di messaggi, del tipo *2*WHAT*WHERE##, pari al numero di periferiche che appartengono all’ambiente 6

Connettersi ad un gateway MyHome

Nell’ultimo post riguardante l’impianto domotico MyHome ed il protocollo OpenWebNet abbiamo visto dato un’occhiata ai vari tipi di messaggi e alla modalità di valorizzazione dei relativi campi.

Ora cercheremo di capire come possiamo connetterci ad un gateway MyHome e cosa possiamo fare dopo che ci siamo connessi.

Tutti i gateway TCP (F453AV, F452, Touch Screen, MH200, ...) supportano due tipi di sessioni:

1) Sessione Comando: usata per inviare comandi dal client al gateway
2) Sessione Monitor: usata dal gateway per notificare il client di qualche evento

I gateway restano in ascolto sulla porta TCP 20000.

Gli steps per creare una sessione con il gateway sono 3:

1) Connessione
2) Identificazione
3) Comunicazione

Prima di vedere questi tre steps, cerchiamo di capire cos’è l’IP range, visto che è un concetto che crea abbastanza confusione all’interno della community MyHome.

Possiamo affermare che esistono due tipi di applicazioni: quelle sviluppate da Bticino e quelle sviluppate da noi (non fa una piega :D). Ma quali sono le differenze??
Vediamo un piccolo esempio:

Supponiamo di aver installato la nostra applicazione su una macchina X, quando ci connettiamo al gateway MyHome il gateway verificherà che l’indirizzo IP della macchina X fa parte degli IP “conosciuti” sul gateway (IP range), cioè degli IP che possono connettersi al gateway senza utilizzare il processo di autenticazione (il processo di autenticazione non è stato rilasciato da Bticino). Nel caso l’IP di X sia in quella lista la nostra applicazione potrà connettersi senza problemi, nel caso contrario non riuscirà a connettersi.

E voi direte: e quindi?
Supponiamo che nella macchina X, oltre alla vostra applicazione, sia installato il software di Bticino per la configurazione del gateway. L’IP di X è all’interno dell’IP range. Se provate a connettere l’applicazione sviluppata da Bticino al gateway, la connessione fallirà! Questo perchè:

1) Il gateway controlla se l’IP di X è all’interno dell’IP range
2) Se è così (come nel nostro caso) il gateway non utilizzerà il processo di autenticazione, quindi non invierà all’applicazione determinati messaggi usati nel processo di autenticazione.
3) Le applicazioni sviluppate da Bticino si aspettano questi messaggi e non ricevendole chiudono la connessione

Per cui se volete usare un sw scritto da Bticino (ad esempio Ti453, Ti452, ...) e l’IP della vostra macchina è nella lista degli indirizzi IP aperti dovete cambiare IP alla macchina e assegnarne uno che non sia all’interno dell’IP range.

Bene ora possiamo passare ai tre steps per connettersi al gateway!

Connessione:

Il client effettua una connessione TCP sulla porta 20000 specificando l’indirizzo del server. Se la connessione ha successo il server invia un ACK ( *#*1## )

clip_image001

Il server si mette in attesa del “session identificator” che deve pervenire entro 30 secondi (altrimenti il server chiude la sessione)

Il SESSION IDENTIFICATOR rappresenta il tipo di sessione che vogliamo aprire con il gateway:

- Comando: *99*0##
- Monitor: *99*1##

Identificazione:

Una volta che il server ha ricevuto il SESSION IDENTIFICATOR controllerà se l’indirizzo IP del client richiede l’autenticazione.

Se è necessaria l’autenticazione, il server invia l’open *#SEQ1## e attende (nei 30 secondi) *#SEQ2## e analizza la password.

Bticino non ha rilasciato l’algoritmo per generare la “password” ( SEQ2 ) per cui se creiamo un’applicazione che interagisce con l’impianto MyHome dobbiamo per forza inserire l’IP del computer su cui gira il programma sulla lista degli IP “conosciuti” dal gw (IP range). Questo lo si può fare tramite i programmi di configurazione per i gateway.

clip_image002

Una volta inviato il SESSION IDENTIFICATOR il gateway ci ritornerà un altro ACK ( *#*1## ). Qualora la connessione necessiti di password e la password inviata non è corretta, il server ritornerà un NACK (*#0##)

Communicazione:

Ora a seconda del tipo di sessione stabilita possiamo o mandare comandi all’impianto

clip_image003

oppure aspettare che accada qualcosa all’interno dell’impianto (viene accesa una luce, cambia la temperatura, etc...)

clip_image004

Nel prossimo post vedremo quali sono i comandi per gestire l’illuminazione e le automazioni :)