
La scheda relè I/O con connessione ethernet web server si interfaccia al PC e dal PC è possibile comandare fino a 16 relè e 32 ingressi per ogni scheda. Dalla porta ethernet è possibile pilotare anche un display.
Scheda relè I/O con connessione ethernet web server: descrizione
La scheda relè con connessione web server è dotata di un web server cioè la scheda possiede un suo indirizzo IP (di default è 192.168.1.201 ed è possibile modificarlo o assegnare alla scheda un indirizzo tramite server DHCP) aprendo il proprio browser (internet explorer o altri browser) e digitando nella barra degli indirizzi l'indirizzo IP della scheda:
Sul browser apparirà la seguente pagina web dalla quale potrete leggere lo stato degli ingressi optoisolati e pilotare fino a 16 relè.
Il funzionamento della scheda relè con connessione ethernet web server è molto simile alla procedura di configurazione di un comune router o di una telecamera ethernet: la scheda è dotata di un web server che permette di collegarsi e pilotare la scheda dalla porta ethernet.
La rete, opportunamente configurata, permette di pilotare la scheda relè con connessione ethernet da remoto anche tramite internet, in questo caso occorre verificare che il proprio firewall permetta di raggiungere la scheda. La scheda può essere utilizzata per sostituire un PLC in quanto è dotata di 32 ingressi optoisolati e fino a 16 relè .
Come pilotare la scheda relè con connessione ethernet web server
E' possibile pilotare la scheda anche inviando comandi da programmi simulando la presenza del browser, ad esempio scrivendo:
http://192.168.1.201/forms.htm?led1=1 Provoca l'accensione del Rele
http://192.168.1.201/forms.htm?led1=0 Provoca lo spegnimento del Rele
Per visualizzare gli altri comandi visualizzate la pagina:
http://192.168.1.201/forms.htm
Per leggere lo stato di tutti gli ingressi e lo stato dei relè visita:
http://192.168.1.201/status.xml
Per creare un programma con visual basic.NET o C# che emuli la presenza del browser, di seguito riportiamo un esempio:
Imports System.Net
...
Dim wb As New System.Windows.Forms.WebBrowser
wb.Navigate("http://192.168.1.201/forms.htm?led0=1") '
Accende primo relè
Clicca qui per scaricare il codice sorgente del progetto realizzato con VB.NET 2008
I comandi usati in questo codice sorgente andranno a breve in obsolescenza, conviene utilizzare il controllo "WebClient" che appartiene al namespace "System.Net". Per scrivere dati conviene utilizzare il metodo "DownloadString". Tale oggetto si può utilizzare anche per leggere i file XML(in formato sringa), utilizzando il metodo "UploadString"
Come modificare l'indirizzo IP della scheda relè con connessione ethernet web server
Per modificare l'indirizzo IP della scheda e altri parametri cliccare sul menu' di sinistra alla voce configuration e inserire username=ftp ; password=ftp
E' anche possibile modificare le pagine web presenti all'interno della scheda. Potete modificare le pagine web presenti nella directory sito web, potete modificare il logo presente, dopo averle modificate troverete un programma chiamato MPFS2.exe.
A questo punto occorre aprire il browser e digitare:
http://192.168.1.201/uploadweb
E' possibile anche fare l'upload delle pagine web via ftp (username = ftp e password = ftp)
Ecco le dimensioni d'ingombro della scheda e il posizionamento dei connettori e dei componenti.
Lo schema elettrico della scheda relè con connessione ethernet web server, in particolare uno degli otto ingressi optoisolati (è disponibile anche la scheda con ingressi analogici 0-5V oppure 0-10V ).
Se come ingressi si intende usare dei contatti puliti (es. pulsanti, interruttori, fine corsa) occorre specificare in fase d'ordine che la scheda deve avere gli ingressi NON optoisolati, se invece sull'ingresso si intende applicare una tensione (ad esempio proveniente da una fotocellula) allora occorre specificare, in fase d'ordine, che la scheda abbia ingressi optoisolati. Sono disponibili anche con WiFi, USB, CAN BUS, RS232, RFID
Questo prodotto è uno dei Premi Qualità di Marzuino. Per averlo gratuitamente leggi il regolamento di Marzuino.
La scheda relè con connessione ethernet è disponibile subito sul sito di
http://www.progetti-hw-sw.it

