Serial Line Commands

Il modulo µPanel è in grado di ricevere comandi attraverso la sua porta seriale.
Alcune delle configurazioni del modulo wireless, oltre che attraverso i comandi seriali di seguito esposti, possono essere gestite in modo equivalente anche attraverso il menù di configurazione del modulo presente sull’App µPanel.
I comandi seriali supportati sono stati suddivisi in due gruppi:

1) comandi normali
2) comandi protetti

Il primo gruppo contiene comandi che sono normalmente richiesti durante il normale utilizzo del sistema, ad esempio per la configurazione dell’interfaccia WiFi del modulo (nome, password, etc.. ). Il secondo gruppo, invece, contiene i comandi che possono alterare in modo permanente le funzioni di sistema (ad esempio aggiornamento del firmware, velocità di comunicazione seriale, ecc). Poiché l’esecuzione dei comandi protetti è da evitatare su un prodotto finale rilasciato ad un proprio cliente, esiste un comando seriale speciale, che permette di limitare l’esecuzione di comandi protetti solo se inviati dal microcontrollore collegato alla porta seriale, mentre viene inibita la possibilità di gestione attraverso l’App. I comandi protetti sono indicati con la dicitura (PROTECTED). Di default, non è attiva nessuna limitazione.

Note generali

I comandi devono iniziare con il carattere dollaro ($) e terminare con il carattere di ritorno a capo (cioè il codice ASCII 10, o \n). Il sistema è comunque tollerante ad altri tipi di terminazione di linea (come \r e \r \n).

La velocità di default della comunicazione seriale è 57600 baud. Questo valore può essere modificato attraverso il suo comando specifico (o attraverso l’App).

 Il sistema µPanel è MADE IN ITALY, ma la versione del sito in lingua italiana è di recente introduzione ed è stata preliminarmente tradotta con sistemi automatici partendo dalla versione inglese. Ci scusiamo pertanto per le eventuali imprecisioni, che via via saranno corrette.

$P (protected)

Questo comando definisce il layout grafico e gli elementi del pannello in formato HCTML. La lunghezza massima della stringa HCTML che definisce il pannello è di 1000 caratteri.

Sintassi dei comandi

$P: Panel_Design_in_HCTML_code

risposta al comando

$OK-PANEL immediatamente dopo la ricezione dei comandi e l’esecuzione

Esempio
Un semplice pannello con un pulsante contenente il testo Start: $P:B1:Start;

$APP-CLIM (protected)

Questo comando permette di bloccare l’esecuzione dei comandi definiti come protetti richiesti da remoto attraverso l’App (le voci di menù vengono inibite). Quando i comandi protetti sono bloccati, la loro esecuzione può avvenire solo attraverso la porta seriale. L’uso di questo comando può essere utile prima di distribuire un prodotto finale in cui è necessario evitare che l’utente finale può alterare o modificare le funzioni del modulo WiFi. Questo comando può essere eseguito solo attraverso la linea seriale.

Sintassi del comando

$APP-CLIM

 

 

Risposta al comando
$OK-APPLIM immediatamente dopo la ricezione del comando in caso di successo
$ERR-DENIED immediatamente dopo la ricezione del comando se richiesto dall’App

Salvataggio del comando
La configurazione viene salvata nella memoria non volatile, quindi non c’è alcuna necessità di emettere questo comando ad ogni riavvio

Comandi correlati
Potrebbe interessare anche il comando $AP-CLIMSET

$APP-CFULL (protected)

Questo comando rimuove un’eventuale limitazione sull’esecuzione dei comandi protetti dando all’utente il pieno controllo delle configurazioni del modulo attraverso l’App, consentendogli di eseguire anche comandi protetti. Si noti che questa è la situazione di default.

Sintassi dei comandi

$APP-CFULL

 

 

Risposta al comando
$OKAPPFULL immediatamente dopo la ricezione del comando

Salvataggio del comando
La configurazione viene salvata nella memoria non volatile, quindi non c’è alcuna necessità di emettere questo comando ad ogni riavvio

$RESET (protected)

Questo comando genera un reset software del modulo.

Sintassi del comando

$RESET

 

 

Risposta al comando

$OK-RES prima di eseguire il reset

 

Riavvio

Il modulo impiega circa 2 secondi per eseguire il boot ed inviare il messaggio seriale inziale:

{miuPanel STARTED – Ver. XXYYYZ – Fri Jul 10 11:13:03 CEST 2017}
$RES

$FIRMWARE_UPGRADE (protected)

Questo comando permette di aggiornare il firmware μPanel del modulo WiFi. Per eseguire questo comando il modulo WiFi deve essere connesso a Internet (con il comando $CONNECT o tramite configurazione dall’App) e al server µPanel (conferma col messaggio $NOTIFY).

Questo comando può essere protetto da $AP-CLIM. Se protetto il comando può essere eseguito solo dalla linea seriale (cioè non può essere eseguito da l’applicazione mobile)

Sintassi del comando

$FIRMWARE_UPGRADE

Risultati del comando
$UPGRADE-NOT-ALLOWED immediatamente dopo la ricezione del comando per indicare che l’aggiornamento del firmware non è attualmente consentito.
$UPGRADE-NOT-NEEDED immediatamente dopo la ricezione del comando per indicare che il modulo WiFi ha già il firmware più recente
$UPGRADE-NOT-POSSIBLE subito dopo la ricezione del comando per indicare che l’aggiornamento non è possibile (ad esempio, manca connessione a internet o manca connessione al server)
$ WAIT immediatamente dopo la ricezione del comando per indicare che il processo di download è iniziato
$ERROR:DNS dopo l’esecuzione del comando per indicare che il processo non è riuscito in quanto il modulo WiFi non è stato in grado di contattare il server.
$ERROR-UPGRADING  dopo l’esecuzione del comando per indicare un time-out
$ERROR:BAD-CODE  dopo l’esecuzione del comando per indicare che il processo non è riuscito perchè il server ha respinto la richiesta o i dati ricevuti sono danneggiati
$INSTALL-AND-REBOOT dopo l’esecuzione del comando per indicare che il sistema verrà riavviato con il nuovo firmware.

$DOWNLOAD_AT (protected)

Questo comando scarica dal server ed esegue il firmware AT. Per eseguire questo comando il modulo WiFi deve essere connesso a Internet (puoi abilitare il modulo tramite App oppure col comando $CONNECT). Per default, nelle versioni precedenti alla A003 il firmware AT era già presente in memoria modulo WiFi, tuttavia, il suo spazio nella memoria potrebbe essere riutilizzato in alcuni casi.

Questo comando può essere protetto da $AP-CLIM. Se protetto il comando può essere eseguito solo dalla linea seriale (cioè non può essere eseguito da l’applicazione mobile)

L’esecuzione di un comando AT sbagliato può bloccare o addirittura danneggiare il dispositivo. Se avete bisogno di socket TCP/UDP e comunicazione di rete per upload/download dati da server, si consiglia l’utilizzo delle funzioni fornite direttamente dal firmware μPanel (disponibili a partire dalla versione 003A). L’uso dei comandi AT è a vostro rischio e pericolo!

Sintassi del comando

$DOWNLOAD_AT

Risultati del comando
$ WAIT immediatamente dopo la ricezione dei comandi per indicare che il processo di download ha iniziato
$ ERRORE:DNS dopo l’esecuzione dei comandi per indicare che il processo non è riuscita in quanto il modulo WiFi è stato in grado di contattare il server.
$ERROR-UPGRADING dopo l’esecuzione del comando per indicare che il processo è andato in timeout
$ERROR:BAD-CODE dopo l’esecuzione del comando per indicare che il processo non è riuscito poiché il server ha respinto la richiesta o i dati ricevuti sono stati danneggiati
$INSTALL-AND-REBOOT dopo l’esecuzione del comando per indicare che il sistema verrò riavviato con il Firmware AT

Salvataggio del comando
Dopo questo comando il modulo WiFi sarà sempre riavviato in modalità AT. Per riattivare il firmware μPanel utilizzare il comando AT+PANEL

NOTA: non eseguire un aggiornamento del firmware utilizzando comandi AT altrimenti il firmware μPanel sarà perso per sempre

$AT-REVERT (protected)

Questo comando riavvia il modulo caricando il firmware AT invece del firmware μPanel. Dopo che questo comando viene eseguito, l’unico modo per riattivare μPanel è quello di inviare il comando seriale AT+PANEL . Si noti che il firmware AT configura la velocita della linea seriale a 115200 baud.

Questo comando può essere protetto da $AP-CLIM. Se protetto il comando può essere eseguito solo dalla linea seriale (cioè non può essere eseguito da l’applicazione mobile)

L’esecuzione di un comando AT sbagliato può bloccare o addirittura danneggiare il dispositivo. Se avete bisogno di socket TCP/UDP e comunicazione di rete per upload/download dati da server, si consiglia l’utilizzo delle funzioni fornite direttamente dal firmware μPanel (disponibili a partire dalla versione 003A). L’uso dei comandi AT è a vostro rischio e pericolo!

Sintassi del comando

$AT-REVERT

Risposta al comando
$SWITCH TO AT FIRMWARE immediatamente dopo la ricezione del comandi e giusto prima dell’esecuzione
$ERROR AT NOT PRESENT immediatamente dopo la ricezione dei comandi per indicare che il firmware AT non è caricato sul modulo WiFi. Per scaricare il firmware uso $DOWNLOAD_AT

Salvataggio del comando
Dopo questo comando il modulo WiFi eseguirà sempre il boot in modalità AT. Per riattivare il firmware μPanel utilizzare il comando AT+PANEL

NOTA: non eseguire un aggiornamento del firmware utilizzando comandi AT o il firmware μPanel sarà perso per sempre

$BAUD (protected)

Questo comando consente di modificare la velocità (baud rate) dell’interfaccia seriale. Il valore di default è 57600 baud. Sono consentiti valori standardnel range 9600 – 115200. Questo comando può essere protetto da $AP-CLIM. Se protetto, il comando può essere eseguito solo da linea seriale (cioè non può essere eseguito dall’applicazione mobile)

Sintassi del comando

$BAUD :Baud_Value

Risposta al comando
$OK-BAUD immediatamente dopo la ricezione del comando e l’esecuzione in caso di successo
$ERR-BAUD immediatamente dopo la ricezione del comando e l’esecuzione in caso di errore (ad esempio, parametri sbagliati)

Salvataggio del comando
Questo comando ed i suoi parametri vengono salvati nella memoria non volatile, quindi non c’è alcuna necessità di trasmettere questo comando ad ogni riavvio.

$ROUTER

