Revisione 0.15
I nodi centrali sono costituiti dalla costruzione di un linguaggio adeguato ed un ambiente, nella realtà due integrati:
- Sistema Centrale, raggiungibile mediante Internet, con erogazione Servizi I.o.T.
- Sistemi Base I.o.T.: Processore con il Sistema Periferico I.o.T., Controller, Attuatori e Sensori
I dispositivi,servizi ed utenti IoT devono comunicare tra essi e con i Sistemi I.o.T. mediante un dato linguaggio mediante:
- SSH
- TCP ROW in tunnel cifrato nei tratti pubblici
- Telnet in tunnel cifrato nei tratti pubblici
- terminale
- SOAP
- REST 2
- RDBMS
- WEB
- ReportManager
- middleware RDBMS
- middleware ReportManager
E’ auspicabile che anche l’utente umano utilizzi lo stesso linguaggio mediante il servizio più congegnale, per esempio con una WEB-UI oppure una app desktop oppure usando un terminale seriale o telnet o tcp-row.
Osserviamo come protocolli, sotto certi aspetti obsoleti, quali telnet, diventino attuali con dispositivi estremamente scarni microcontroller di larga diffuzione.
E comunque si deve tenere ben presente che nell’ambito dell’automazione industriale siano ancora insostituibili i terminali seriali, che sfruttano per esempio schede RS 232 con protocolli quali MODBUS, e terminali telnet.
Quindi stiamo costruendo la nostra proposta di linguaggio IoT.
Linguaggio utilizzato, ricordiamo, da dispositivi spesso con risorse molto limitate o con forti vincoli. Quindi il primo passo è stato di dotare questi dispositivi di variabili e di file.
Le variabili devono essere dichiarate e sono permanenti. Il comando var permette di usare le variabili. I tipi sono testo, numero, data, logico, ed anche coppie o terne tra tipi. Ogni variabile memorizza il timestamp dell’ultima modifica.
Quindi l’ IoT-device AVR_Arduino_Due può creare la variabile ultimo_aggiornamento_temperature_deposito_due e scrivere valore e data dell’ultimo aggiornamento. In occasione di una prossima collegamento potrà leggere tale valore. Un IoT-display può costantemente visualizzare tale variabile.
Le variabili permettono la memorizzazione di parametri, stati, in particolare di attuatori, informazioni sulla particolare applicazione, messaggi, e quant’altro sia utile all’applicazione specifica.
I file sono utilizzati in prevalenza per accodare dati rilevati in genere da sensori. Quindi hanno senso per grandi mole di dati.
In genere le rilevazioni sono di tipo numerico abbinate ad una data-time ed hanno, in particolare, la finalità di archivio storico e statistico.
Il singolo dispositivo IoT, che utilizza il file ed effettua rilevazioni in tempi inferiori al secondo, deve avere la funzione di buffer per dati e non di realizzare uno stream di dati verso il Sistema IoT. Ovvero deve memorizzare sequenze di valori con le date-time di rilevazione per poi aggiornarle nel Sistema IoT con frequenza del minuto o dei 10 minuti o dell’ora. E non rimanere connesso stabilmente al sistema IoT riversando continuamente valori, situazione che vagamente ricorda lo stream di dati. La disponibilità di buffer è indispensabile anche per temporanee assenze di connettività internet.
Se il dispositivo riesce a comunicare in TCP-row, con la frequenza stabilità può connettersi, riversare la sequenza di valori nel buffer, chiudere la connessione. Realizzando il contesto di massima velocità.
Ogni dato numerico memorizzato viene, in modo automatico, registrato con la data e l’orario di inserimento, eventualmente la data ed l’orario indicata da chi inserisce l’informazione, e la rappresentazione del numero nel formato stringa.
In questo modo sono già pronte lunghe sequenza di numeri per elaborazioni statistiche o stringhe per visualizzazioni testuali: non servono conversioni di tipo e non sono soggiacenti a meccanismi di casting.
Oltre al tipo di dato elementare numerico, sono previsti i tipi stringa, data, data ed orario (datetime), e logico.
Nei file si possono memorizzare dati di tipo diverso, esplicitando di dato in dato il tipo desiderato.
Sono previsti comandi che considerano solo i dati di tipo numerico dei file.
Oltre a comandi per l’utilizzo delle variabili e file, sono previsti comandi per:
- Gestione RDBMS compreso esportazione ed importazione dati
- invio email
- raccolta dati in file ed invio nel formato XLSX
- raccolta dati ed invio nel formato CSV
- raccolta dati ed invio nel formato PDF
- sia come liste che nella veste grafica di chart
- gestione di report e graafici in genere mediante un sistema JasperReport
- set comandi per Raspberry PI via network
- set comandi pr Arduino via USB
- comandi specifici per applicazioni reali, quali monitoraggio aree CED o automazione
- programmazione attività pianificate
- comandi specifici per particolari applicazioni
- e molto altro