
Web HVAC per Kirin3 Freescale - Progetto Open Source da Freescale. Il firmware standard spedito con l'M52259DEMOKIT e l'M52259EVB da Freescale è il web HVAC, che permette agli utenti di visualizzare e controllare HVAC attraverso un browser web standard. Il web server utilizza un IP di default 169.254.3.3 ed assegna IP per i PC collegati sulla rete 169.254.3.x attraverso cavo Ethernet cross-over.
Web HVAC da Freescale - Introduzione
Ovviamente non è presente nessun metodo di autenticazione per cui lo sviluppatore può usufruirne liberamente. Il web server inoltre visualizza pagine web extra nel caso si inserisca una chiavetta USB con le pagine necessarie. La procedura è contenuta nel quarto progetto di laboratorio della serie di progetti demo preparati per il kit demo del microcontrollore Kirin3. Qui potete trovare la lista dei progetti:
- Lab 1: Controller HVAC, MQX RTOS (HVAC + Console Remota + UI Locale)
- Lab 2: MQX USB e MFS (HVAC + Console Remota + UI Locale + USB logger)
- Lab 3: MQX RTCS Telnet e FTP (HVAC + Console Remote per RS232 e Telnet + UI Locale + USB logger + FTP server)
- Lab 4: Web HVAC (HVAC + Console Remota + UI Locale + HTTP server + USB host/periferica di archiviazione di massa con maggiori pagine web)
- Lab 5: Rilevamento errori utilizzando Task Aware Debugging (TAD) in CW
- Lab 6: Bridge da Ethernet a Serial.
Dal Lab1 al Lab4, i progetti dimostrativi diventano via via più complessi.
Il progetto web HVAC (heating, ventilation, and air conditioning) vede come protagonisti MQX RTOS, RTCS TCP/IP, CMX USB host e periferica di archiviazione di massa, MFS FAT file system, Web CGI e la console di comando dalla console RS232 per mostrare il funzionamento di un Web server HVAC embedded con una tecnica di programmazione web ad-hoc. Poichè il progetto implementa la GUI con AJAX, la risposta totale del sistema è alquanto veloce. Allo stesso tempo però possiamo separare il design delle funzioni CGI dalla UI Web. Il progetto risulta semplice da mantenere e semplice da aggiornare per eventuali richieste dei clienti. Infine, Freescale offre una comoda utility per convertire le risorse HTML da una cartella ad un file C. Chiaramente dobbiamo ancora migliorare il progetto per renderlo completamente operativo all'interno di una rete esistente.
Programmazione Web
Se non avete mai usato Lynx, rimarrete impressionati dalle pagine Web presentate in modalità testuale. HTTP è un protocollo che resta in ascolto sulla porta 80 (oppure 8080) del protocollo TCP. I browsers internet (user agent) convertono le pagine ed i tag HTML nella "tela" dei browsers, cosicchè la pagina venga presentata in modalità grafica.
All'inizio, un server HTTP resta solo in ascolto sulla porta, poi ottiene le informazioni dallo user agent e le richieste dell'utente e risponde inoltrando i files richiesti. Il metodo di lavoro è diretto, ed in un web server è stato possibile utilizzare finora ogni linguaggio di programmazione con input/output standard, incluso C, script da terminale (che sono chiamati CGI, Common Gateway Interface) e linguaggi di scripting web dedicati (Perl, PHP, Python, Lua, JSP, ASP, ecc.). Nei web server embedded, C risulta essere il linguaggio preferito per implementare le funzioni CGI. Quando si realizza il design per un progetto embedded che utilizza web server, con funzioni CGI e pagine HTML che supportino i metodi GET e POST, risulta difficile separare la logica dell'applicazione dalla presentazione dell'UI. Allo stesso tempo, le performance di un web server embedded con ristretta memoria e potenza computazionale sono molto basse poichè i metodi REFRESH/GET/POST ricaricano la pagina completamente.
Questo era l'incubo di portali come MSN/Yahoo, poichè c'erano troppe connessioni concorrenti che tentavano di caricare una pagina HTML abbastanza grande con un'immenso numero di files. Per un web server la stessa situazione avrebbe risultati peggiori, perchè verrebbe sovraccaricato con molteplici connessioni.
AJAX è ampiamente diffuso perchè porta vari benefici rispetto agli approcci tradizionali. AJAX è una rivoluzione nella programmazione web basata su svariate tecnologie esistenti. AJAX è costituito da CSS, JavaScript, DOM, e XMLHTTP. La maggior parte dei siti web sono migrati ad AJAX, dal momento che offre maggior velocità nelle risposte, maggiore interazione con l'utente, struttura indipendente dai dati, presentazione dipendente dalla periferica, programmazione orientata ad oggetti, operazioni infra-domini e potenzialità mash-up. Recentemente, JSON ha ottenuto maggiore attenzione grazie alla sua struttura dati più semplice rispetto al formato XML.
La programmazione web va oltre lo scopo di questo articolo, ma risulta importante in un web server di tipo embedded.
AJAX (o JSON) può ridurre il tempo di transazione tra il browser ed il web server. Questo risulta essere il maggior beneficio per questo progetto.
Convertire HTML in C
Freescale offre una utility chiamata mktfs per convertire risorse web (inclusi HTML, CSS, JavaScript ed immagini) in un file C. Dopo aver impostato il design delle pagine HTML con il vostro programma preferito, potete avviare l'utility dal prompt dei comandi per convertire una intera directory HTML in un file C.
C:\Program Files\Freescale\Freescale MQX 3.0\demo\web_hvac\>mktfs.exe web_pages tfs_data.c Converting web_pages directory to file tfs_data.c ... Adding file hvac.html Adding file hvac_input.html Adding file ipstat.html Adding file mcf5225x.html Adding file mqx.html Adding file rtx.html Adding file tcpstat.html Done.
CGI in Web Server di tipo embedded
Vi preghiamo di ricordare che è possibile convertire solo le risorse statiche in un file C di grandi dimensioni (530KB). Le funzioni interattive sono implementate nel file cgi_*.c.
Cercando *.cgi nella cartella web_pages, ho trovato i seguenti valori:
C:\Program Files\Freescale\Freescale MQX 3.0\demo\web_hvac\web_pages>grep -irn ".cgi" ./ ./hvac.html:308: makeRequest("hvacdata.cgi"); ./hvac_input.html:310: makeRequest("hvacdata.cgi"); ./hvac_input.html:363: