All'inizio è necessario autenticarsi col proprio account Google.
Fig. 2: schermata delle impostazioni.
Al primo accesso occorre inserire i valori "Cartella di workspace", "ID del telecomando", "Intervallo aggiornamento dati in secondi","Max operazioni su Drive" (numero massimo di file letti simultaneamente da Google Drive),"Max comandi simultanei" (numero massimo di comandi inviati contemporaneamente su Google Drive) e premere "Imposta valori". È possibile settare la lingua inglese o italiana. Cliccando "Disconnettiti" viene disconnesso il proprio account Google, mentre su "Chiudi applicazione" si esce dall'applicazione senza effettuare il logout.
Fig. 3: schermata "On - Off".
In questa schermata ci sono i pulsanti per inviare comandi ai dispositivi.
Fig. 4: schermata "Dashboard".
Qui vengono visualizzate le informazioni dei dispositivi.
L'ALGORITMO PRINCIPALE DELL'APPLICAZIONE
Entrando più nel dettaglio, una volta effettuato il login (fig. 1) e inserite le informazioni richieste nella schermata delle impostazioni (fig. 2), l'applicazione esegue ciclicamente il seguente algoritmo:
Nelle fig. 2, 3 e 4 i numeri a destra della scritta "STATUS ALGORITHM OF REMOTE CONTROL" valgono:
1 durante la fase di lettura dei file su Google Drive;
2 durante l'aggiornamento delle schermate "On-Off" e "Dashboard";
3 durante la pausa.
I comandi vengono inviati quando i numeri considerati in precedenza valgono 2 o 3. La pausa dipende dal valore "Intervallo aggiornamento dati in secondi". Il ciclo finale dell'algoritmo può essere interrotto premendo il pulsante "Disconnettiti" o "Chiudi applicazione". In fig. 6 è mostrato un esempio di cartella di workspace al termine del terzo punto dell'algoritmo,
Fig. 6: esempio di workspace completato il terzo punto dell'algoritmo dell'applicazione.
dove si possono notare i file:
"File of Remote control 1" creato dal software;
dei dispositivi da controllare.
Le prossime sezioni spiegano come quest'ultimi vengono impiegati nelle comunicazioni tra telecomando e dispositivi.
FILE DEL REMOTE CONTROL
Ha come nome "File of Remote control " + ID del telecomando; viene generato all'avvio dall'applicazione nel caso in cui non sia presente nella cartella di workspace. L'ID deve essere una stringa alfanumerica univoca. Il contenuto può essere editato liberamente.
FILE DI UN DISPOSITIVO
Deve essere chiamato"File of device " + ID del dispositivo e generato nella cartella di workspace dal relativo dispositivo. L'ID deve essere una stringa alfanumerica univoca. Al suo interno è possibile definire i pulsanti e i valori da visualizzare nelle schermate "On - Off" e "Dashboard", rispettando le seguenti tre regole.
A) Per i pulsanti, in un'unica riga scrivere "buttons: " + nome primo pulsante + ", " + nome secondo pulsante + ", " + ... + ", " + nome ultimo pulsante ";". I nomi non possono includere i simboli ":", ";", "," e devono essere univoci. È possibile definire un particolare pulsante per l'invio di stringhe personalizzate (verrà visto più avanti) inserendo l'elemento "customizable value".
B) Per i valori, in un'unica riga scrivere "values: " + nome primo valore + " is " + primo valore + ", " + nome secondo valore + " is " + secondo valore + ", " + ... + ", " + nome ultimo valore + " is " + ultimo valore + ";". I nomi dei valori non possono includere la stringa " is " e devono essere univoci. I simboli ":", ";" e "," possono essere usati solo per separare i vari elementi della riga.
C) Le righe dei precedenti punti A e B sono facoltative; se presenti, devono essere posizionate per prime. Le altre righe sono modificabili a piacere.
I file dei dispositivi possono essere creati, modificati e cancellati anche quando il remote control è in esecuzione; un esempio è mostrato in fig. 7.
Fig. 7: esempio di file di device.
INVIO DI COMANDI MEDIANTE I PULSANTI DELLA SCHERMATA ON - OFF
I pulsanti della schermata "On - Off" (fig. 3) servono per inviare comandi ai dispositivi. Ora viene spiegato cosa accade alla pressione di uno di essi (ad eccezione di quelli per l'invio di stringhe personalizzate):
1) il tasto viene disabilitato;
2) l'applicazione genera un file nella cartella di workspace con nome "To dev. " + ID dispositivo + " command " + nome pulsante, indirizzato al dispositivo col medesimo ID.
A questo punto, il dispositivo associato deve leggere il file, eseguire l'azione per cui è stato programmato e, alla fine, rispondere con un ACK di conferma generando un file chiamato "From dev. " + ID dispositivo + " ACK " + nome pulsante. Quando il software nota l'ACK:
3) elimina i file del comando e dell'ACK;
4) riattiva il pulsante.
Cliccando, invece, su un pulsante per l'invio di stringhe personalizzate (quelli con la scritta "Invia valore" al centro), l'applicazione genera un file nella cartella di workspace chiamato "To dev. " + ID dispositivo + " command Cus. value " + valore personalizzato (il valore personalizzato è la stringa nella casella di testo sopra al pulsante). Il relativo dispositivo, una volta rilevato il comando, deve eseguire l'azione corrispondente e, alla fine, cancellare il file (anche quelli con nome identico, se presenti) senza rispondere con un ACK.
Un esempio di cartella di workspace contenente comandi e ack è mostrato in fig. 8.
Fig. 8: esempio di cartella di workspace con comandi e ack.
COSA ACCADE SE PIÙ DISPOSITIVI HANNO LO STESSO ID
Se in una cartella di workspace sono presenti più "File of device" con lo stesso ID, l'applicazione va in blocco come in fig. 9 finché il problema non viene risolto.
Fig. 9: schermata dall'applicazione in presenza di "Device file"uguali.
E INFINE
I valori visualizzati nella schermata "Dashboard" (fig. 4) sono quelli definiti nelle righe "values: " dei file dei dispositivi (fig. 7).
Nella schermata delle impostazioni è meglio evitare di inserire valori troppo grandi per "Max operazioni su Drive" e "Max comandi simultanei".
In una workspace sono ammessi più remote control ma ne può funzionare solo uno alla volta.
Il pulsante "Resetta workspace" nella schermata delle impostazioni (fig. 2) serve per eliminare tutti i file di comandi e ack presenti nella workspace.
Nelle parti modificabili a piacere dei nomi di file di dispositivi, remote control, comandi e ack non bisogna inserire le stringhe:
"File of device ";
"File of Remote control ";
"To dev. " insieme a " command ";
"To dev. " insieme a " command Cus. value ";
"From dev. " insieme a " ACK ".
In caso contrario l'applicazione potrebbe funzionare male.
Per motivi di sicurezza, l'applicazione può interagire solamente con i file che ha creato su Google Drive o quelli generati dai dispositivi controllati.
Prima di autenticarsi col proprio account Google, è necessario abilitare le API Google e generare credenziali di autorizzazione seguendo la guida developers.google.com/i...ls/oauth2.
Per questo progetto mi sono aiutato con gli esempi ufficiali Google per Android e quelli contenuti in Android Studio. Pertanto ringrazio i relativi autori.
Note:
1) il software non implementa tutti i sistemi di sicurezza moderni per la protezione dei dati, quindi è meglio evitare di inserire dati sensibili nelle informazioni scambiate tra i dispositivi e Internet;
2) il software è fornito "così com'è", senza alcun tipo di garanzia; non mi assumo nessuna responsabilità sulle conseguenze derivanti dall'uso delle informazioni contenute in questa pagina.