Web server con Jquery 2 uscite e una temperatura

Sono diverse settimane che stò cercando di realizzare un progetto per attivare n.2 uscite da remoto con Un Arduino1 e scheda ethernet ufficiale e insieme a questo la visualizzazione di n.1 temperatura il tutto chiaramente dal WEB con qualsiasi apparato( pc,smartphone,etc,etc)...

Ora di esempi ne ho provati diversi ma purtroppo la necessità principale è quella che in tempo reale dovrei comandare i due Relè e vedere lo stato in real time insieme alla temperatura...

Ora per fare ciò sono consapevole del fatto che con l'html semplice non è possibile farlo e devo ricorrere all'Ajax oppure altro...
L'interfaccia vorrei che fosse semplice e in allegato c'è un esempio ma non riesco ad arrivare alla fine del progetto...

Ho provato il Jquery ma è molto complicato per me...qualche consiglio ??
Chiaramente per l'uso che ne devo fare vorrei evitare l'uso di scheda SD esterna in quanto lo sketch non dovrebbe essere enorme...

Grazie e appena posso posto qualche esempio da me provato...

ardudome_interface.png

Quello che hai descitto non ce la fai a farlo senza SD, nemmeno con la mega, forse con la Due si.
Se ti accontenti puoi fare una paginetta contunuta nello sketch con l'utily pgmspace e fare un autoaggiornamento ogni tot
Il tempo reale come lo intendi tu comunque non è inferiore ai 400ms.

se posti qualcosa di quello che hai fatto e cosa vuoi fare magari si può valutare la via migliore.

ciao

Quello che hai descitto non ce la fai a farlo senza SD, nemmeno con la mega, forse con la Due si.
Se ti accontenti puoi fare una paginetta contunuta nello sketch con l'utily pgmspace e fare un autoaggiornamento ogni tot
Il tempo reale come lo intendi tu comunque non è inferiore ai 400ms.

se posti qualcosa di quello che hai fatto e cosa vuoi fare magari si può valutare la via migliore.

Caro Pablos temo che hai perfettamente ragione...

Infatti la mia bozza di sketch è chiaramente molto lontana dall'esempio citato nel primo post...
Praticamente sono partito da questo esempio Arduino Webserver Input and Output e ho modificato il tutto fino ad arrivare a questa schermata.

In pratica ho la possibilità di leggere in tempo reale n.2 temperature,posso comandare n.4 relè attuatori e leggo lo stato delle uscite in maniera diretta in quanto gli scambi C-NA dei relè sono collegati sui pin d'ingresso dell'Arduino stesso...ragion per cui ho un riscontro reale al 100% della commutazione...

Ora un problema che ho affrontato è che gli script Ajax fanno a cazzotti con il browser Explorer e anche con qualche smartphone Android e perciò volevo affinare il tutto con una grafica un pò più carina ma quello è il minore dei mali l'importante è che funziona tutto ...
Poi mi rimane difficile modificare quella pagina d'esempio...magari con un'aiutino e qualche spiegazione da parte di qualcuno che mastica l'Ajax sarebbe ben accetto...

Allego in fondo lo Sketch da me modificato e il file Html per la scheda Sd ...grazie e attendo risposte...

sketch_may06a_webserverCLIMA.ino (9.04 KB)

index.htm (5.59 KB)

In aggiunta al post volevo chiedere se invece di usare gli script Ajax,json..etc..etc è possibile almeno a livello teorico per riuscire a visualizzare su pagina html con semplici metodi GET e POST lo stato di n.2 PIN con la funzione EEprom ???

Mi spiego meglio...Nel momento in cui mi connetto ad un Webserver Arduino con n.2 uscite e n.2 Ingressi per visualizzare il Vero stato dei pin e modificarlo senza poi perdere la sincronizzazione è possibile salvare ad ogni commutazione lo stato dei pin su EEprom o ancora meglio su scheda SD ???

In pratica siccome ho notato che gli script sono piuttosto "spigolosi" perchè non usare qualche altro metodo alternativo??

Chiaramente per fare ciò non saprei da dove iniziare ma una mano aiuta l'altra...grazie...
Capisco anche che la EEprom ha un uso limitato ma calcolando una decina di commutazioni alla settimana la durata dovrebbe almeno di 20 anni...aspetto qualche prezioso consiglio...buona giornata...

guarda questo project se ti può servire Wjsonduino

guarda questo project se ti può servire Wjsonduino

Caro Pablos quel link l'avevo già visto e rivisto e purtroppo non riesce a soddisfare le mie richieste...io vorrei un metodo semplice per settare un pin come output in HIGH da pagina web ( anche scarna) con un semplice metodo get ma poi avere in tempo reale e in maniera ineccepibile la lettura del vero stato pin OUTPUT in HIGH ...

Mi spiego meglio :

PIN 2 configurato come OUTPUT ---- collegato ad un relè doppio scambio
PIN 3 configurato come INPUT ---- collegato ad uno scambio del relè C-NA
statoPIN3 ---- variabile che contiene lo stato del pin 3

Ora se da WEB riesco ad impartire il comando con una semplice :

if(readString.indexOf("L=1") > 0)
{
digitalWrite(outPin, HIGH);
}// accendo il relè

---a quel punto il relè si eccita e con uno scambio accendo una lampadina(esempio) e con l'altro vado a mettere in HIGH lo statoPIN 3 il quale in maniera univoca mi dice che senza dubbio il relè ha commutato...

Ora per leggere dal web lo stato reale dello statoPIN3 come faccio in semplice http ???
Aggiornando la pagina con un meta-refresh ogni 5 secondi il sistema non è affidabile...che consigli mi potete dare ??