Per poter comunicare con il modulo attraverso Internet (cioè da qualunque parte del mondo, al di fuori dalla WLAN a cui è connesso il modulo) il sistema µPaneloffre due possibilità: connessione via INTERNET (il router a cui è connesso il modulo deve avere IP pubblico) e connessione via CLOUD µPanel (funziona con tutti i router). Guarda la pagina panoramica per vedere tutte le modalità di connessione modulo-App.

Questo comando riguarda la prima possibilità, cioè connessione via INTERNET. Questo comando consente di auto-configurare il router. Infatti, è necessario configurare il router per consentire le connessioni TCP in ingresso per raggiungere la porta del modulo 80 e 81. Il firmware μPanel è in grado di configurare automaticamente la maggior parte dei router in modo che essi accettino e inoltino tali connessioni in entrata. I protocolli attualmente supportati sono il NAT-PMP e UPnP.

NOTA: L’alternativa più semplice per poter comunicare con il modulo attraverso Internet (cioè da qualunque parte del mondo) è quella di attivare la comunicazione del modulo con il CLOUD µPanel (attraverso App oppure con i comandi $CBRIDGE). Questa modalità consente di connettersi al modulo anche se il router a cui è connesso il modulo non ha IP pubblico.

 

Sintassi del comando

$ROUTER :PORT 1 :PORT 2

Il comando emesso senza parametri consente semplicemente l’auto-configurazione del router utilizzando due porte TCP predefinite. L’utente può tuttavia specificare le porte disponibili utilizzate dal router per accettare connessioni TCP in entrata. Se viene specificato il primo parametro, anche il secondo deve essere specificato.

Risposta al comando
$OK-ROUTER  immediatamente dopo la ricezione del comando
$ROUTER:IP,Port 1,Port 2 se l’esecuzione del comando è avvenuta con successo (a seconda del router, il comando può richiedere da pochi secondi fino a 1 minuto. Se il comando fallisce, non viene inviata nessuna risposta).

Salvataggio del comando
Questo comando ed i suoi parametri vengono salvati nella memoria non volatile, quindi non c’è alcuna necessità di trasmettere questo comando ad ogni riavvio.

$NOROUTER

Questo comando disattiva una precedente auto-configurazione del router.

Sintassi del comando

$NOROUTER

Risposta al comando
$OK-NOROUTER immediatamente dopo la ricezione del comando e dell’esecuzione

Salvataggio del comando
La configurazione viene salvata nella memoria non volatile, quindi non c’è alcuna necessità di trasmettere questo comando ad ogni riavvio.

$APSET

Questo comando permette di configurare il nome, la password e il canale del Access Point creato dal modulo WiFi. Per impostazione predefinita, il nome è miuPanel seguito dal ID del modulo WiFi, e la password è uPanel11.

Sintassi del comando

$APSET :SSID :PASSWORD :CHANNEL

I campi password e di canale sono opzionali. Se la password non è specificata, verrà creata un access point aperto. Il canale può essere un numero intero compreso tra 1-13 (quando si abilita la connessione del modulo ad un router, il canale impostato si sposta automaticamente al canale definito dal router).

Risposta al comando
$ OK-APSET dopo l’esecuzione del comando in caso di successo
$ ERR-APSET dopo l’esecuzione del comando in caso di errore

Salvataggio del comando
Questo comando ed i suoi parametri vengono salvati nella memoria non volatile, quindi non c’è alcuna necessità di emettere questo comando ad ogni riavvio.

$CONNECT

Questo comando permette di configurare il nome, la password e il canale del punto di accesso creato dal modulo WiFi. Per impostazione predefinita, il nome è miuPanel seguito dal ID modulo WiFi, e la password è uPanel11.

Sintassi del comando

$CONNECT :SSID :PASSWORD :CHANNEL

SSID rappresenta il nome della rete Wi-Fi esistente per unire (di solito questo è il nome della propria rete WiFi di casa). Password è la password per l’accesso alla rete. Se la rete è aperta il campo password deve essere omesso. Se entrambi i parametri di comando vengono omessi, il modulo WiFi tenta di connettersi utilizzando il Las utilizzato parametri.

Risultati del comando
$OK-CONN immediatamente dopo la ricezione dei comandi per indicare che il modulo WiFi sta cercando di aderire alla rete
$ERR-CONN immediatamente dopo la ricezione dei comandi, se i parametri specificati non sono validi
$CONNECTED quando la connessione va a buon fine
$ NOTIFY dopo che il modulo è connesso e per indicare che il modulo WiFi si è notificato sul cloud µPanel comunicando il suo IP. Il cloud metterà a disposizione dell’App l’informazione sui nuovi IP da usare per raggiungere il modulo, quando sull’App sarà premuto il pulsante “Discover IP“.

$DISCONNECT

Questo comando disconnette il modulo WiFi dalla rete WiFi (unito con il comando $ CONNECT)

Sintassi del comando

$DISCONNECT

Risultati del comando
$ OKDISC immediatamente dopo la ricezione dei comandi e l’esecuzione

Salvataggio del comando
La configurazione viene salvata nella memoria non volatile, quindi non c’è alcuna necessità di emettere questo comando ad ogni riavvio.

$CONFIG

Questo comando consente di visualizzare la maggior parte dei parametri di configurazione del modulo WiFi

Sintassi del comando

$CONFIG

$PING

Questo comando imposta l’intervallo massimo di comunicazione tra App e modulo WiFi. Diminuendol’intervallo di ping consente una comunicazione più reattiva ma aumenta il traffico (se la connessione è lenta può intasarla). Il valore predefinito di PING è di 500 ms. Valori nell’intorno di 200 ms sono adatti ad ottenere una risposta in tempo reale.

Sintassi del comando

$PING ms

dove ms è il numero che esprime l’intervallo in millisecondi

Risposta al comando

$OK-PING

 

$PASSWORD

Questo comando protegge l’accesso al modulo con una password. La password verrà richiesta dal APP quando l’utente avvia la connessione con il modulo. La password può essere qualsiasi numero composto da un massimo di 15 cifre nella gamma {0..9}.

Si prega di notare che l’App ricorderà la password, quindi sarà richiesto solo una volta o solo se la password è stata modificata.

Sintassi del comando

$PASSWORD:numeric_password:

Da non dimenticare i due punti dopo il numeric_password

Per disabilitare la password è sufficiente inviare il comando senza parametri $PASSWORD::

Risultati del comando
$OK-PASSWORD-SET quando la password è stata cambiata con successo
$OK-PASSWORD:xxxxxx quando è stato richiesto la password (cioè numeric_password non è previsto)
$ERR-PASSWORD se la password data non è valida e non può essere impostata

$ECHO

Questo comando invia un messaggio al microcontrollore attraverso la porta seriale
Sintassi del comando

$ECHO:message

$STAIP

Questo comando può essere utilizzato per visualizzare o configurare le impostazioni IP statici. Se il comando viene eseguito senza parametri vengono visualizzati l’impostazione corrente.

Visualizzare le impostazioni STATIC IP correnti – Sintassi del comando

$STAIP

Risultati del comando
$ STAIP AAA.AAA.AAA.AAA BBB.BBB.BBB.BBB CCC.CCC.CCC dove A, B e C sono rispettivamente di IP, Gateway e Mask.


Assegnare un indirizzo IP statico Sintassi del comando

$STAIP AAA.AAA.AAA.AAA BBB.BBB.BBB.BBB CCC.CCC.CCC.CCC

Dove A, B e C sono rispettivamente di IP, Gateway e Mask. Per disabilitare IP statico (e abilitare DHCP) della serie A, B e C a 255.255.255.255

Risultati del comando
$ OK-STAIP subito dopo l’esecuzione del comando, se si accettano i parametri
$ ERR-STAIP subito dopo l’esecuzione del comando se i parametri non sono validi
$ SET-STAIP quando l’IP statico prende influenzare (apparirà anche dopo l’avvio questo messaggio)

Salvataggio del comando
Questo comando ed i suoi parametri vengono salvati nella memoria non volatile, quindi non c’è alcuna necessità di emettere questo comando ad ogni riavvio.

$CONNSTA

Questo comando visualizza lo stato della connessione con il router.

Sintassi del comando

$CONNSTA

Risultati del comando
$ CONNSTA XXX AAA.AAA.AAA.AAA BBB.BBB.BBB.BBB RSSI immediatamente dopo la ricezione dei comandi e l’esecuzione
Dove XXX è un numero decimale (3 cifre) che rappresenta lo stato della connessione: (005 = Connected, 255 = scollegato)
A e B rappresentano rispettivamente IP del modulo e il gateway.
RSSI è un numero negativo che rappresenta la forza (RSSI in dB) della connessione router WiFi.

$APSTA

Questo comando consente di visualizzare lo stato del punto di accesso

Sintassi del comando

$APSTA

Risultati del comando
$ APSTA XXX AAA.AAA.AAA.AAA immediatamente dopo la ricezione dei comandi e l’esecuzione
Dove XXX è un numero decimale (3 cifre) che rappresenta il numero di dispositivi (client) collegati al punto di accesso del modulo, e A è IP del modulo di interfaccia del punto di accesso.

$AP-CLIMSET

Questo comando protegge (blocchi) l’accesso ad alcuni comandi per l’App. Quattro gruppi di comandi possono essere protetti:

  • Hardware ($ P, $ PASSWORD, $ RESET, $ LINK, $ UNLINK, $ FIRMWARE_UPGRADE, $ DOWNLOAD_AT, $ AT_REVERT, $ BAUD, $ TCP, UDP $, $ ECHO, $ STAIP, $ DISCO, $ FILE)
  • Access Point ($ APSET)
  • Router ($ CONNECT, $ DISCONNECT, $ ROUTER, $ NOROUTER)
  • Configurazione (UART Monitor, $ config, $ PASSWORD)

Ogni gruppo corrisponde a un codice ID, come segue:

  • Hardware = 1
  • Access Point = 2
  • Router = 4
  • Configurazione = 8

Sintassi del comando

$AP-CLIMSET[:SumOfGroupCodes]

Risultati del comando
$ AP-CLIMSET: Sum_of_protected_group_codes

Dove Sum_of_protected_group_codes rappresenta la somma degli ID dei gruppi attualmente protetti / a proctect. Per esempio, se i gruppi configurazione hardware e sono protetti, la risposta è: $ AP-CLIMSET: 9

Se i parametri opzionali: SumOfGroupCodes viene omessa, il comando visualizza semplicemente le impostazioni correnti

Il comando legacy $ APP-CFULL corrisponde a $ AP-CLIMSET: 0

Il comando legacy $ APP-CLIM corrisponde a $ AP-CLIMSET: 1

