Wjsonduino webserver + json + Ajax

Ciao a tutti,
ho realizzato uno sketch tramite il quale si può visualizzare lo stato delle porte di arduino in un browser web.
L'aggiornamento avviene ogni 500ms tramite una funzione Ajax che restituisce dati in formato json.
Se il server Arduino non risponde entro 1500ms appare un messaggio d'errore.
Potete scaricare il codice tramite questo link Wjsonduino.
Buon divertimento!

Alberto

Bello, bello, occhio in basso a sinistra cè un errorino D'ont ? -> Don't :slight_smile:

Eviterei di segnalare lo stato delle entrate digitali come on-off. Dipende se usi un pulsante con una resistenza pullup/pulldown e il significato cambia.
Ciao Uwe

@ratto93
Ho corretto, adesso forse passa il jeopardy test!

@uwefed
Ho sostituito ON/OFF con HIGH/LOW che corrispondono alle keyword arduiniane.

Grazie a tutti.

Alberto

Se volete fare una prova cliccate qui!

Edit: mi servivano l'Arduino e la scheda ethernet e ho sospeso la demo.

Guarda che hai il pin 8 in LOW.... non e' normale.

Perchè non è normale?
C'è un filo tra la massa e il pin 8 e il pin è LOW.
Non sarebbe normale se fosse HIGH.
Ciao.

Alberto

Edit: effettivamente però hai ragione, nella foto che ho messo sul sito il filo è sul pin 7, domani correggo!

Scusami ma vedo un conto alla rovescia in alto in millisecondi però a me pare che passino più di 5 secondi da quando parte a quando arriva a 0.

Non è un conto alla rovescia ma il tempo passato dall'ultimo aggiornamento della pagina.
Il periodo di aggiornamento è 500 milli secondi = 0,5 secondi se si superano 1,5 secondi la pagina segnala la disconnessione di Arduino.

ciao, posso chiederti come raggiungi l'arduino tramite web? ip statico? e puoi raggiungerlo dalla stessa lan?

L'arduino ha un ip privato, ed è raggiungibile all'interno della rerte con quell'indirizzo, poi ho configurato il firewall per nattare tutto il traffico che va verso la porta 8081 del suo ip statico pubblico sulla porta 80 dell'arduino.

Bel progetto, bella l'idea di ajax. L'ho rifatto aggiungendo la possibilita di modificare lo stato dei digitali e con un layout adatto anche a cellulari. Non vedo l'ora di avere una casa mia per collegarci le luci delle stanze!! :wink:

arduino_mobile.gif

Ho là!
Non è che magari posti il codice così possiamo provarlo anche noi?
Grazie.

Alberto

devo ancora implementare la restituzione della pagina web da SDcard, per ora l'ho provata residente in locale, per provarla con lo smartphone ho abilitato IIS. Nel frattempo vi allego il file html e lo sketch.

arduino_mobile.html (8.1 KB)

Web_Json_Html.ino (3.76 KB)

bigjohnson:
L'arduino ha un ip privato, ed è raggiungibile all'interno della rerte con quell'indirizzo, poi ho configurato il firewall per nattare tutto il traffico che va verso la porta 8081 del suo ip statico pubblico sulla porta 80 dell'arduino.

quindi hai a casa un indirizzo ip statico? o usi quei servizi che simulano un ip statico?

amacbr:
devo ancora implementare la restituzione della pagina web da SDcard, per ora l'ho provata residente in locale, per provarla con lo smartphone ho abilitato IIS. Nel frattempo vi allego il file html e lo sketch.

Sono riuscito a caricare il codice su un'Arduino Uno e IDE v1.0. Ho notato che il cambio dello stato dei pin digitali non funziona sempre oppure è molto lento. A che cosa possa essere dovuto?

ho fatto caso anche io che se si premono rapidamente piu pulsanti, o piu volte lo stesso, l'aggiornamento rallenta, quello che ho notato e' che non perde mai un aggiornamento, arriva in ritardo ma e' sempre arrivato. Penso che sia un problema di come ho strutturato la chiamata ajax, e forse si risolve togliendo la chiamata alla funzione loadXMLDoc(url_with_get_data) che non e' soggetta al setInterval, quando si preme il pulsante Switch e il SetInterval e' gia attivo questa chiamata viene lanciata ugualmente, e puo darsi che due chiamate con la stessa funzione creino il problema. Purtroppo non ho possibilita di provare adesso.

@andrea86
Il Wjsonduino non l'ho messo a casa ma nella mia webcave che è collegata ad internet con un indirizzo tcp statico fornito dal provider, se vuoi farlo da casa, o con un indirizzo non statico, puoi usare un servizio di dns dinamico tipo Freedns che aggiorna il dominio quando l'indirizzo cambia.

scusate per il necroing di un 3ad cosi' vecchio,ma anche a voi da problemi entrare nel sito di panu?
qualcuno sarebbe cosi gentile da postare\hostare i files per wjsonduino?sono riuscito stamattina ad accedere ad ardupower,ma quello di cui necessito sarebbe questo.
Alternativamente avevo caricato lo sketch di presente a meta della prima pagina di questo 3ad(quello di amaccbr)ma evidentemente ho qualche problema perche non mi fa lo switch della scheda relays da pagina html (da mobile non so neanche come aprirla,l'html non me lo fa aprire con un browser e in piu non so a cosa si riferisca quando dice "ho abilitato IIS da smartphone per vederlo.")
Ho letto cos'e' IIS,capito un po dove andare ad agire sullo smartphone (smanetto da tempo su android,e ho medie capacita)ovvero nel file dove risiedono tutte le info e settaggi per gli host (system\etc\hosts)ma quello che non capisco e' che modifica apportare.
Per modificare il file,piu che altro solo per comodita, uso questo https://play.google.com/store/apps/details?id=com.treb.hosts&feature=search_result&rdid=com.treb.hosts&rdot=1

Purtroppo al sito di Panu è senza corrente, questa sera volevo passare e riarmare il differenziale, ma purtroppo anche se ero vicino alla webcave non sono passato, per domani verso mezzogiorno penso di ripristinare il webserver.
Pazientate.

Alberto