Grazie e spero di essere stato più chiaro...e non è semplice...

I lavori seppur pian pianino proseguono...

Sono riuscito a ottenere uno sketch con un singolo pin di Ingresso e le funzioni Ajax ...con questo Pin3 quando lo stato è basso la lampadina è spenta,quando invece lo stato è HIGH la lampadina è accesa...
Funziona perfettamente e in maniera semplice e soprattutto in real-time...a questo punto mi mancherebbe di poter monitorare un'altro pin Analogico per una temperatura in tempo reale( e questo penso di riuscire a farlo) e un altro pin configurato come OUTPUT che piloti un relè in maniera Passo-Passo attraverso un BUTTON sull'interfaccia grafica e qui mi blocco perchè vorrei evitare i metodi GET e continuare ad usare Ajax che fino a quanto dovrò usare 3 pin riesco a lavorare senza scheda SD e librerie esterne complesse( le varie Webduino,TinyWebserver ...etc) mantenendo la memoria dell'Arduino1 libera e fluida...
Un'aiutino per favore??? :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: ...allego l'immagine dello sketch ...come implementare nello sketch una figura carina che mi rappresenti un bottone per attivare un pin in maniera passo-passo ???
Ciao e grazie...

Ajax_statopin.ino (7.05 KB)

Allego sketch di Arduino 1 con scheda ethernet e con n2 pin configurati come uscite OUTPUT e n.2 Pin come ingressi INPUT...

Il codice è molto semplice...con metodi GET html riesco a pilotare le due uscite e rappresentare lo stato di esse con gli altri 2 pin Input in maniera tale da avere lo statopin reale...
PROBLEMA:il codice che ha una parte di Jquerymobile che non conosco ma ho trovato e ho preso spunto da questo topic Arduino e JqueryMobile - Software - Arduino Forum ha dei problemi di "incostanza...ovvero il sistema risponde su 10 volte OK e poi si pianta...poi delle volte funziona benino e altre alla prima interrogazione da pagina web non risponde...cosa potrebbe essere ???

C'è un modo per allegerire il codice e renderlo più fluido ??? perchè a volte ho risposta "error loading page" ???
Ho anche provato lo stesso codice su Arduino Mega ma ho lo stesso risultato...

Sarei molto grato a chi volesse aiutarmi...un buon lavoro a tutti...

sketch_may21a.ino (9.33 KB)

Dunque, nel wjsonduino non ho usato librerie javascript esterne per due motivi:

  • Ridurre i dati da scaricare tramite Arduino, e poter fare una versione che entrasse nel solo Arduino, senza bisogno di usare la SD o appoggiare la libreria su un webserver esterno.
  • Non ho mai avuto voglia di studiarmi le librerie javascript tipo jquery.

ma ho preferito scrivere direttamente del semplice codice ajax nell'html.
Come webserver ho usato il tiny, che ha dei problemi, e ogni tanto si blocca, non ho capito se per problemi interni o per attacchi malevoli.
L'unico consiglio che ti do è, se lo sai fare, non usare librerie esterne, leggiti come funziona XMLHttpRequest e leggi il codice del wjsonduino.
Per modificare il wjsonduino in modo che possa anche modificare le porte e non solo leggerle non ci vuole molto, penso che lo farò al più presto.
Visto che ci siamo faccio anche una domanda, ma qual'è il miglior webserver per arduino, con lettura della pagina da anche da SD?
Ho letto che il tiny ha diversi problemi, e ho anche proposto una patch per dei blocchi.
Ho letto pure che qualcuno ha praticamente riscritto il tinywebserver per renderlo più stabile, ma ha anche rilasciato il codice da qualche parte?

Alberto

Come webserver ho usato il tiny, che ha dei problemi, e ogni tanto si blocca, non ho capito se per problemi interni o per attacchi malevoli.

Il blocco lo hai con la tiny come lo hai con qualsiasi sketch webserver persino quello elementare che si trova nell'ide
io ho il tinywebserver installato da un anno circa e non ho mai avuto problemi, in effetti all'inizio ci sono stati, ma la questione è sempre stata quella del w5100, SPI compreso il setup corretto dei pin eth e SD

Ho letto che il tiny ha diversi problemi

Non mi è capitata questa fortuna :), cosa hai letto a riguardo?
Anzi l'ho modificata aggiungendo le autenticazioni MD5 e Base64, riconoscimento del client, riconoscimento dell'user connesso e SO usato dal client (android, unix...) al fine di reindirizzare il tipo di risoluzione, pagine differenti e pagine autorizzate a essere lette e/o modificate

Ridurre i dati da scaricare tramite Arduino

In effetti hai ragione, questo è un grosso limite, non si possono fare pagine complesse

ciao

Non mi è capitata questa fortuna , cosa hai letto a riguardo?
Anzi l'ho modificata aggiungendo le autenticazioni MD5 e Base64, riconoscimento del client, riconoscimento dell'user connesso e SO usato dal client (android, unix...) al fine di reindirizzare il tipo di risoluzione, pagine differenti e pagine autorizzate a essere lette e/o modificate

Ciao Pablos...io sinceramente non mi sono voluto ancora avventurare sulla Tiny web server ma dalle tue esperienze ora inizio a provarla...ma tu cosa mi consigli di usare comunque la SD oppure per la Tiny è fondamentale ?

Mi potresti indirizzare su un link con un esempio di web server carino con questa libreria Tiny che possa comandare 2 uscite e leggere una temperatura ??
Poi chiaramente per quanto riguarda la "bellezza" della pagina quella è un'altra cosa ma l'importante che possa funzionare in maniera stabile...Grazie e buona giornata...