$APLIST

Questo comando visualizza l’elenco dei dispositivi collegati al punto di accesso del modulo

Sintassi del comando

$APLIST

Risultati del comando (per ogni dispositivo collegato)
$ APLIST XXX MM: MM: MM: MM: MM: MM AAA.AAA.AAA.AAA immediatamente dopo la ricezione dei comandi e l’esecuzione

Dove XXX è il numero di cliente (numero sequenziale di dispositivi collegati, a partire dal 1), MM è del dispositivo MAC Address, e A è l’IP assegnato al dispositivo collegato.

Se non vengono collegati dispositivi l’uscita sarà

$ 000 APLIST

$TCP

Questo comando permette di creare e utilizzare i socket TCP.

Per la documentazione completa si rimanda ai socket TCP – sezione Trasferimento file / dati.

$DISK

Questo comando permette di gestire il disco virtuale creato nella memoria flash modulo WiFi.
Per la documentazione completa si rimanda al file system – sezione DISK.

$FILE

Questo comando permette di gestire il disco virtuale creato nella memoria flash modulo WiFi.

Per la documentazione completa si rimanda al FILE SYSTEM – sezione DISK.

$UDP

Questo comando permette di creare e utilizzare i socket UDP.

Per la documentazione completa si rimanda alle prese UDP – sezione Panel Networks.

File  System (DISK) – Data storage

Dalla versione firmware 003 (AA003A), μPanel implementa un disco di memoria che può essere utilizzata dal microcontrollore per memorizzare dati non volatili, come le misurazioni, parametri di calibrazione, dati di configurazione, e così via. Un file system speciale (FS-RT78) è stato progettato dagli ingegneri μPanel al fine di attuare un disco ad alta affidabilità efficiente all’interno della memoria flash modulo WiFi. Le caratteristiche principali sono:

163.898 byte di spazio utente
settori di 3563 byte
file di lunghezza del nome fino a 12 caratteri
filo immediato su disco (nessuna latenza)
scrivere e verificare l’architettura
fino a 4 file di contemporaneamente aperta (lo stesso file consentito)
supportati modalità di accesso: lettura / lettura-scrittura / aggiungere / circolare
file di seek supportato
nomi maiuscole e minuscole

Poiché l’affidabilità è una delle caratteristiche principali che è stato tenuto in considerazione durante la progettazione del file system, ciascun settore non può contenere più di un file. Ciò significa che lo spazio minimo consumata da un file è di 3563 byte e, quindi, non più di 43 file possono essere memorizzati sul disco. Si prega di notare, inoltre, che per rendere il file-system tanto efficiente quanto possibile, tutti i file sono memorizzati nella stessa cartella principale, e nessuna struttura sotto-cartella è stata implementata.

Poiché una delle applicazioni più importanti per il disco memorizzazione su sistemi basati μPanel è la memorizzazione di file di registro o di misurazione, una modalità file speciale è stato implementato: il modo circolare. Quando un file è aperto in modalità di scrittura circolare o aggiungere circolare e ‘possibile impostare il numero di settori che il file deve utilizzare sul disco. Quando la dimensione del file raggiunge il numero di settori specifici, è richiesta una nuova scrittura, il settore più vecchio viene cancellato e uno nuovo è allocato. In questo modo il disco sarà mai completo e il file sarà sempre contiene i dati più recenti scritti.

Due gruppi di comandi esistono per usare disco di memorizzazione:

comandi disco (fornire funzioni per gestire il contenuto del disco)
Comandi del file (fornisce funzioni per lavorare con i file)

i comandi del disco permettono di inizializzare e gestire il contenuto del disco. Tutti i comandi implementati iniziano con $ DISK: seguito da un suffisso che specifica il comando. L’elenco completo dei comandi segue.

$DISK:FORMAT (protected)

Questo comando Elimina tutto il contenuto del disco e preparare il disco da utilizzare. Questo comando deve essere eseguita la prima volta che il modulo è utilizzato per preparare il disco.

Sintassi del comando

$DISK: FORMAT

Risultati del comando
$ WAIT immediatamente dopo la ricezione dei comandi e l’esecuzione
$ DI formato sul completamento

Esempio
Per preparare il disco da utilizzare per la prima volta: $ DISK: FORMATO

$DISK:AUTOFORMAT (protected)

Questo comando chiama il comando FORMAT $ solo se il disco deve essere formattato, altrimenti non fa nulla

Sintassi del comando

$DISK: AUTOFORMAT

Risultato del comando
$ WAIT immediatamente dopo la ricezione dei comandi e al momento dell’esecuzione formato
$ OK formato sul completamento formato
$ OK-AFormattare se il disco non necessita di essere formattato

Esempio
Per preparare il disco da utilizzare, la formattazione solo se necessario: $ DISK: formattazione automatica

$DISK:LS (protected)

Questo comando mostra un elenco contenente tutti i file memorizzati sul disco. Il comando può essere abbreviato da $ FDISK: L

Sintassi del comando

$DISK: LS

Risultato del comando
$DISK-LS immediatamente dopo la ricezione dei comandi prima che venga visualizzato l’elenco
$LS: la dimensione del file nome-una linea formattata segnalazione una voce di elenco (nome del file inizia dalla colonna 15)
è stato mostrato $OK-LS al termine, dopo la lista

Esempio
Per ottenere l’elenco di file: $DISK: LS

Comando:
$DISK:LS

Risposta
$ DISK-LS
$LS: 34769 measures.txt
$LS: 1755 calib.bin
$OK-LS

$DISK:SPACE (protected)

Questo comando mostra la quantità di spazio libero sul disco. Il comando può essere abbreviato da $ DISK: S

Sintassi del comando

$DISK: SPACE

Risultato del comando
$DISK-FREE: x byte immediatamente dopo la ricezione dei comandi prima che venga visualizzato l’elenco

Esempio
Per ottenere la quantità di libero su disco: $DISK:SPACE

Comando
$DISK:SPACE

Risposta
$DISK-FREE: 163898 bytes

$DISK:DEL (protected)

Questo comando elimina un file dal disco. Il comando può essere abbreviato da $DISK: D

Sintassi del comando

$DISK: DEL:FileName

Risultato del comando

$FILE-DELETED immediatamente dopo la ricezione dei comandi, dopo che il file viene eliminato

Esempio
Per eliminare un file il cui nome è measures.txt:  $DISK:DEL:measures.txt

Comando
$DISK:DEL:measures.txt

Risposta
$FILE-DELETED

File Commands

Questa serie di comandi permette di creare, scrivere e leggere il contenuto dei file. Il supporto firmware μPanel corrente fino a 4 file. Ogni file è identificato da una cifra nel range da 0 a 3. Ogni comando inizia con il prefisso $FILE seguito dal ID file di cifre.

L’elenco completo dei comandi di file segue.

$FILE:OPEN (protected)

Questo comando apre un file. Il comando può essere abbreviato da $ FILE: O

Sintassi del comando

$FILE FILE_ID: OPEN: File_Name: File_Mode

