Linguaggio IoT

Comandi  IoT System        versione 0.11

Chi volesse sperimentare od anche partecipare attivamente allo sviluppo del linguaggio per il sistema IoT può inviare la richiesta a lucio.pierluigi@gmail.com

Ogni utente ha privilegi specifici con granularità al singolo comando, ovvero ogni utente ha l’elenco dei comandi che può utilizzare.

Elenco del 2017 04 26

info
Rende informazioni generali.

 

version
Rende la versione del servizio.

 

admin
Riservato a ruoli amministrativi

 

logs
consultazione archivi di sistemi di log.
In questa fase sono previste estrapolazioni dai file text di Syslog, e, soprattutto, dai log da UTM con riverimento a drop, redirect, ip destinazione, ip sorgente e porta.

logs utm1 drop

rende l’ultimo drop eseguito dalla utm1

logs utm1 drop <numero righe>

rende le ultime <numero righe> drop eseguito dalla utm1

logs utm1 redirect

rende l’ultimo redirect eseguito dalla utm1

logs utm1 redirect <numero righe>

rende le ultime <numero righe> redirect eseguito dalla utm1

 

check <system name>
controllo dispositivi, in particolare hosts, RDBMS, UTM, router, …
Restituisce una stringa che riassume lo stato.
Nel caso di RDBMS, legge l’ultimo id da una tabelle di un database dati , restituento:
Ready RDBMS <system name>.<db name>.<table name> last id <id>

oppure se l’operazione fallisce:

Error RDBMS <system name>

 

 

var
gestione variabili

Ogni variabile può appartenere ad uno dei seguenti tipo: text, numeric, date, boolean ed i strutturati textdate e numdate .

Il nome di una variabile non è case-sensitive, pertanto si suggerisce di adottare la notazione minuscola con eventuali segni sotto. La lunghezza massima per il nome della variabile è di 25 caratteri.

Prima di utilizzare una variabile deve essere creata

Per creare il file di nome numero_misure_temperature

var create numero_misure_temperature

Quindi è possibile utilizzare la variabile.

Per scrivere un valore di tipo text:

var write numero_misure_temperature n.c.

oppure, obbligatorio se nel testo ci sono spazi:

var write numero_misure_temperature ‘non pervenuta’

var write numero_misure_temperature “non pervenuta”

Apici singoli o doppi identificano un unico valore di tipo text, altrimenti viene considerato la prima parte della stringa fino allo spazio.

Per scrivere un valore numerico:

var write –numeric numero_misure_temperature 34.567

equivalente a:

var write -n numero_misure_temperature 34.567
Per scrivere un valore boolean:

var write –boolean numero_misure_temperature 1

equivalente a:

var write -b numero_misure_temperature true

Per scrivere un valore date:

var write –date numero_misure_temperature 2016-12-31

equivalente a:

var write -d numero_misure_temperature 2016-12-31

E’ possibile utilizzare i tipi composti textdate:

var write –-textdate numero_misure_temperatureprima misura” 2016-12-31

equivalente:

var write –td numero_misure_temperatureprima misura” 2016-12-31

E’ possibile utilizzare i tipi composti numdate:

var write –-numdate numero_misure_temperature 1357.2468 2016-12-31

equivalente:

var write –nd numero_misure_temperature 1357.2468 2016-12-31
Per leggere il valore della variabile:

var read numero_misure_temperature

Per leggere l’elenco delle variabili create:

var list

 

file 
Gestione dati file.
Questo tipo dati strutturato nasce per l’esigenza di archiviare grandi moli di dati.
L’accesso al singolo elemento del file è per posizione, quindi utilizzabile come un array.
Il singolo valore può appartenere ad uno dei seguenti tipo: text, num, date, bool oppure i tipi strutturati textdate e numdate.
Il nome del file non è case-sensitive, pertanto si suggerisce di adottare la notazione minuscola con eventuali segni sotto.
Prima di utilizzare un file deve essere creato
Per creare il file di nome temperature

file create temperature

Creato il file temperatura, il device iot provvederà ad aggiornare i dati in esso contenuti.
Per accodare nel file di nome temperature il valore del tipo testo “media”:

file append temperature media

oppure, obbligatorio se nel testo ci sono spazi:

file append temperature ‘media’

file append temperature “media”

Apici singoli o doppi identificano un unico valore di tipo text, altrimenti il valore viene suddiviso secondo gli spazi bianchi e quindi caricati singolarmente.

Per esempio

file append temperature media media bassa alta allarme

appende i cinque valori: “media”, “media”, “bassa”, “alta, “allarme”

mentre

file append temperature ‘media media bassa alta allarme’

oppure

file append temperature “media media bassa alta allarme”

Appendono il solo valore di tipo text: “media media bassa alta allarme”

Per accodare un valore numerico:

file append –numeric temperature 34.567

equivalente a:

file append -n temperature 34.567
Per accodare un valore boolean:

file append –boolean temperature vero

