$P
$APP-CLIM
$APP-CFULL
$RESET
$LINK
$UNLINK
$FIRMWARE_UPGRADE
$DOWNLOAD_AT
$AT-REVERT
$BAUD
$ROUTER
$NOROUTER
$APSET
$CONNECT
$DISCONNECT
$CONFIG
$PING
$PASSWORD
(since firmware v.003A)
$ECHO
$STAIP
$CONNSTA
$APSTA
$APLIST
$AP-CLIMSET
$DISK
$FILE
$UDP
(since firmware v.004A)
$NAME
$WIFI
$PWRD
$CBRIDGE-ON
$CBRIDGE-OFF
$PID
$NEWREG
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).
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;
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
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
$OK–APPFULL 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
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
Questo comando permette sia di collegare un LED virtuale definito sul pannello ad un ingresso fisico (GPIO) del modulo WiFi, oppure, uno switch virtuale sul pannello su uno dei pin GPIO del modulo WiFi. Interagendo con il pannello è quindi possibile monitorare e controllare pin reali del modulo WiFi. Più pin di ingresso e di uscita possono essere collegati contemporaneamente e controllati. Si noti che, collegando un LED virtuale ad un GPIO, il sitema configura automaticamente quel pin come input. Vice versa, collegamento uno switch virtuale ad un pin, il sistema configura automaticamente quel pin come output. Inoltre, se il pin del modulo è multiplato con una funzione periferica interna, tale funzione non sarà disponibile.
Questo comando può essere protetto da $AP-CLIM. Se protetto il comando può essere eseguito solo dalla linea seriale (cioè non può essere eseguito dall’applicazione)
Sintassi dei comandi
$LINK | :Ly | -z |
$LINK | :Wy | -z |
Risultati di comando
$LINKED immediatamente dopo la ricezione dei comandi (a prescindere il successo dell’operazione)
Esempi
Per monitorare lo stato digitale GPIO2 con il numero di LED 3 sul pannello: $LINK:L3-2
Per controllare lo stato digitale GPIO2 con il numero di switch 4 sul pannello: $LINK:W4-2
Questo comando disconnette tutti i LED virtuali e switch dai pin del modulo WiFi, ripristinando le funzioni iniziali dei pin.
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 dei comandi
$UNLINK |
Risposta al comando
$UNLINKED sempre e subito dopo la ricezione del comando
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.
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
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
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.
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.
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.
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.
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“.
Questo comando disconnette il modulo WiFi dalla rete WiFi (unito con il comando $ CONNECT)
Sintassi del comando
$DISCONNECT |
Risultati del comando
$ OK–DISC 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.
Questo comando consente di visualizzare la maggior parte dei parametri di configurazione del modulo WiFi
Sintassi del comando
$CONFIG |
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
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
Questo comando invia un messaggio al microcontrollore attraverso la porta seriale
Sintassi del comando
$ECHO:message |
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.
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.
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.
Questo comando protegge (blocchi) l’accesso ad alcuni comandi per l’App. Quattro gruppi di comandi possono essere protetti:
Ogni gruppo corrisponde a un codice ID, come segue:
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
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
Questo comando permette di creare e utilizzare i socket TCP.
Per la documentazione completa si rimanda ai socket TCP – sezione Trasferimento file / dati.
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.
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.
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.
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
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
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
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
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
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.
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:
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:aComando
$FILE0:OPEN:measures.txt:aRisposta
$FILE0:OPEN 34769 bytes
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:
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: 10Comando
$FILE2:SEEK:10Risposta
$FILE2:SEEK: 10
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:
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 MondoComando
$FILE1:WAN:Hello WorldRisposta
$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
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:
Il risultato comando per ogni riga letta ha il seguente formato:
$FILE0:>A:Read_Line
$FILE0:>B#0010:
dove #0010 rappresenta il numero di byte che verrà inviato al microcontrollore (senza codifica)
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
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:
Risultato del comando
$FILEn:CLOSED dove n è l’ID del file che è stato chiuso
Esempio
Per chiudere il file con ID 1: $FILE1:CLOSEComando
$FILE1:CLOSERisponsta
$FILE1:CLOSED
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:
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:
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
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)
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:
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:
Formato del messaggio dati
$TCP | N_Socket: | >X: | [#NNNN:] | [ASCII_DATA] |
Dove:
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:DISCONNECTEDdove 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.pngRisponsta
$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.txtRisponsta
$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.txtRisponse
$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\nRisponsta
$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\nRisposta
$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=53Risponsta
$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-Listenrichiesta 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:secretwordRisponsta
$OK-TCP0-Listenrichiesta 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:secretwordRisposta
$OK-TCP0-ListenIl 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:DISCONNECTEDHTML 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 WORDRisposta
$OK-TCP0-ListenBrowser 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::5555Risposta
$OK-TCP0-ListenRichiesta 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:
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.
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
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)
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
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:
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
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:
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
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:
Formato del messaggio dati
$UDP | N_Socket: | >X: | [#NNNN:] | [ASCII_DATA] |
Dove:
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:HELLOdove 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:
HELLOSi prega di notare che il messaggio binario inizia su una nuova linea.
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
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
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 |
Questo comando passare temporaneamente OFF / ON della radio Wi-Fi, sia come access point o come client.
Sintassi del comando
$WIFI:Mode |
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
Questo comando entra / esce dalla modalità di spegnimento.
Sintassi del comando
$PWRD:E |
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.
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 |
Questo comando disattiva la modalità di connessione cloud-ponte.
Sintassi del comando
$CBRDIGE-OFF |
Questo comando consente di visualizzare il numero di serie (S / N) e il numero di serie completa
Sintassi del comando
$PID |
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:
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
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
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
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:
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)
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