Dove:

  • FILE_ID è una cifra nel range da 0 a 3 per essere utilizzato per identificare questo file durante le operazioni di file
  • FILE_NAME è una stringa fino a 12 caratteri che rappresenta a lungo il nome del file (maiuscole e minuscole)
  • File_MODE è una combinazione dei seguenti (minuscolo) caratteri che identificano la modalità di apertura:
    • r – modalità di lettura: un file esistente viene aperto per la lettura del suo contenuto
    • w – modalità di scrittura: file esistente viene cancellato, viene creato un nuovo file
    • a – se il file non esiste, verrà creata. Se esiste il file, viene aperto in modalità aggiungendo
    • c – Modalità circolare. Questa modalità deve essere utilizzato insieme con w o e permette di specificare la lunghezza massima in KB del file. Dopo questa dimensione del file è scritto come buffer circolare. Questo parametro può essere seguito dal numero di KB (ad esempio wc7 creerà un file per l’accesso circolare con dimensioni non superiori a 7 KB. Si prega di notare che, il flag c non potrà mai ridursi un file già più grande della dimensione specificata. Se nessun formato viene specificato un valore predefinito di 1 KB viene utilizzato.

Risultato del comando
$FILEn:OPEN x bytes immediatamente dopo la ricezione dei comandi e aprire il file (dove n è l’ID del file e x la dimensione del file corrente)

Esempio
Per aprire il file measure.txt in modalità di lettura-scrittura-accodamento utilizzando l’ID 0: $FILE0:OPEN:measures.txt:a

Comando
$FILE0:OPEN:measures.txt:a

Risposta
$FILE0:OPEN 34769 bytes

 

 

$FILE:SEEK (protected)

Questo comando sposta il puntatore del file corrente su una posizione diversa. Si prega di notare che questo comando può essere utilizzato sia per la lettura e modalità di scrittura, tuttavia, a causa della memoria flash, scrivendo su posizioni di file già scritto non può cambiare i valori di byte, ma può bit solo set non è ancora un insieme di quei byte (una ri completa capacità -write può, mediante supportato nelle versioni future). Il comando può essere abbreviato da $FILE:S

Sintassi del comando

$FILE FILE_ID: SEEK: New_Position

Dove:

  • FILE_ID è una cifra nel campo da 0 a 3, che identifica un file aperto
  • NEW_POSITION è la posizione desiderata in byte del file che iniziano. Se la nuova posizione è più grande di quelle del file vero e proprio, il puntatore del file è posizionato alla fine del file (se il file viene aperto in modalità di lettura), o la dimensione del file è aumentata (con i byte vuoto) fino a quando il puntatore raggiunge il valore specificato .

Risultato del comando
$FILEn:SEEK: x subito dopo la ricezione dei comandi e l’esecuzione (dove x è la nuova posizione del file in byte)

Esempio
Per leggere un file aperto (con ID 2) dal numero di byte 10: $ FILE2: Seek: 10

Comando
$FILE2:SEEK:10

Risposta
$FILE2:SEEK: 10

 

$FILE:WRITE (protected)

Questo comando permette di scrivere i dati in un file aperto. Il comando deve essere abbreviata da $FILE:W

Sintassi del comando

$FILE FILE_ID: W Write_Mode: DATA

Dove:

  • FILE_ID è una cifra nel campo da 0 a 3, che identifica che è possibile scrivere all’intenro del file
  • WRITE_MODE è una combinazione dei seguenti caratteri (maiuscole) che definiscono la modalità di scrittura:
  • A (ASCII): il file è scritto in modalità ASCII, il che significa che il contenuto di dati passati nel comando di scrittura viene gestito come testo puro. Pertanto, questa modalità non permette di scrivere sul file caratteri speciali come trasporto di ritorno o byte nulli.
  • B (binario): il file è scritto in modalità binaria in cui tutti i codici ASCII possono essere passati nel contenuto dei dati, con l’eccezione del codici ASCII \ r (13), \ n (10), \ 0 (0), \\ (92), che devono essere “escape”. Per esempio. scrivere il codice ASCII 13 (\ r) la sequenza composta da due caratteri \ e r deve essere inclusa nel contenuto DATA.
  • R (ritorno carrello \ r): aggiungere un ritorno carrello (codice ASCII 13) alla fine del contenuto DATA
  • N (nuova riga \ n): aggiungere una nuova riga (codice ASCII 10) alla fine del contenuto DATA
  • L (end \ r \ n riga): aggiungere un ritorno carrello (codice ASCII 13) e una nuova linea (codice ASCII 10) alla fine del contenuto DATA

Si prega di notare che sia la modalità B A o devono essere specificate dopo il comando W. Si prega di notare, inoltre, che se più di una opzione di terminazione (R, N, L) è specifica, l’ordine di scrittura reale è L, N, R.

Risultato del comando
$FILEn:WR: x bytes immediatamente dopo la ricezione dei comandi e l’esecuzione (dove x è il numero di byte scritti)

Esempio
Per scrivere la stringa “Ciao Mondo” terminato con una nuova linea (\ n) per il file con ID 1: $ FILE1: WAN: Ciao Mondo

Comando
$FILE1:WAN:Hello World

Risposta
$FILE1:WR: 12 bytes

Per scrivere la sequenza di stringa di byte 0x41 0x42 0x00 0x13 0x43 al file con ID 0, il seguente comando può essere utilizzato:
$ FILE0: WB: AB \ 0 \ rC

comando
$FILE0:WB:AB\0\rC

Risposta
$FILE0:WR: 5 bytes

$FILE:READ (protected)

Questo comando permette di leggere i dati da un file aperto. Il comando deve essere abbreviata da $FILE:R

Sintassi del comando

$FILE FILE_ID: R Read_Mode :Parameters

Dove:

  • FILE_ID è una cifra nel campo da 0 a 3, che identifica il file aperto a leggere
  • READ_MODE è una dei seguenti caratteri (maiuscolo) che definiscono la modalità di lettura:
  • A (ASCII): il file viene letto in modalità ASCII: il file viene gestito come file di testo e viene letto riga per riga. Quando si utilizza questa modalità file campo parametri può specificare il numero di linee da leggere e il numero massimo di caratteri per riga. Se la lunghezza della linea supera il numero specificato di caratteri della linea è troncata. Si noti che il carattere di nuova riga (\ n) viene utilizzato per rilevare la fine riga. Esempio 1: $FILE0:RA:5,20 legge da file 0, 5 linee fino a 20 caratteri per ogni riga
    Esempio 2: $FILE0:RA:3 legge da file 0, 3 linee
    Esempio 3: $FILE0:RA letti dal file 0 solo 1 riga

Il risultato comando per ogni riga letta ha il seguente formato:

$FILE0:>A:Read_Line

  • B (binario): il file viene letto in modalità binaria: un determinato numero di byte vengono letti dal file e quindi inviato direttamente al microcontrollore, senza alcuna codifica. Prima che i byte vengono inviati, tuttavia, una riga di testo viene inviato segnalato il formato e il numero di byte letti. Quando si utilizza questa modalità, il campo di parametro può specificare il numero di byte da leggere. Il valore massimo è 256. Se il parametro non viene dato il valore di default utilizzata è 256.Example: $ FILE0: RB: 10 legge 10 byte dal file con ID 0 e li invia al micro-controllore. Prima che i byte vengono inviati, tuttavia, la seguente riga viene anche inviato (che include come sempre nuova linea terminatore \ n):

$FILE0:>B#0010:

dove #0010 rappresenta il numero di byte che verrà inviato al microcontrollore (senza codifica)

  • X (esadecimale): il file viene letto in modalità esadecimale: un determinato numero di byte vengono letti dal file e visualizzato in formato esadecimale. Quando si utilizza questa modalità campo parametro può specificare il numero di byte da leggere. Il numero massimo di byte che possono essere letti con un singolo comando è 256. Se il parametro non viene specificato il valore utilizzato di default è 256.Example: $FILE0:RX:8 legge 8 byte dal file con ID 0 e li visualizza in hexadecimalThe risultato il comando dell’esempio precedente sarebbe: $FILE0:>X#0008:xx xx xx xx xx xx xx xx dove # 0008 rappresenta il numero di byte seguenti, e xx i byte di lettura in formato esadecimale
  • D (decimale): il file viene letto in modalità decimale: un determinato numero di byte vengono letti dal file e visualizzato in formato decimale. La sintassi del parametro è lo stesso che per X modeExample: $ FILE0: RD: 4 legge 4 byte dal file con ID 0 e li visualizza in decimale (sempre 2 cifre) Il risultato di comando dell’esempio precedente sarebbe: $FILE0:>D#0004:xxx xxx xxx xxx dove # 0004 rappresenta il numero di byte seguenti, e xxx i byte di lettura in formato decimale (sempre 3 cifre)

 

Si noti che solo una delle modalità precedente può selezionata. Si noti inoltre che il numero di byte effettivamente restituiti dalla funzione di lettura può essere inferiore al numero richiesto quando viene raggiunta la fine del file.

Risultato del comando
I risultati del comando dipende dalla modalità di lettura, si veda la descrizione precedente

$FILE:CLOSE (protected)

Questo comando permette di chiudere un file aperto, liberando le risorse assegnate. Si prega di notare, che i dati vengono scritti nel file immediatamente dopo il comando di scrittura. Pertanto, questo comando non ha alcun effetto sul contenuto disco e se il sistema è disattivato prima della chiusura viene eseguito, dati vengono persi. Il comando può essere abbreviato da $ FILE: C

Sintassi del comando

$FILE FILE_ID: CLOSE

Dove:

  • FILE_ID è una cifra nel campo da 0 a 3, che identifica il file aperto per chiudere
    Risultato del comando

Risultato del comando

$FILEn:CLOSED dove n è l’ID del file che è stato chiuso

Esempio
Per chiudere il file con ID 1: $FILE1:CLOSE 

Comando
$FILE1:CLOSE

Risponsta
$FILE1:CLOSED

Error Messages

Diversi messaggi di errore possono comparire dopo l’esecuzione di comandi dischi e file. L’elenco completo dei messaggi segue.

$ERR-FS: 01 (Generico) errore imprevisto interno

$ERR-FS: 02 (Memoria) Nessuna memoria sufficiente per completare l’operazione

$ERR-FS: 03 (Disco) Errore di supporto di memoria flash

$ERR-FS: 04 (Disco IO) Impossibile leggere o scrivere su memoria flash

$ERR-FS: 05 (Generico) Errore inatteso alla ricerca di un settore

$ERR-FS: 06 (Formattazione) Disco non formattato

$ERR-FS: 07 (Autorizzazione) Operazione non consentita (ad esempio scrivere su file di lettura)

$ERR-FS: 08 (Scrittura) Errore di operazione di scrittura

$ERR-FS: 09 (Lettura) Leggi errore di funzionamento

$ERR-FS: 10 (File non Trovato) il nome del file specificato non trovato

$ERR-FS: 11 (Disco Pieno) Il funzionamento non ha completato in quanto il disco è pieno

TCP Sockets – File and Data Transfer

Dalla versione firmware 003 (AA003A), μPanel implementa funzioni per l’uso diretto del TCP e UDP socket, fornendo un modo semplice ed efficace per effettuare sia a basso livello e il trasferimento dei dati ad alto livello o per organizzare reti di dispositivi μPanel. Inoltre, le funzioni Socket possono interagire con il sistema di file che permette il trasferimento diretto di file su protocollo HTTP (TCP), sia per il download e l’upload di dati. Le caratteristiche principali di funzioni di socket TCP sono:

  • Fino a 2 Socket TCP (che opera sia come client o come server)
  • Accesso a livello più basso al flusso (sia in modalità binaria o ASCII)
  • Connect-and-Transfer o Listen-e-Transfer funzioni in un singolo comando
  • Supporto HTTP su socket TCP per il trasferimento dei dati (sia metodi GET e POST supportati)
  • L’interazione con il uPanel file system per il trasferimento di file con il protocollo HTTP su socket TCP
  • Sia upload di file e scaricare, entrambi con i metodi GET e POST
  • File Transfer tutelabili con password personalizzata

La sintassi dei comandi socket è stato progettato per ridurre al minimo l’intervento micro-controllore durante la realizzazione del semplice trasferimento di dati. Per esempio un server TCP può essere avviato con un precaricata primo pacchetto di dati da trasferire non appena il client si connette, o può essere programmato per trasferire un file intero con il dispositivo remoto (sia upload e download). i comandi TCP iniziano con il prefisso $TCP.

Icomandi TCP permettono sia di stabilire una connessione con un server o per ascoltare una determinata porta TCP (modalità server). In entrambi i casi, quando viene stabilita la connessione con il dispositivo remoto, un’azione automatica può essere eseguita, come ad esempio:

  • trasmissione di un messaggio precaricato
  • trasmissione di un file predefinito
  • esecuzione di un semplice demone HTTP (modalità server)

TCP Socket Initialisation

La sintassi generale per l’inizializzazione di un socket TCP segue:

Sintassi del comando TCP

$TCP N_Socket :Connection_Flags :Remote_Address :Port,[Parameter] [:File_Name[:Password]] [:Message]

Dove

  • [] Parentesi quadre indicano argomenti opzionali
  • N_Socket è una cifra nell’intervallo {0,1} indica il numero di presa da utilizzare
  • Connection_Flags  è una combinazione di uno o più dei seguenti caratteri, che specificano l’azione da eseguire con la presa:
    • {C, L, D, X, Q}: C per connect (inizializzare la modalità client); L per ascoltare (inizializzare la modalità server); D per la presa di disconnessione; X per distruggere presa (disconnessione, eliminare e liberare risorse); Q per lo stato presa query.
    • {A, B}: A per il trasferimento di dati in modalità ASCII, B per la modalità binaria. Il flag A può essere seguita da un numero che indica la lunghezza massima consentita linea. Se la linea supera la lunghezza specificata verrà troncato la linea. Quando si specifica la linea di massimo e la linea non viene troncata la sequenza di caratteri \ e n viene aggiunto alla linea. Ad esempio, l’A100 di bandiera impostare la lunghezza massima della linea a 100 caratteri.
    • F per abilitare la modalità di trasferimento file. Questo flag può essere seguito da uno o più caratteri minuscoli che rappresentano il file in modalità (ad esempio FAC3 significa Modalità file in “Aggiungi, Circolare, 3 kB”). Si prega di consultare la sezione del file per ottenere l’elenco completo delle modalità di file.
    • H per attivare il protocollo HTTP per il trasferimento dei dati (sia dati grezzi e file)
    • {D, U}: D per la modalità download (impostazione predefinita in modalità client C), U per la modalità di upload (impostazione predefinita in modalità L server)
    • K per attivare la modalità di connessione keep-alive
    • Q per attivare la modalità auto-disconnessione (quit) (vale a dire la presa viene interrotta automaticamente dopo il primo pacchetto di dati viene inviato correttamente)

Si prega di notare che l’ordine dei Flag non è importante, con l’eccezione di {C, L, D, X, Q} flag che devono essere i primi nella sequenza e di {A, B} che devono essere i secondi in sequenza. Si prega di notare, inoltre, che le bandiere tra parentesi graffe sono mutuamente esclusivi (cioè non è possibile specificare C e L contemporaneamente)

  • Remote_Address è il nome del dominio o l’indirizzo IP del dispositivo remoto
  • Port rappresenta la porta di destinazione in modalità client (connessione) o la porta locale per ascoltare in modalità server
  • Parameter rappresenta la porta locale in modalità client (connessione) o il timeout in secondi (in modalità server)
  • File_Name è un parametro opzionale che specifica il nome del file in “File Mode”. Il nome del file può essere seguito da una password per proteggere il trasferimento.
  • Message rappresenta i dati da inviare al dispositivo remoto non appena la connessione è stabilita

Si prega di notare: File_Name e messaggio non possono essere sia specificato, ma si escludono a vicenda.

Risultato del comando

Le possibili risposte al comando Query (Q) sono:

$ERR-TCPn:Query   La presa non poteva essere interrogato
$TCPn:IS-FREE   non creato
$TCPn:IS-DISCONNECTED
$TCPn:IS-CONNECTING
$TCPn:IS-CONNECTED
$TCPn:IS-ON-ERROR
$TCPn:IS-SENDING

Fare riferimento alla fine di questa sezione per la lista degli altri messaggi

Esempi di base (un elenco completo di esempi viene fornita alla fine di questa sezione)
Per collegare il socket TCP con ID = 1 al server Web di Google sulla porta 80 con modalità di trasferimento ASCII

 

$TCP1:CA:www.google.com:80
$OK-TCP1-Connecting
$TCP1:CONNECTED

TCP Data Send (Write)

La sintassi del comando per l’invio di alcuni dati attraverso una presa già inizializzato e collegato è come segue:

Sintassi del comando

$TCP N_Socket: W: DATA

Dove:

  • N_Socket è una cifra nell’intervallo {0,1} indica il numero di presa da utilizzare
  • DATA è una stringa contenente i dati da inviare. I dati possono contenere tutti i caratteri ad eccezione dei seguenti 4 byte, che devono essere sfuggito:
    • Ritorno a capo di byte 13 (fuga sequenza \ r)
    • nuova linea di byte 10 (escape sequenza \ n)
    • nullo byte 0 (sequenza di escape \ 0)
    • back slash byte 92 (sequenza di escape \\)

Risultato del comando
$OK-TCPn-Sending immediatamente dopo la ricezione dei comandi di riconoscere l’esecuzione del comando (n rappresenta il numero di socket)
$TCPn:ERR-BUSY immediatamente dopo la ricezione dei comandi per indicare che l’operazione non è stata eseguita perché il socket è ancora occupato con un’altra operazione (n rappresenta il numero di socket)
$TCPn:ERR-SENDING invio immediatamente dopo la ricezione dei comandi per indicare che la presa non è pronto per l’invio (n rappresenta il numero di socket)
$TCPn:SENT:x quando i dati sono stati trasferiti; n rappresenta il numero di socket e x rappresenta il numero del pacchetto inviato, conteggiato dal inizializzazione presa

Esempio
Per scrivere la stringa “Hello World” terminato con una nuova linea (\ n) per il socket TCP con ID 1:

$TCP1:W:Hello World\n
$OK-TCP1-Sending
$TCP1:SENT:1

 

TCP Data Receive (Read)

Quando alcuni dati vengono ricevuti da un socket connesso, i seguenti due messaggi vengono inviati al controller, contenenti rispettivamente intestazione e dati:

Formato intestazione del messaggio

$TCP N_Socket: #NNNN,IP :Port

Dove:

  • N_Socket è il numero del socket che ha ricevuto i dati
  • NNN è il numero di byte ricevuti formattati su 3 cifre (ad esempio, 5 byte saranno 005)
  • IP è l’IP del dispositivo remoto che ha inviato i dati (formattato come XXX.XXX.XXX.XXX)
  • PORT è la porta TCP del mittente a distanza

Formato del messaggio dati

 

$TCP N_Socket: >X: [#NNNN:] [ASCII_DATA]

Dove:

  • N_Socket è il numero del socket che ha ricevuto i dati
  • X può essere il carattere A (per la modalità ASCII) e B (per modalità binaria). Questo carattere specifica come i dati ricevuti verranno inviati al micro-controllore (la stessa modalità utilizzata durante l’inizializzazione socket)
  • NNNN è un numero di quattro cifre che specifica il numero di byte di dati che seguono il messaggio (questo campo è inviato solo per la modalità binaria)
  • ASCII_DATA è la linea di testo ricevuto in modalità ASCII. Se la presa è impostato in modalità binaria, questo campo è vuoto e il messaggio binario segue dopo una nuova linea di byte (\ n).

Esempio

1) Se il messaggio “Ciao \ r \ n” viene ricevuto dalla presa # 0 configurato in modalità ASCII, apparirà il seguente risultato:
$TCP0:#0007,192.168.1.103:64292
$TCP0:>A:HELLO
$TCP0:DISCONNECTED

dove 192.168.1.103 e 64292 rispettivamente IP del mittente e Port.

2) Se il messaggio “Ciao \ r \ n” viene ricevuto dalla presa # 0 configurato in modalità binaria, apparirà il seguente risultato:

$TCP0:#0007,192.168.1.103:64292
$TCP0:>B:#0007:
HELLO

$TCP0:DISCONNECTED

Si prega di notare che il messaggio binario inizia su una nuova linea e che anche le terminazioni messaggio “\ r \ n” sono inviati attraverso la linea seriale.

 

TCP Sockets – Examples

Esempio 1
Scaricare il file logo.png dal server www.miupanel.com e salvarlo con il nome picture.png, utilizzando il socket TCP ID #0:

Comando
$TCP0:CBFH:www.miupanel.com:80:picture.png:http://www.miupanel.com/logo.png

Risponsta
$OK-TCP0-Connecting
$TCP0:CONNECTED
$TCP0:SENT:1
$TCP0:FILE-LEN:14125
$TCP0:FILE-SAVED
$TCP0:DISCONNECTED

Spiegazione: l’uso di TCP # 0 per la connessione (C) in modalità binaria (B) per file (F) il trasferimento su protocollo HTTP (H) con il server www.miupanel.com sulla porta 80. Salvare i dati ricevuti nel file con nome picture.png. L’URL dei dati remoto è http://www.miupanel.com/logo.png

Nota: il valore FILE-LEN può essere -1 se il server non specifica l’intestazione content-length.

Esempio 2
Scaricare e inviare al micro-controllore in modalità ASCII il robots.txt file remoto dalla porta TCP 80 di www.google.com server, utilizzando il socket TCP con ID # 0:

Comando
$TCP0:CAH:www.google.com:80:/robots.txt

Risponsta
$OK-TCP0-Connecting
$TCP0:CONNECTED
$TCP0:SENT:1
$TCP0:FILE-LEN:-1
$TCP0:#1440,149.003.177.026:00080
$TCP0:>A:User-Agent: *
$TCP0:>A:Disallow: /search
$TCP0:>A:Allow: /search/about

$TCP0:>A:D
$TCP0:#1440,149.003.177.026:00080
$TCP0:>A:isallow: /jsky/?

$TCP0:DISCONNECTED

Spiegazione: l’uso di TCP #0 per la connessione (C) e la visualizzazione in modalità ASCII (A) la risorsa remota robots.txt disponibili con il protocollo HTTP (H) sul server remoto www.google.com alla porta 80.

Nota 1: il file-LEN è -1 poiché il server non specifica l’intestazione content-length.
Nota 2: in quanto il file viene ricevuto in blocchi (1440 byte) l’ultima riga del pezzo può apparire troncato. Per evitare questo problema definire la lunghezza massima del cavo in modo che i terminatori di linea saranno contrassegnati come bene (vedere l’esempio seguente).

Esempio 3
Scaricare e inviare al micro-controllore in modalità ASCII con terminatori di linea il robots.txt file remoto dalla porta TCP 80 di www.google.com server, utilizzando il socket TCP con ID # 0:

Comando
$TCP0:CA9999H:www.google.com:80:/robots.txt

Risponse
$OK-TCP0-Connecting
$TCP0:CONNECTED
$TCP0:SENT:1
$TCP0:FILE-LEN:-1
$TCP0:#1440,149.003.177.026:00080
$TCP0:>A:User-Agent: *\n
$TCP0:>A:Disallow: /search\n
$TCP0:>A:Allow: /search/about\n

$TCP0:>A:D
$TCP0:#1440,149.003.177.026:00080
$TCP0:>A:isallow: /jsky/?\n

$TCP0:DISCONNECTED

Spiegazione: l’uso di TCP #0 per la connessione (C) e la visualizzazione in modalità ASCII (A) (utilizzando i messaggi con non più di 9999 caratteri) del file robots.txt risorsa remota disponibili con il protocollo HTTP (H) sul server remoto www.google.com a porta 80.

Nota 1: il file-LEN è -1 poiché il server non specifica l’intestazione content-length.
Nota 2: linee troncati alla fine dei blocchi ricevuti possono essere rilevati dal momento che non terminano con caratteri \ e n

Esempio 4
Salvare tutti i dati inviati dal server Web remoto www.google.com in un file locale denominato reply.txt, comprese le intestazioni HTTP, inviati come una risposta al comando / GET, con il socket TCP con ID # 0:

Comando
$TCP0:CAF:www.google.com:80:reply.txt:GET / HTTP1.0\r\n\r\n

Risponsta
$OK-TCP0-Connecting
$TCP0:CONNECTED
$TCP0:SENT:1
$TCP0:FILE-SAVED
$TCP0:DISCONNECTED