equivalente a:

file append –b temperature True

Hanno lo stesso significato:

  • vero, true, Vero, True, VERO, TRUE, 1
  • falso, false, Falso, False, FALSO, FALSE, 0

Per accodare un valore textdate:

file append –textdate temperature ventisette 2017-1-25

equivalente a:

file append -td temperature ‘ventisette’ 2017-01-25

Per accodare un valore numdate:

file append –numdate temperature 18.2022 2017-1-25

equivalente a:

file append -nd temperature 18.20220 2017-1-25

Quest’ultimo tipo è utile nel caso di registrare lunghe sequenza numeriche con relative date di acqusizione. In quasto caso è possibile usare il tipo datetime al posto della date:

file append -nd temperature 18.20220 2017-1-25 ‘2016-12-20 12:25:45’
Per conoscere quanti valori sono stati inseriti nel file di nome temperature:
file len temperature
Per leggere il valore del tipo text nella terza posizione nel file di nome temperature:

file read temperature 3

Per leggere il valore del tipo text nella terza posizione con il timestamp dell’inserimento nel file di nome temperature:

file read –timestamp temperature 3

file read -t temperature 3

Per leggere l’ultimo valore inserito nel file temperatura:

file read last temperature
per leggere gli ultimi cinque valori inseriti:

file read last 5 temperature

 

Il seguente comando richiede alcune considerazioni.

file read temperature

Il comando chiede la restituzione di tutti i valori memorizzati nel file.
I file nascono per memorizzare molti dati, sequenza di misure dalla realtà circostante, anche milioni.
Pertanto la lettura dell’intero file da un device con  risorse modeste, potrebbe creare una congestione dello stesso, quindi si crea una situazione da gestire.
Una soluzione è introdurre limitare il numero dei valori letti, per esempio di 100 o 1000. Ma allora si deve introdurre, oltre al limit,  il concetto di offset. E comunque il device deve avere l’informazione se riceve tutti i dati del file o solo una parte, ma come ? Un modo sarebbe anticipare la sequenza di dati dalla dicitura “limit 1000”, ma allora il device potrebbe dover gestire stringhe descrittivi e numeri.
Per semplificare il device potrebbe contare le risposte, se sono in numero di 1000 allora è quasi certo che il limit sia attivo. Ma in questo caso riceverebbe sempre le prime 1000. Quindi deve gestire l’offset.
Con gran numero di dati nel file, il device dovrebbe usare comandi che aggreghino dati, per esempio rendere la sequenza delle medie tra 1000 dati,quindi 1000 dati aggreagano il milione.
Oppure il device deve fare un ciclo e prendere sequenze di valori voluti mediante id, oppure attivare filtri quali: tutti i valori dalla data alla data oppure dalla datetime alla datetime.
Allo stato attuale implementiamo il comando file read <nome file> con limit = 1000 senza alcun avviso di attivazione del limit.

 

file num_to_xlsx file_name email_address

legge i dati numerici dal file file_name, crea il file xlsx contenente tali dati e lo invia in allegato alla email all’email_address.

 

file num_to_pdf file_name email_address

legge i dati numerici dal file file_name, crea il file PDF contenente tali dati e lo invia in allegato alla email all’email_address.
Poichè il file nasce per gran numero di dati, il grafo contenuto nel PDF deve essere realizzato con strumenti ingegneristici di fitting. Lo strumento utilizzato è lo stratordinario gnuPlot. Il primo rendering è a punti. Seguiranno altri. Infine verrà introdotta una gestione modelli basata su file PDF, ovvero il file risulatante verrà unito, nel sengo di sovrapposto, ad un modello voluto, che conterrà particolari logo, cartiglio …

file avg <filename>

restituisce la media numerica oraria del file <filename> della giornata odierna

file avg-d <filename>

restituisce la media numerica oraria del file <filename> di ieri

file avgw <filename>

restituisce la media numerica oraria del file <filename> degli ultimi 7 giorni

file avg-w <filename>

restituisce la media numerica oraria del file <filename> dei penultimi  7 giorni

file avgm <filename>

restituisce la media numerica oraria del file <filename> degli ultimi 30 giorni

file avg-m <filename>

restituisce la media numerica oraria del file <filename> dei penultimi 30 giorni

file num_to_barchart <filename> <email>

legge i dati numerici dal file file_name, crea il file PDF contenente tali dati e lo invia in allegato alla email all’email_address.
Lo strumento utilizzato per la creazione del file di report è ReportLab. Il report è costituito da tre parti: un logo, un testo di descrizione ed il grafico ad istogramma dei dati numerici.

gmail

Invia email mediante account gmail:

gmail email_destinatario email_soggetto email_corpo

I primi parametri sono obbligatori.

Il terzo, se tra apici singoli o doppi, viene inviato come unica riga,

altrimenti vengono separate le stringhe rispetto allo spazio e costruito il corpo dalla sequenza delle stringhe separate da “\r\n”