Quando l’ho vista tra i premi qualità di marzuino sono rimasto rimasto impressionato, ma mai quanto lo sia stato nel leggere un oscilloscopio come primo premio! Comunque progetto interessante e dalle applicazioni sicuramenti molteplici. Complimenti!
bellissima scheda, la userei per fare tanti cosine, come l’accensione da remoto delle luci di casa, mi piacerebbe molto vedere le librerie per visual basic, che so usare, e con cui ho fatto tutti i miei programmi. Inoltre il circuito, essendo lella rete di casa, si può raggiungere anche tramite internet, che rende facile l’utilizzo a distanza, con un computer ed una connessione adf internet.
Questo tipo di dispositivo è molto utile nell’ambiente della domotica dove attualmente in mondo a poco a poco si sta girando , è molto interessante che questo è autonomo e non necessita di un computer perennemente acceso quindi un grosso risparmio dal punto di vista dell’energia elettrica , usando il suo proprio web server che ha implementato all’interno tramite un microcontrollori lo rende molto versatile , utilizzando la scheda di rete integrata non solo permette l’accesso sulla rete domestica ma facendo alcuni accorgimenti di solo roter di casa è anche possibile vederlo in remoto o via Internet, un’altra cosa molto importante e la sua compatibilità con il VB net ce lo rende accessibile anche a quelle persone che non sono perfettamente a loro agio con la programmazione in altri linguaggi C o il Delphi ,
Comunque sia la sua modularità come la possibilità di modificare o di estendere il progetto lo rende molto interessante . sicuramente sarebbe una cosa su cui un po’ di studio sarebbe necessario visto che questo mondo sta a poco a poco andando verso l’domotica
soluzioni pronte all’uso, costruite da una azienda italiana, sui moduli di telecontrollo e assistenza fa concorrenza alla rinomata Beghelli con il suo telesalvalavita.
Forse il nome è un po’ semplice e banale per un azienda del settore.
Pensandoci bene esiste un altro problema che mi sorge è che se do la possibilità accedere via Web dall’esterno , qualunque persona che riesce a rintracciare il mio IP pubblico poi può tranquillamente controllare la scheda senza nessun problema , visto che non è stato nemmeno implementato una password per bloccare l’accesso alla scheda ,
Chissà quanti progetti si potrebbero fare con questa meravigliosa scheda,il primo che mi verrebbe in mente è un controllo luci per la mia casa anche se penso che di progetti se ne potrebbero fare un’infinità 🙂
Io non lo so, ma credo che un minimo di sicurezza sia stata implementata… male che va, se è possibile modificare e aggiungere pagine, uno può scriversela da solo una pagina di accesso e impostare il metodo di autenticazione… Ho visto che il protocollo http implementato prevede l’utilizzo delle informazioni passate tramite GET, sarebbe già qualcosa…
Rispondo al commento riguardante la sicurezza: è possibile proteggere le pagine web usando username e password. Il sito web caricato nella scheda è disponibile e modificabile, all’interno delle pagine web c’è una cartella chiamata PROTECT.
Tutte le pagine web fuori dalla cartella PROTECT sono accessibili a chiunque, mentre le pagine web dentro la cartella PROTECT sono protette da username e password (contenute dentro il firmware della scheda e quindi molto sicure)
Inoltre oltre ad inviare i comandi in GET è possibile inviarli in POST.
Oppure si puo’ disabilitare la parte HTML ed accedere e pilotare la scheda in TELNET
E’ sempre comunque consigliabile mettere un filtro sui MAC ADDRESS del router.
E’ disponibile anche il firmware del microcontrollore e sulla scheda è presente un bootloader per cui è possibile aggiornare il firmware (scritto in C) senza l’uso di un programmatore.
Sono a disposizione per chiarimenti
Saluti
Non sarebbe meglio l’accesso in SSH invece che in telnet essendo questo più vulnerabile?
Se la vincessi saprei come usarla. Sembra un ottimo prodotto. Davvero. Sicuramente saprei come usarla =)
E come sapresti usarla? Che applicazione hai in mente?
caspita, è davvero interessante, sarei curioso di sapere se le pagine possono essere dinamiche tipo in cgi o qualcosa di simile, oppure l’unica pagina dinamica è quella per comandare l’hardware
> Non sarebbe meglio l’accesso in SSH invece che in telnet essendo questo più vulnerabile?
si, peccato pero’ che implementare l’SSH richieda molta memoria sia Flash che RAM e il microcontrollore ha pochissima memoria, teoricamente è possibile usare SSH ma occorre ridurre drasticamente altre funzionalità, come ad esempio la presenza di pagine html, la possibilità di inviare email, il DHCP
cioè le risorse sono limitate, mettendo SSH è necessario togliere qualcosa…
> se le pagine possono essere dinamiche tipo in cgi o qualcosa di simile
si, ma anche in questo caso il problema maggiore è lo spazio, si possono scrivere delle istruzioni in Ajax e i file .cgi funzionano ma solo se molto piccoli.
La somma di tutte le pagine web NON deve superare i 30KByte
Attualmente le uniche implementazioni create sulla scheda sono dei simboli che diventano verdi quando l’utente attiva i relè e poco altro.
Per un cliente avevo realizzato una funzione che trasformava la temperatura letta dalla scheda da C° in F° è solo un esempio ma le funzionalità sono molto limitate. Appoggiandosi graficamente ad un PC o ad un dispositivo con Android o iPhone non ci sono questi problemi di spazio/dimensioni in KByte / prestazioni…
Saluti
Prima di tutto abolire l’obsoleto VisualBasic e passare a HTML-PHP ^_^ (…naturalmente con pregi e difetti di questa scelta).
Bye 😎
Il progetto presentato della scheda relè gestibile via lan o internet tramite il protocollo ethernet è un esempio di classico web server che fonda il suo funzionamento su un microcontrollore di casa Microchip. Dato l’utilizzo del programma MPFS2 generator per la conversione della pagina web (in HTTP1.0) in file .s o .bin da caricare su EEPROM dedicata (non so cosa monta la scheda visto che non è reso pubblico lo schema elettrico) mi pare di aver intuito che lo stack TCP/IP utilizzato sia quello della Microchip. Comunque, spero che non sia un problema se mi cimento in un reverse engineering della scheda a partire dalla foto messa a disposizione…se dovessero esserci problemi, cancellate pure il mio commento.
Per iniziare, mi verrebbe da dire che sia stato utilizzato, per la gestione del livello fisico e di collegamento dello stack protocollare OSI, un ENC28J60 prodotto dalla Microchip con relativo quarzo da 25MHz. Il microcontrollore, a mio avviso, può essere un PIC18F2550 (lo si distingue dal fratello maggiore PIC18F4550 perché quest’ultimo ha 40 pin anzicchè 28…nella foto circuiti integrati a 40 pin non se ne vedono) per il fatto che, alla fine dell’articolo, c’è scritto che esiste una versione alternativa di tale scheda relè gestita però via USB, e utilizzare un micro con USB già implementata nativamente riduce all’osso il porting dell’hardware e della PCB. Ovviamente, come minimo, ci sarà un quarzo a 20MHz per il micro, anche se con uno da 4MHz e abilitando il PLL interno nella sezione di gestione del clock, si riesce a raggiunge comunque una frequenza di 48MHz utile per fare funzionare la USB del PIC in modalità full-speed (penso sempre ad una migrazione quanto più indolore possibile da una scheda gestita via ethernet ad un’altra gestita via USB).
I relè gestibili sono al massimo 8, quindi un ULN2803 può compiere lo sporco lavoro per far commutare tutti i relè all’arrivo del singolo segnale di comando (uno per ogni relè). Sono inoltre visibili i trasformatori di accoppiamento che si interfacciano al connettore ethernet (anche se devo dire che esistono connettori che integrano nel loro package questi trasformatori)…in realtà non si presentato come veri e propri trasformatori, ma sono contenuti in un package PDIP16 subito accanto al connettore.
Per quanto riguarda lo stadio di alimentazione, si osserva la presenza di due alette di dissipazione montate, sicuramente, su altrettanti regolatori lineari di tensione che stabilizzano i 12V per i relè e i 5V per l’alimentazione della logica di controllo. Se non ricordo male l’ENC28J60 prevede un’alimentazione di 3.3V, quindi occorrerebbe un ulteriore regolatore che a partire da 5V restituisce 3.3V…non sono però sicuro di questa mia ultima affermazione…
Per quanto riguarda gli ingressi, come minimo ci sarà un buffer invertente tipo trigger di Schmith per ogni ingresso al fine di reiettare possibili rumori e fluttuazioni sulle linee che portano alla scheda. In realtà, forse il buffer funge più da protezione per il micro che non da trigger, visto che gli ingressi del micro stesso già di loro triggerati. Una versione optoisolata della scheda richiederebbe la presenza di tanti optoisolatori quanti sono gli ingressi.
Quello che ho fatto è stato ipotizzare un modo per realizzare l’hardware di questa scheda PLC…è naturale che senza il firmware comunque non si va da nessuna parte!! 😉
sono andato a ricercare il datasheet del ENC28j60 e confermo che può essere alimentato al massimo con una tensione di alimentazione pari a 3.6V, anche se gli ingressi sono 5V tollerant. Ora, se il progetto è stato realizzato con criterio, mi aspetterei che anche il PIC18F sia alimentato a 3.3V (il PIC18F2550 supporta questo valore come tensione possibile di alimentazione) concludendo che uno dei due regolatori lineari non è da 5V ma da 3.3V.
^ In realtà il Visual Basic è un vero e proprio linguaggio di programmazione chi può essere compilato in modo da produrre exe , indifferente modo PHP è un linguaggio che deve essere interpretato da un altro programma di solito nella fattispecie apache , che può essere legato con una base di dati di tipo MySQL ,
il fatto che Visual Basic in è un linguaggio abbastanza vetusto non lo rende così offsoletto che sembrerebbe , attualmente esistono computer che usano programmi scritti in linguaggio COBOL , che uno dei primi linguaggi di programmazione che è stato sviluppato di alto livello ,
Il fatto che le applicazioni non sono state riscritte è dovuto al fatto che non tutti hanno le risorse economiche per modificare i loro programmi un altro motivo importante che se funzionano perché cambiarli in un linguaggio più moderno come il linguaggio C .
Sarebbe esporsi a rischi che le applicazioni non funzionasse più correttamente e creare una perdita economica all’ azienda
Recentemente mi sono costruito una scheda relè optoisolata pilotata attraverso la porta parellela, il software l’ho fatto in VB ottenendo un discreto effetto grafico, il pilotaggio era di tipo sia fisso sia impulsivo; lavorando nel ferroviario ho a che fare tutti i giorni con schede relè di tutti i tipi, vedendo la scheda in questione si potrebbe pensare di utilizzarla per svecchiare le interfacce con il vecchio hardware di impianto. Solitamente delle linee seriali che arivano da alcuni PLC proprietari pilotano delle schede microrelè bistabili o monostabili che a loro volta pilotano i relè di potenza di impianto che permettono l’azionamento degli organi di piazzale, questa scheda dotata di relè e con interfaccia di tipo rete potrebbe essere utile per il pilotaggio da remoto. Attualmente si usano già delle interfacce che convertono una rs232 in rete così da superare i vincoli dovuti alla max lunghezza delle linee seriali(15/20m per l’RS232 e 1200m per la 485), l’uscita di questo tipo di interfaccia (commercialmente si usano le MOXA NPORT)potrebbe pilotare direttamente la scheda in questione; inoltre la possibilità di avere un’interfaccia grafica è molto utile e si può pensare anche di modificare il software attraverso VB. Le stesse interfcce seriale/rete hanno un’interfaccia grafica che permette all’utente di cambiare alcuni parametri tra cui l’indirizzo ip.
Questa scheda la vedrei in un ambiente molto specifico , e spesso incontro nel mio percorso , per le persone diversamente abili e nello specifico per quelli che soffrono di mobilità ridotta , per noi andare a spegnere una luce dall’altra parte della casa non è un problema ma per una persona che ha mobilità ridotta può diventare subito lungo e fastidioso , questa scheda potrebbe essere integrato attraverso il rele e usando uno schema tipo a due punti nell’impianto elettrico di casa per controllare l’ illuminazione ,
così munendosi di un palmare o di smartphone chi ha la possibilità di connettersi alla rete wifi di casa , La persona può spegnere o accendere le luci senza spostarsi .
E aggiungerei con uno stadio di potenza l’alimentazione del forno elettrico , questo specificamente mi sarebbe utile con mia madre che spesso ha paura di avere dimenticato il forno acceso , così attraverso il suo smartphone può spegnere la corrente del forno senza correre a casa e accorgendosi che il forno ed era spento prima che partisse .
Magnifico premio! Sarebbe utilissimo per il mio progetto di domotica, che più articoli di EOS leggo è più diventa imponente XD
Sicuramente funziona come il web server dei nostri router domestici, dove per accedervi bisogna inserire una password e un nome utente, che inizialmente saranno valori de default, ma che puoi modificare successivamente.
quindi le pagine html contenute sulla scheda sono modificabili a piacimento? ossia posso creare un pagina web personale per il controllo o no?
Il Visual basic non lo definirei obsoleto, dato che è comunque uno dei linguaggi ad alto livello più usato al mondo, dopo il c naturalmente, ma è comunque un linguaggio molto potente con cui si riesce a creare dei software con interfaccia grafica. Non credere comunque che l’HTML o il PHP siano migliori del Basic (provato personalmente), L’HTML è un linguaggio molto basilare, dove non è possibile creare delle interfacce molto dettagliate come le form del Visual Basic, per fare ciò dovresti usare anche il CSS, il Flash per creare dei punti di interazione con l’utente, ecc. Il PHP invece è solo un linguaggio di scripting, che per funzionare dal punto di vista hardware ha bisogno comunque di eseguire di programmi pre-compilati, perchè da solo non è capace di fare proprio nulla, nemmeno creare delle form semplici, serve solo ad elaborare variabili e a comunicare con il sql, per quanto riguarda l’hardware, con un istruzione chiamata exec(), richiama un exe che fa il lavoro al posto suo, ma non è stato lui ad eseguire il lavoro. Nel caso della sche da il php è un tramite e richiama una parte del firmware del microcontrollore, che esegue il comando di attivare-deattivare i relè.
Non ho detto che gli Visual basic è un linguaggio obsoleto , ma un po’ vetusto ,
ma comunque sia io ormai sarà più di 10 anni che uso per programmare e usato tutte le sue versioni successive da quanto iniziato vb4 adesso vb.net dove sono stati introdotti tutto il necessario per essere un linguaggio moderno come l’introduzione della programmazione ad oggetti .
Ad esempio il Visual Basic 6 sono solo dal 2008 che non è più sopportato dalla Microsoft , ma tutti i suoi successori lo sono perfettamente come vb.net 2008 che sto usando attualmente .
scusa Fabrizio87, ma io non rispondevo a te nel tread ma al primo che ha detto (cito contestualmente):
“Prima di tutto abolire l’obsoleto VisualBasic e passare a HTML-PHP ^_^ (…naturalmente con pregi e difetti di questa scelta).
Bye 8-)”
Sono io il colpevole , mi sono accorto solo dopo rileggendo tutto i commenti che non era per me ma per MikiTux la tua riflessione ,
Solo che i commenti col passare del tempo sono diventati chilometrici per fare più punti possibili e ogni tanto e difficile capire chi risponde a chi e nascono gli sbagli ,
io provo sempre a rimanere a intorno di 200 – 300 parole per rimanere sintetico ,
Fabrizio
I metodi implementati sono il GET e il POST (nell’eventualità in cui il messaggio da allacciare all’URL è più lungo di 100byte) e sono ben tollerati dal protocollo di applicazione HTTP1.0. Tra l’altro Microchip propone una serie di webminar sull’uso delle variabili dinamiche (per riportare la lettura di un ingresso sulla pagina web) e dei metodi di input. Sarebbe stato più opportuno, a mio avviso, se fossero stati utilizzati il linguaggio javascript e Ajax per interfacciarsi allo status.xml ed usufruire dell’aggiornamento automatico in background della pagina. Io gli script Ajax non li so usare anche se vorrei imparare per usufruire dell’interettività di gestione che offrono sulle pagine web
ho passato diversi anni della mia vita a programmare per il web, so bene, ho lavorato anche con tecnologia ajax, non a livelli altissimi, ma ho realizzato delle belle cosette…
Non sono sicuro del fatto che hai detto, riguardo ai get più lunghi di 100byte.
Quando, come ti dicevo scrivevo siti internet (in realtà mi sono occupato di più all’aggiunta di funzioni a siti già fatti), ho lavorato molto alla realizzazione di spyder in PHP. Uno spyder è un programma che preleva informazioni da un sito internet in genere, le elabora e le ripresenta nel formato opportuno. La scrittura di uno spyder diciamo che è abbastanza difficoltosa, soprattutto nella fase di riconoscimento dei dati nella pagina in questione. Io lavoravo con le espressioni regolari compatibili con Perl
http://www.pcre.org/
devo dire che sono di una potenza assurda! permettono di fare cose molto molto complesse con una sola stringa (che in realtà può essere molto lunga, ma sempre una stringa è) farcita di simboli e caratteri particolare. L’interprete legge questa stringa e effettua il parsing del testo in esame. Il testo in esame, come dicevo, in genere è fatto da codice HTML, spesso scritto anche abbastanza male, quindi era un compito molto lungo riuscire a scrivere un filtro efficiente e funzionante anche con input che possono essere molto diversi tra di loro. tra le varie problematiche della realizzazione di uno spyder c’era anche la sicurezza. infatti non sarebbe in genere stato difficile fare in modo che lo spyder interpretasse dei codici maliziosi e facesse danni. Tutti questi problemi portavano ad avere sempre meno tempo per le funzioni diciamo di contorno. Una di queste era proprio prelevare la pagina da analizzare dal suo webserver. Qui potevano presentarsi delle coincidenze fortunose. Se infatti il server della pagina da richiedere era equipaggiato con PHP, per una impostazione che fino a un pò di tempo fa era abilitata di default, le variabili passate tramite get e tramite post venivano tutte raggruppate in normali variabili. ad esempio se passo alla pagina il parametro pippo=1 tramite post, nel codice quella variabile è raggiungibile o in $_POST[pippo] o in $pippo direttamente. Per fortuna molti programmatori utilizzavano il secondo modo di richiamare la variabile. Così facendo era indistinguibile se la variabile pippo era stata passata tramite get o tramite post. A quel punto intervengo io: Siccome spesso per ottenere delle pagine particolari bisognava sottomettere delle form che passavano dei parametri tramite post, avevo due scelte: O eseguivo l’istruzione $pagina = file_get_contents( “www.sito.it/pagina.php?pippo=1”); sperando che andasse bene, oppure dovevo aprire un socket con il webserver remoto, inviare la mia richiesta http ben formattata, attendere la ricezione del contenuto e chiudere il socket. Non è estremamente difficile come metodo, l’ho usato anche per realizzare dei client IRC in PHP, ma per quanto riguarda il protocollo http era un lavoro abbastanza delicato, infatti poteva essere necessario impostare tante variabili, non solo quelle di get e post. Per questo motivo ogni qual volta fosse possibile inserivo tutte le variabili che servivano dentro il get, e venivano fuori delle richieste di dimensioni spropositate che però funzionavano bene.
si, in linea di principio è quello il funzionamento, solo che non bisogna aspettarsi chissà quale interfaccia, dato che il router ha un suo processore, una sua ram, fiesystem ecc. questo dispositivo invece gestisce le pagine di configurazione con un solo microcontrollore, e quindi ha delle risorse molto molto limitate. è già tanto che riesce a fare queste cose…
In realtà il codice php non è interpretato da apache, ma da un programma apposito. in giro ce ne sono diversi con capacità di accelerazione particolari ecc. Apache si occupa solo di smistare il traffico in ingresso e uscita verso e dal motore del php. Tant’è vero che è possibile far girare codice php anche su server microsoft iis, e altri.
In ogni caso la soluzione del php non è applicabile a questo caso: infatti non si può far girare un interprete su un pic.
In questo caso probabilmente il vsual basic è stato un linguaggio azzeccato per un’interfaccia. anche se secondo me sarebbe stato meglio il java…
Il C non mi sembra ideale perchè diventa molto lungo e laborioso scrivere un programmino di questo genere e come hai detto anche tu, la scelta del C potrebbe essere antieconomica,
però anche se sono un sostenitore del linguaggio non definirei il C moderno…
hai detto che “L’HTML è un linguaggio molto basilare, dove non è possibile creare delle interfacce molto dettagliate” credimi, se conoscessi l’html sapresti che non ha limiti. il css può essere d’aiuto per fare le cose carine, ma l’html permette di fare interfacce davvero molto complesse, specialmente se gli viene abbinato un pizzico di javascript.
Come ho scritto nel post di sopra, scordati di vedere il php su un microcontrollore
Io non sono assolutamente un programmatore di pagine web e per realizzare le pagine di gesione dei miei weserver (ho lavorato anche su Flyport di OpenPicus) basati sullo stack protocollare TCP/IP ho dovuto seguire le direttive della Microchip fornite tramite tre webinar sulla gesione delle variabili dinamiche, del metodo get e del metodo post…il get, secondo la documentazione rilasciata dalla stessa Microchip, viene utilizzato per inviare richieste i cui argomenti non superano i 100byte, mentre il metodo post loro lo danno come più generale e adatto a tutte le lughezze in byte dell’argomento. Io ho riportato ciò che è possibile apprendere dal seguente link:
http://www.microchip.com/microchip.webcontent.provider/Video.aspx?id=en543625
Concordo con te sulla potenza del linguaggio HTML come supporto per realizzare interfacce complesse…lo sto provando sulla mia pelle proprio in questo periodo che sto cercando di cimentarmi nella stesura del codice per una pagina web da dedicare ad un webserver homemade fatto su PIC
il filtro sui mac address avrebbe poco vantaggio visto che l’indirizzo che vedrebbe la scheda sarebbe sempre il router anche se proviene dall’esterno visto che ho avuto anche il compito di modificare mac address dei pacchetti .
Di sorta professione con filtro mac address si usa nelle reti wifi.
non so che dirti, probabilmente è una limitazione del protocollo http implementato da microchip per ottimizzare il consumo di memoria nei pic… Forse la variabile get è una stringa statica, e dovendo allocarla una volta per tutte hanno scelto di limitarla a 100byte. Può essere anche che lo standard dica proprio che devono essere più corti di 100byte, però con i webserver normali posso assicurare che questo limite non da problemi particolari. Comunque al di là dei limiti dei protocolli il metodo post è consigliabile soprattutto per fare una richiesta ordinata… in get all’utente interessa vedere solo la pagina, salvarla tra i bookmarks ecc. in post possono essere presenti una gran moltitudine di parametri dipendenti dal tipo di pagina che si sta realizzando. Probabilmente si è scelto di separare get e post per evitare che informazioni specifiche, riguardanti la singola visualizzazione della pagina, che possono essere registrazioni, caricamento di file, modifiche di impostazioni ecc.finiscano per essere mantenute in history dal browser, in modo da evitare potenziali errori
si, puoi crearle, ma con limiti abbastanza stringenti. La dimensione massima delle pagine personali deve essere minore di 30kb (molto poco) Se vuoi avere le tue pagine visibili da fuori casa ti conviene allestire un webserver su un computer normale, tanto è facile. Poi volendo puoi usare le pagine che stanno sul computer per poter comandare la centralina dei relè
questa è una giusta osservazione, ma magari, se il router contiene qualche specie di firewall, forse potrebbe essere possibile fare in modo che vengano inoltrate le connessioni aperte sulla porta 80 (quella standard per l’http) solo se il mac address di chi effettua una connessione è presente in un’elenco. Non sono sicuro che con i router domestici si possa fare, ma potrebbe essere un’idea.
Un’altra soluzione per comandare il sistema da remoto potrebbe essere quella di impedire l’accesso dal web alla centralina direttamente, ed allestire un computer con un webserver dedicato. Ci sarebbero molti vantaggi: 1 può essere che ci si possono caricare quante pagine si vogliono, senza sottostare ai limiti del pic. 2 possono essere ( e molto probabilmente devono essere) usati linguaggi come php o altri. a questo punto si può fare in modo che la richiesta di apertura o di chiusura di un relè avvenga tramite il server di casa. in questo modo nessuno avrebbe accesso direttamente al server del pic
Sei stato sufficientemente chiaro ed esaustivo…infatti prima che tu mi esponessi tutta questa teoria, non mi ero assolutamente chiesto il perchè del differenziare i due metodi…in effetti, riflettendo su ciò che hai detto, molto probabilmente gli argomenti inviati con il metodo get sono allocati staticamente all’interno della memoria programma (nella rom per intenderci) e molto probabilmente la strategia di limitare la lunghezza dell’argomento a soli 100byte è mirata ad ottimizzare l’utilizzo di memoria e il protocollo http definito da Microchip. Io pensavo che fosse una limitazione intrinseca del protocollo http in generale, e invece è una restrizione imposta da Microchip. Grazie per la risposta
Ottima scheda mi ha piacevolmente copito il fatto che può essere controllate direttamente con delle richieste http (con linunx e wget potrei farmi quella famosa sala da ballo che sogno da anni con tanto di mirror ball 😉 L’ultima che ho provato aveve una terrificante interfaccia web e le richieste sullo stato dei contatti andavano fatte con una complessità impressionante tanto da dover riscrivere in php. Grazie EOS.
Oddio, avrei da ridire qualcosa riguardo al tuo commento. Non è detto che il fatto di essere implementato con un solo microcontrollore rende il web server che ci gira sopra di scarsa qualità. Tieni conto che router e switch oltre a gestire una o più pagine web di configurazione, fanno anche dell’altro (come gestire gli stack protocollari e soprattutto fare questa operazione non su una porta ma su più porte di ingresso / uscita hardware) ed è proprio quel qualcosa in più che rende necessario l’adozione di un processore, memoria ram, ecc… Io ho avuto modo di poter lavorare con web server costruiti attorno a microcontrollori della Microchip e ti devo dire che, non per mano mia ma di chi ha un bagaglio culturale sulla programmazione di pagine web sicuramente migliore del mio, sono state realizzate dell’interfacce web per il server dinamiche, veloci e totalmente funzionali. Se provi a scrivere su google “TCPmaker” trovi il link ad una software house affiliata con Microchip che produce un software per il disegno immediato di pagine web utilizzanti Javascript e comandi Ajax, il tutto per la gestione di strumenti virtuali come analog gauge, grafici dinamici che si basano su archivi XML, barre a riempimento, bottoni con un determinato stile ecc… Quindi ti esce fuori un pannello di controllo con i contro cavoli, dinamico al massimo, che alla prima vista dici “ma come fa tutto questo ambaradan di roba a stare su un microcontrollore così scarso di risorse??” e invece ci sta e il trucco c’è pure. Infatti, le pagine web che si vanno a creare, prima di essere ficcate nella memoria del micro, vengono compresse e trasformate in file .s da un software che la Microchip mette a disposizione con tutto lo stack TCP/IP (si chiama MPFS2… il 2 sta per il numero di versione di HTTP2). Il file .s generato viene successivamente inserito nel progetto in MPLAB e interfacciato al resto dei sorgenti attraverso funzioni apposite che gestiscono le variabili dinamiche e i metodi get e post. Nel caso in cui la pagina web dovesse essere eccessivamente ricca di contenuti al punto di non essere contenuta nel quantitativo di memoria ROM dedicata del micro, allora c’ è la possibilità di integrare il web server con una memoria EEPROM esterna (interfacciata via I2C) su cui caricare tutto ciò che vuoi!! Ancora non ti basta lo spazio di memoria? All’estremo, ho visto che qualcuno si è inventato un sistema per caricare la pagina web su una memoria SD, ma i sorgenti belli e pronti messi a disposizione dalla Microchip con il framework ufficiale non prevedono questa opzione, quindi sarebbe necessario apportare le giuste modifiche alla varie routine di gestione del server (ho letto un articolo tempo fa su cui spiegavano come fare questa cosa della memoria SD, ma non mi ci sono mai messo a testare). Tutto questo per dirti che una pagina web non necessita di un grosso processore sul webserver per poter essere avviata e gestita, perché in realtà è compilata dal browser che la esegue. Se anche la memoria potrebbe sembrare essere un problema, in realtà ti ho dimostrato che non lo è assolutamente.