Spiegazione: l’uso di TCP # 0 per la connessione (C) in modalità ASCII (A) al server www.google.com sulla porta 80 salvare l’intera risposta al file (F) nome reply.txt. Dal momento che vogliamo salvare le intestazioni HTTP troppo, noi non permettiamo il parser HTTP (H) in modo che non vengano rimosse le intestazioni. Tuttavia, dobbiamo impostare manualmente il messaggio HTTP per richiedere la risorsa remota, quindi abbiamo impostato il messaggio automatico da inviare al server dopo la connessione a: GET / HTTP / 1.0

Esempio 5
Connettersi al server remoto www.google.com e inviare al micro-controllore in modalità binaria la risposta alla richiesta GET /, utilizzando il socket TCP con ID # 0:

Comando
$TCP0:CB:www.google.com:80:GET / HTTP1.0\r\n\r\n

Risposta
$OK-TCP0-Connecting
$TCP0:CONNECTED
$TCP0:SENT:1
$TCP0:#0488,149.003.177.050:00080
$TCP0:>B:#0488:
HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8


$TCP0:DISCONNECTED

Spiegazione: utilizzare TCP #0 per collegarsi in modalità (C) in ASCII (B) al server www.google.com sulla porta 80 e di chiedere GET /, l’invio di tutta la risposta alla micro-controllore. Dal momento che vogliamo ricevere le intestazioni HTTP troppo, non abilitare il parser HTTP (H), quindi dobbiamo inviare manualmente la richiesta della risorsa remota: abbiamo impostato il primo messaggio automatico a GET / HTTP / 1.0

Esempio 6
Invia ad un server personalizzato, con metodo GET, temperatura e umidità, riportando al micro-controllore in modalità ASCII la risposta del server. In questo esempio, supponiamo che un server Web remoti, implementa una pagina ASP / PHP in grado di leggere i parametri inclusi nella URL richiesto. Supponiamo che il server risponderà con una semplice riga di testo.

Comando
$TCP0:CAH:www.miupanel.com:80:http://www.miupanel.com/measure.asp?t=23&h=53

Risponsta
$OK-TCP0-Connecting
$TCP0:CONNECTED
$TCP0:SENT:1
$TCP0:FILE-LEN:15
$TCP0:#239,031.011.032.035:00080
$TCP0:>A:OK (T=23, H=53)
$TCP0:DISCONNECTED

File measure.asp sul server di miupanel.com

OK<% response.write ” (T=”+Request.QueryString(“t”)+”, H=”+Request.QueryString(“h”)+”)” %>

Spiegazione: utilizzare TCP #0 per la connessione (C) e la visualizzazione in modalità ASCII (A) la risposta del server www.myserver.com al HTTP (H) hanno chiesto measure.asp URL. I parametri (temperatura 23 ° C, ed umidità 53%) sono inclusi nel URL.

Esempio 7
Installare un server WEB semplificato per accettare richieste HTTP in ingresso (sulla porta TCP 5555) e file locali di trasferimento (upload) (senza restrizioni sul nome del file e senza password). Il file dovrebbe apparire nella finestra del browser.

Comando
$TCP0:LAFH::5555

Risposta
$OK-TCP0-Listen

richiesta del browser (URL) per richiedere il logo di esempio 1

http://192.168.1.100:5555/picture.png

Risposta dopo la richiesta del browser
$TCP0:CONNECTED
$TCP0:FILE-SENT
$TCP0:DISCONNECTED

Spiegazione: l’uso di TCP #0 per ascoltare (L) e inviare in ASCII modalità (A) un file locale (F) utilizzando il protocollo HTTP (H) sulla porta TCP 5555. Si prega di notare che il file viene sempre trasferito in modalità binaria per il browser , ma la modalità aSCII (a) ha l’effetto per visualizzare il file trasferito nella finestra del browser. La modalità binaria (B) innescherebbe il download Finestra di dialogo invece.

Esempio 8
Installare un server WEB semplificata per accettare richieste HTTP in ingresso (sulla porta TCP 5555) per il trasferimento (upload) il picture.png file locale con la password secretword. Il file deve essere scaricato sul computer remoto e non visualizzato nella finestra del browser.

Comando
$TCP0:LBFH::5555:picture.png:secretword

Risponsta
$OK-TCP0-Listen

richiesta del browser (URL) per richiedere il logo di esempio 1

http://192.168.1.100:5555/picture.png?secretword

Risposta dopo la richiesta del browser
$TCP0:CONNECTED
$TCP0:FILE-SENT
$TCP0:DISCONNECTED

Spiegazione: utilizzare TCP #0 per ascoltare (L) e di inviare in modalità binaria (B) il file locale (F) picture.png utilizzando il protocollo HTTP (H) sulla porta TCP 5555 protegge il trasferimento con il secretword password. Si prega di notare che utilizzando la modalità binaria, il browser attiverà la finestra di dialogo di download invece di visualizzare il file nella finestra del browser.

Esempio 9
Installare un server WEB semplificato per accettare richieste HTTP in ingresso (sulla porta TCP 5555) per il trasferimento nella memoria flash del modulo (download !!) il file abc.txt con la password secretword. Il file viene trasferito dal computer remoto sul disco del modulo.

Comando
$TCP0:LBFHD::5555:abc.txt:secretword

Risposta
$OK-TCP0-Listen

Il browser può aprire una pagina HTML locale per caricare il file (codice sorgente segue)

http://127.0.0.1/upload.html

Risposta dopo la richiesta del browser
$TCP0:CONNECTED
$TCP0:FILE-SAVED
$TCP0:DISCONNECTED

HTML upload.html file che può essere utilizzato da un browser del computer per la selezione e il trasferimento di un file su disco del modulo

<html>
<body>
<form id=’uPost’ method=”post” enctype=”multipart/form-data” action=”http://192.168.1.100:5555/?file=abc.txt&secretword”>
<input type=”file” name=”ufile”>
</form>
<button onclick=’document.getElementById(“uPost”).submit();’>SEND</button>   </body>
</html>

Spiegazione: l’uso di TCP #0 per ascoltare (L) e in modalità binaria (B) per il download (D) un file (F) utilizzando il protocollo HTTP (H) un file con nome abc.txt sulla porta TCP 5555 protegge il trasferimento con il secretword password. Si prega di notare che sul computer remoto un browser può utilizzare la pagina di upload.html riportato qui sopra per eseguire il trasferimento.

Esempio 10
Installare un server WEB semplificato per visualizzare nella finestra di un browser il messaggio definito dall’utente “Ciao Mondo” (o qualsiasi altro contenuto). Il sistema accetta le richieste HTTP in ingresso (sulla porta TCP 5555).

Comando
$TCP0:LAHQ::5555:HTTP/1.0 OK\r\n\r\nHELLO WORD

Risposta
$OK-TCP0-Listen

Browser request (URL)
http://192.168.1.100:5555/

Risposta dopo la richiesta del browser
$TCP0:CONNECTED
$TCP0:>H:GET / HTTP/1.1
$TCP0:SENT:1
$TCP0:DISCONNECTED

Contenuto della finestra del browser dopo la richiesta

HELLO WORLD

Spiegazione: l’uso di TCP #0 per ascoltare (L) in modalità ASCII (A) sulla porta TCP 5555, la gestione del protocollo HTTP (H) di richieste in arrivo, rispondendo a loro con il messaggio predefinito e smettere la comunicazione subito dopo la risposta (Q). Si noti che in questo caso specifico, la modalità HTTP (H) ha l’effetto di visualizzare solo la prima riga della richiesta HTTP dal browser, mentre tutte le altre linee sono nascoste (la prima riga viene inviato come: $TCP0: > H: ….. dove> H significa intestazione ricevuta)

Esempio 11
Installare un server WEB semplificata per visualizzare nella finestra di un browser il messaggio il micro-controllore decide in base al contenuto richiesto. In questo esempio, il browser richiederà i risultati contenuti (sulla porta TCP 5555) e il micro-controllore risponderà con il messaggio Risultato 1351

Comando
$TCP0:LAHQ::5555

Risposta
$OK-TCP0-Listen

Richiesta del browser (URL)
http://192.168.1.100:5555/results

Risposta dopo la richiesta del browser
$TCP0:CONNECTED
$TCP0:>H:GET /results HTTP/1.1

Il microcontrollore elabora la richiesta ed eseguire il seguente comando

$TCP0:W:Result 1351

Risposta dopo richiesta di scrittura
$OK-TCP0:Sending
$TCP0:SENT:1
$TCP0:DISCONNECTED

Contenuto della finestra del browser dopo la richiesta

Result 1351

Spiegazione: utilizzare TCP #0 per ascoltare (L) in modalità ASCII (A) sulla porta TCP 5555, la gestione del protocollo HTTP (H) di richieste in arrivo, smettere la comunicazione subito dopo la risposta (Q). Si prega di notare, tuttavia, che nessun messaggio è definito in modo che la risposta deve essere gestito dal microcontrollore. La modalità HTTP (H) ha l’effetto di visualizzare solo la prima riga della richiesta HTTP dal browser, che è utile per il microcontrollore per leggere i dati richiesti. Si prega di notare, inoltre, che la risposta micro-controllore non include la risposta HTTP. Una risposta compatibile completo richiederebbe per inviare tutte le intestazioni HTTP, per esempio:

$TCP0:W:HTTP/1.0 200 OK\r\n\r\nResult 1351

La comunicazione viene chiusa automaticamente dopo la risposta (Q), tuttavia, ritengono che, la presa non viene eliminato, quindi è pronto a ricevere altre richieste.

TCP Socket Messages and Errors

Diversi i messaggi possono comparire dopo l’esecuzione del protocollo TCP comandi. L’elenco completo dei messaggi segue (dove n è il numero di socket ID)

$TCPn:ERR-NET (err) Errore di rete (numero err)

$TCPn:FILE-SAVED Il file ricevuto è stato salvato

$TCPn:DISCONNECTED La presa è stato scollegato

$TCPn:FILE-SENT Il file locale è stato inviato

$TCPn:SENT:x Il pacchetto è stato inviato x

$TCPn:CONNECTED La presa è stato collegato

$TCPn:FILE-ERR-REPLY risposta del server HTTP non corretta o sconosciuta

$TCPn:FILE-ERR-RESP (x) Il server remoto ha risposto con errore HTTP x

$TCPn:FILE-LEN:x Il server ha risposto con Content-Length di x byte

$TCPn:ERR-DNS Il nome del server remoto non poteva essere risolto

$TCPn:ERR-CONNECT (x) Impossibile connettersi al server remoto (errore x)

$TCPn:ERR-SOCKET-BUSY Il socket è già impegnato con l’operazione precedente

 

UDP Sockets – Network of µPanels

Dalla versione firmware 003 (AA003A), μPanel implementa funzioni per l’uso diretto del TCP e UDP socket, fornendo un modo semplice ed efficace per effettuare sia a basso livello e il trasferimento dei dati ad alto livello. In particolare, i socket UDP può essere facilmente utilizzato per organizzare una rete di dispositivi μPanel. Le caratteristiche principali di funzioni socket UDP sono:

  • Fino a 2 Socket UDP (che opera sia per la trasmissione e ricezione)
  • accesso a basso livello per datagram (sia in modalità binaria o ASCII)
  • Configurare-e-Send-Datagram o ricevere e-Send-Datagram funzioni in un singolo comando

La sintassi dei comandi socket è stato progettato per ridurre al minimo l’intervento micro-controllore durante la realizzazione del semplice trasferimento di dati. comandi UDP iniziano con il prefisso $ UDP.

comandi UDP permettono sia di ricevere e trasmettere datagramma utilizzando una determinata porta UDP. Quando si crea un socket UDP datagram una definita dall’utente può essere inviata automaticamente.

UDP Socket Initialisation 

La sintassi generale per l’inizializzazione di un socket UDP segue:

Sintassi del Comando UDP

$UDP N_Socket :Connection_Flags :Remote_Address :Remote_Port,[Local_Port] [:Message]

Dove

  • [] Parentesi quadre indicano argomenti opzionali
  • N_Socket è una cifra nell’intervallo {0,1} indica il numero di presa da utilizzare
  • Connection_Flags è una combinazione di uno o più dei seguenti caratteri, che specificano l’azione da eseguire con la presa:
    • {C, D, X, Q}: C per creare (inizializzare presa); D per la presa di eliminazione; X per distruggere presa (eliminare e liberare risorse); Q per lo stato presa query.
    • {A, B}: A per il trasferimento di dati in modalità ASCII, B per la modalità binaria. Il flag A può essere seguita da un numero che indica la lunghezza massima consentita linea. Se la linea supera la lunghezza specificata verrà troncato la linea. Quando si specifica la linea di massimo e la linea non viene troncata la sequenza di caratteri \ e n viene aggiunto alla linea. Ad esempio, l’A100 di bandiera impostare la lunghezza massima della linea a 100 caratteri.
    • M: per abilitare l’IP in entrata / Porta Mask. Quando la maschera è abilitato solo i pacchetti UDP provenienti dal REMOTE_ADDRESS IP e Port Remote_Port sono accettati e visualizzati (se Remote_Port non è specificato vengono accettati tutti i valori della porta. Se REMOTE_ADDRESS non è specificato all IP sono accettati valori).

Si prega di notare che la {C, D, X, Q} bandiere che devono essere i primi nella sequenza e di {A, B} che devono essere i secondi nella sequenza. Si prega di notare, inoltre, che le bandiere tra parentesi graffe sono reciproci esclusiva (cioè non è possibile specificare C e D contemporaneamente)

  • REMOTE_ADDRESS è il nome del dominio o l’indirizzo IP del dispositivo remoto
  • Remote_Port rappresenta la porta del dispositivo remoto
  • Porta_locale è un campo opzionale che può essere specificato per impostare la porta locale da utilizzare
  • Messaggio rappresenta il primo datagramma da inviare al dispositivo remoto non appena viene creato presa

 

Risultato del comando
Le possibili risposte al comando Query (Q) sono:

$ERR-UDPn:Query   La presa non poteva essere interrogato
$UDPn:IS-FREE   non creato
$UDPn:IS-DELETED
$UDPn:IS-CREATED
$UDPn:IS-ON-ERROR
$UDPn:IS-SENDING

Fare riferimento alla fine di questa sezione per la lista degli altri messaggi

Esempi di base (un elenco completo di esempi viene fornita alla fine di questa sezione)

Creare il socket UDP con #ID 0 per inviare il datagram UDP “HELLO” (quattro byte) per il dispositivo remoto con IP 192.168.1.103 sulla porta 5700. Il datagramma in entrata deve essere visualizzato in modalità ASCII

 

$UDP0:CA:192.168.1.103:5700:HELLO
$OK-UDP0-Create
$UDP0:CREATED
$UDP0:SENT:1

UDP Data Send (Write)

La sintassi del comando per l’invio di un datagramma attraverso un socket UDP già inizializzata è la seguente:

Sintassi del comando

$UDP N_Socket: W: DATA

Dove:

  • N_Socket è una cifra nell’intervallo {0,1} indica il numero di presa da utilizzare
  • DATA è una stringa contenente i dati da inviare. I dati possono contenere tutti i caratteri ad eccezione dei seguenti 4 byte, che devono essere sfuggito:
    • Ritorno a capo di byte 13 (fuga sequenza \r)
    • nuova linea di byte 10 (escape sequenza \n)
    • nullo byte 0 (sequenza di escape \0)
    • indietro barra byte 92 (sequenza di escape \\)

Risultato del comando

$OK-UDPn-Sending  immediatamente dopo la ricezione dei comandi di riconoscere l’esecuzione del comando (n rappresenta il numero di socket)

$UDPn:ERR-SEND  immediatamente dopo la ricezione dei comandi per indicare che c’è stato un errore nell’invio del datagram

$UDPn:ERR-BUSY  immediatamente dopo la ricezione di comando per indicare che la presa non è pronto per l’invio (n rappresenta il numero di socket)

$UDPn:SENT:n  quando i dati sono stati inviati; n rappresenta il numero di socket e x rappresenta il numero del datagramma inviato, conteggiato dal inizializzazione presa

Esempio
Per scrivere la stringa “Ciao Mondo” terminato con una nuova linea (\ n) alla presa UDP con ID 1:

$ UDP1: W: Ciao Mondo \ n
$ UDP 1: INVIATO: 1
$ OK-UDP1-Invio

UDP Data Reply (to last received datagram)

La sintassi del comando per l’invio di un datagramma al dispositivo da cui è stato ricevuto l’ultimo datagramma è la seguente:

Sintassi del comando

$UDP N_Socket: R: DATA

Dove:

  • N_Socket è una cifra nell’intervallo {0,1} indica il numero di presa da utilizzare
  • DATA è una stringa contenente i dati da inviare. I dati possono contenere tutti i caratteri ad eccezione dei seguenti 4 byte, che devono essere sfuggito:
    • Ritorno a capo di byte 13 (fuga sequenza \ r)
    • nuova linea di byte 10 (escape sequenza \ n)
    • nullo byte 0 (sequenza di escape \ 0)
    • indietro barra byte 92 (sequenza di escape \\)

Risultato del comando

$OK-UDPn-Sending immediatamente dopo la ricezione dei comandi di riconoscere l’esecuzione del comando (n rappresenta il numero di socket)

$UDPn:ERR-SEND immediatamente dopo la ricezione dei comandi per indicare che c’è stato un errore nell’invio del datagram

$UDPn:ERR-BUSY immediatamente dopo la ricezione di comando per indicare che la presa non è pronto per l’invio (n rappresenta il numero di socket)

$UDPn:SENT:n  quando i dati sono stati inviati; n rappresenta il numero di socket e x rappresenta il numero del datagramma inviato, conteggiato dal inizializzazione presa

Esempio

Per rispondere con la stringa “Ricevuto” terminato con una nuova linea (\ n) al mittente dell’ultimo pacchetto ricevuto:

$UDP1:R:Received\n
$UDP1:SENT:1
$OK-UDP1-Sending

Comandi Seriali (disponibile a partire dalla versione firmware 004A)

UDP Data Read (datagram received)

Quando un datagramma viene ricevuto da una presa inizializzato i seguenti due messaggi vengono inviati al controllore, contenenti rispettivamente Header e dati:

Formato intestazione del messaggio

$UDP N_Socket: #NNNN,IP :Port

Dove:

  • N_Socket è il numero del socket che ha ricevuto i dati
  • NNNN è il numero di byte ricevuti formattati su 4 cifre (ad esempio, 5 byte saranno 0005)
  • IP è l’IP del dispositivo remoto che ha inviato i dati (formattato come XXX.XXX.XXX.XXX)
  • PORT è la porta UDP del mittente a distanza

Formato del messaggio dati

 

$UDP N_Socket: >X: [#NNNN:] [ASCII_DATA]

Dove:

  • N_Socket è il numero del socket che ha ricevuto i dati
  • X può essere il carattere A (per la modalità ASCII) e B (per modalità binaria). Questo carattere specifica come i dati ricevuti verranno inviati al micro-controllore (la stessa modalità utilizzata durante l’inizializzazione socket)
  • NNNN è un numero di quattro cifre che specifica il numero di byte di dati che seguono il messaggio (questo campo è inviato solo per la modalità binaria)
  • ASCII_DATA è la linea di testo ricevuto in modalità ASCII. Se la presa è impostato in modalità binaria, questo campo è vuoto e il messaggio binario segue dopo una nuova linea di byte (\ n).

Esempio
1) Se il messaggio “Ciao” ricevuto dalla presa # 0 configurato in modalità ASCII, apparirà il seguente risultato:

$UDP0:#0005,192.168.001.103:64292
$UDP0:>A:HELLO

dove 192.168.1.103 e 64292 rispettivamente IP del mittente e Port.

2) Se il messaggio “Ciao” ricevuto dalla presa # 0 configurato in modalità binaria, apparirà il seguente risultato:

$UDP0:#0005,192.168.001.103:64292
$UDP0:>B:#0005:
HELLO

Si prega di notare che il messaggio binario inizia su una nuova linea.

UDP Sockets – Examples

Esempio 1
Invia un datagramma contenente i 6 caratteri “CIAO \ n” ad un dispositivo remoto con IP 192.168.1.103 sulla porta UDP 5700, utilizzando il socket UDP con ID # 0:

Comando
$UDP0:CA:192.168.1.103:5700:HELLO\n

Risposta
$UDP0:CREATED
$UDP0:SENT:1
$OK-UDP0-Create

Spiegazione: utilizzare UDP # 0 per creare (C) una presa di corrente in modalità ASCII (A) per l’invio di datagrammi al 192.168.1.103 IP remoto sulla porta UDP 5700 e inviare il primo datagramma “CIAO \ n”.

Il sistema selezionerà automaticamente una porta locale gratuito. Tutti i datagrammi ricevuti su questa porta saranno accettati ed elaborati indipendentemente l’IP e la porta del mittente a distanza (vale a dire il flag maschera M non è utilizzato).

 

Esempio 2

Invia un datagramma contenente i 6 caratteri “Ciao \ n” ad un dispositivo remoto con IP 192.168.1.103 sulla porta UDP 5700, utilizzando la porta locale 5600. Accetta datagramma in arrivo solo con l’IP e la porta del dispositivo remoto (192.168.1.103 : 5700):

Comando
$UDP0:CAM:192.168.1.103:5700,5600:Hello\n

Risposta
$UDP0:CREATED
$UDP0:SENT:1
$OK-UDP0-Create

Spiegazione: Usa UDP # 0 per creare (C) una presa di corrente in modalità ASCII (A) per l’invio di datagrammi dalla porta locale 5600 al 192.168.1.103 IP remoto sulla porta UDP 5700 e inviare il primo datagramma “CIAO\n”.

Solo saranno accettate e trattati quei datagrammi ricevuti dal IP remoto e la porta specificati.

Esempio 3
Create an UDP socket to receive/send datagrams in ascii mode from any devices on the local port 5600:

Comando
$UDP0:CA::,5600

Esempio 4
Crea un socket UDP per ricevere / inviare datagrammi in modalità ASCII da qualsiasi periferica di invio dalla porta remota 5700 alla porta locale 5600:

Comando
$UDP0:CAM::5700,5600

Esempio 5
Crea un socket UDP per ricevere / inviare datagrammi in modalità binaria dal dispositivo remoto con IP 192.160.1.103 e la porta 5700, alla porta UDP locale 5600:

Comando
$UDP0:CBM:192.168.1.103:5700,5600

UDP Socket Messages and Errors

Diversi i messaggi possono comparire dopo l’esecuzione di comandi UDP. L’elenco completo dei messaggi segue (dove n è il numero di socket ID)

$UDPn:ERR-SOCK (err) Errore socket (numero err)

$UDPn:CREATED Il socket è stato creato

$UDPn:SENT:x Il numero datagram x è stato inviato

$UDPn:ERR-DNS Il nome del server remoto non può essere risolto

$NAME (protected)

Questo comando imposta il nome del prodotto. Questo nome apparirà automaticamente nel APP quando l’utente registra il modulo.

Sintassi del comando

$NAME:Product_name
La lunghezza massima nome è di 63 caratteri (o 63 byte). Il nome non è memorizzato nella memoria flash, quindi deve essere impostato ogni volta che il sistema viene acceso o resettato.

$WIFI (protected)

Questo comando passare temporaneamente OFF / ON della radio Wi-Fi, sia come access point o come client.

Sintassi del comando

$WIFI:Mode
Modalità può essere un numero come segue:

Mode = 0: Access Point OFF, Client OFF
Mode = 1: Access Point OFF, Client ON
Mode = 2: Access Point ON, Client OFF
Mode = 3: Access Point ON, Client ON

$PWRD (protected)

Questo comando entra / esce dalla modalità di spegnimento.

Sintassi del comando

$PWRD:E
Where E can be:E = 0: Power down disabled
E = 1: Power down enabled

Durante la modalità di spegnere il radio WiFi è spento per ridurre il consumo di energia. L’interfaccia seriale e il disco interno continuerà a funzionare normalmente.

$CBRIDGE-ON (protected)

Questo comando abilita la modalità di connessione cloud-ponte. Quando questa modalità di collegamento è attivata, la comunicazione con il miuPanel APP passa sul server cloud-ponte, che funge da ponte e permette la comunicazione anche se il modulo non può utilizzare un IP pubblico. Quando questa modalità di connessione è abilitato, il collegamento tramite router (sia locale o via Internet) verrà disabilitato. È ancora possibile, tuttavia, per la connessione al modulo tramite il punto di accesso. Per impostazione predefinita, tutti i moduli utilizzano il nostro server gratuito cloud-ponte, ma su richiesta, un server cloud-ponte dedicato possono essere creati per un insieme di moduli.

Sintassi del comando

$CBRDIGE-ON
Questa configurazione è memorizzato nella memoria flash, quindi non è necessario eseguire il comando ad ogni riavvio.

$CBRIDGE-OFF (protected)

Questo comando disattiva la modalità di connessione cloud-ponte.

Sintassi del comando

$CBRDIGE-OFF
Questa configurazione è memorizzato nella memoria flash, quindi non è necessario eseguire il comando ad ogni riavvio.

$PID

Questo comando consente di visualizzare il numero di serie (S / N) e il numero di serie completa

Sintassi del comando

$PID

$NEWREG (protected)

Questo comando de-registra tutte le APP. Dopo questo comando viene emesso, il modulo sarà rimosso da tutti i dispositivi mobili, e il processo di registrazione deve essere ripetuta per aggiungere di nuovo il modulo nella lista. Le applicazioni che non ripetere la procedura di registrazione non riceveranno più push-notifiche.

Sintassi del comando

$NEWREG

Dopo l’esecuzione di questo comando del modulo μPanel si riavvierà


$CLOUD (protected)

Questo comando permette di utilizzare alcune funzionalità cloud.

Sintassi del comando

$CLOUD Command:Parameters

Molti comandi cloud possono essere messi a disposizione. Gli attuali comandi supportati sono:

$CLOUD GET:DATE

Recuperare la data e l’ora dalla nube. La risposta includerà l’ora in formato Java seguita dalla data e ora UTC leggibile. Ecco un esempio:

$CLOUD:TIME:1464599263603 2016-05-30 09:07:43 UTC

$CLOUD GET:DATE+TimeZone

Recuperare la data e l’ora dal cloud. La risposta includerà l’ora in formato Java seguito da tempo la data leggibile per la specifica fascia oraria. Come esempio, la richiesta $ CLOUD GET: DATA + 2 produrrà la seguente risposta:

$CLOUD:TIME:1464599263603 2016-05-30 11:07:43 UTC+2

$CLOUD SEND:PUSH:Message

Invia una notifica push (messaggio) su tutte i dispositivi che hanno registrato il modulo. Bisogna notare che  i messaggi push non vengono memorizzati sul cloud, quindi, se un dispositivo mobile (ad esempio smartphone) è off-line (ad esempio spento), solo l’ultimo messaggio inviato a quel determinato dispositivo mobile sarà ricevuto quando esso viene riacceso.
Attulmente il numero massimo di notifiche gratuite che possono essere inviare dal modulo è impostato a 100 al giorno, se la tua applicazione ha bisogno di un numero superiore di notifiche giornaliere contattaci.

Risposta:

$OK-CLOUD  quando il comando è stato correttamente interpretato dal cloud
$ERR-CLOUD  quando il cloud è occupato o c’è stato un errore

Inoltre, nel primo caso, la risposta continua con:

$CLOUD:PUSH:n   quando la notifica push è stata inoltrata (n indica il numero di dispositivi che riceveranno la notifica)
$CLOUD:PUSH-ERR: Daily Limit  quando il limite massimo di notifiche giornaliere è stato raggiunto

$CLOUD PCODE:SET

Il seguente comando permette di generare una password, detta pairing code, che consente l’accoppiamento remoto modulo/smartphone senza che lo smartphone sia vicino al modulo durante la procedura di accoppiamento.
Poichè è il cloud µPanel che genera il pairing code, è necessario che il modulo wi-fi sia connesso ad internet mentre si usa il seguente comando.

Sintassi del comando

$CLOUD PCODE: SET: seed [:n]

I parametri sono:

  • seed è un qualunque numero a 12 cifre (lunghezza fissa) che viene usato dal sistema per generare il pairing code del modulo
  • n è il numero di volte il codice di accoppiamento può essere usato prima di essere disattivato

Il parametro n può essere omesso, ma è fortemente consigliato specificarne un valore. Se non si specifica un numero massimo di utilizzi, il pairing code rimane valido per un numero illimitato di volte.
Comunque, a prescindere dal numero di utilizzi massimo preimpostato, il sistema consente l’inserimento di un codice sbagliato per un massimo di 20 volte consecutive, oltre il quale il codice si disattiva.

Risposta del modulo

$CLOUD:PCODE-SET:seed:n (Pairing-Pin-Code: xxxx-xxxx-xxxx-xxxx-xxxx-xxxx)

quando il cloud µPanel riceve correttamente il comando e risponde inviando il pairing code da usare sull’app per la procedura di accoppiamento.
Si noti che il pairing code è la stringa esadecimale lunga 24 caratteri (esclusi i trattini ‘-‘, i quali possono essere omessi durante l’inserimento del codice).

$ERR-CLOUD

quando il cloud non risponde, per esempio perchè il modulo non ha accesso ad internet.

Disattivare il pairing code

E’ possibile disattivare il codice in qualunque momento inviando il comando senza specificare alcun parametro:

$CLOUD PCODE: SET:

Si noti che il comando non cancella il modulo dalla lista nell’App µPanel, ma semplicemente disattiva il pairing code.
Così, se si invia il comando:

$CLOUD PCODE:SET:

il modulo risponde:

$CLOUD:PCODE-SET:Disabled:0 (Pairing-Pin-Code: xxxx-xxxx-xxxx-Disa-bled-)

Example

Sending the command:

$CLOUD PCODE:SET:123456789012:10

il modulo risponde così:

$CLOUD:PCODE-SET:123456789012:10 (Pairing-Pin-Code: 0284-7d83-3567-1234-5678-9012)

$CLOUD PCODE:GET

Questo comando permette di verificare se è attivo un pairing code e se è stato usato.

Sintassi del comando:

$CLOUD PCODE: GET:

Riposta al comando:

$CLOUD:PCODE-GET:seed:n:failures

quando un pairing code è stato precedentemente definito.
seed è il numero a 12 cifre che è stato dichiarato col comando PCODE:SET
n è il numero di procedure di accoppiamento nel quale è possibile usare il pairing code dichiarate col comando PCODE:SET
failures è un numero che conta quante volte consecutive il codice è stato inserito in modo sbagliato durante una procedura di accoppiamento. Un massimo di 20 errori d’inserimento consecutivi  è permesso, oltre il quale il codice viene disabilitato. E’ comunque possibile rigenerare lo stesso (o un differente) pairing code usando nuovamente il comando PCODE:SET .

$CLOUD:PCODE-GET::0:0

Se non è attivo alcun codice di accoppiamento.

Example

Inviando il comando:

$CLOUD PCODE:GET:

il modulo risponde:

$CLOUD:PCODE-GET:123456789012:8:2

che significa che il codice può essere utilizzato per ancora 8 volte e che le utime due volte è stato inserito sbagliato.<
Dopo di ciò, se l’utente usa  correttamente il codice, la nuova risposta al comando sarà:

$CLOUD:PCODE-GET:123456789012:7:0

altrimenti, se l’utente inserisce di nuovo un codice sbagliato, la risposta sarà:

$CLOUD:PCODE-GET:123456789012:8:3