webserver+ android

Salve a tutti, dopo aver ripreso il mio progetto con arduino, chiedo consigli su come procedere per creare una interfaccia per il mio sistema domotico.
Stavo valutando App inventor, dato che non sono pratico di programmazione..... Attualmente il sistema lavora su lan, riesco a controllare le uscite con una semplice pagina html caricata in arduino visibile da browser. Adesso, se fosse possibile,vorrei creare una pagina web con due pulsanti: se utilizzassi app inventor, potrò caricare la pagina creata su arduino come webserver? Mi piacerebbe arrivare a qualcosa di simile Arduino Web Lights Control - YouTube ....Grazie , fabio.

uppo nella speranza di qualche anima pia......

Ciao,
non capisco la domanda, dici che attualmente il sistema lavora su lan, ma direttamente con arduino e ethernet shield o con webserver su pc e arduino collegato tramite seriale?

Dal titolo mi sembra di capire che chiede un app android, su questo io non so attualmente aiutarti, forse in futuro

Scusate ma non mi sono spiegato bene.....
attualmente lavoro con una semplice pagina web su arduino che mi permette tramite browser di accendere e spegnere un led(arduino+ ethernet shield):
come posso fare per rendere la pagina più carina? Con eclipse, posso fare la stessa cosa che faccio con html cioè caricare la pagina su arduino? grazie Fabio.

fafidio:
...
come posso fare per rendere la pagina più carina? Con eclipse, posso fare la stessa cosa che faccio con html cioè caricare la pagina su arduino? grazie Fabio.

Nei limiti della memoria di Arduino ... la pagina HTML la puoi fare complessa quanto ti pare ... non vedo il problema ... te la disegni con un qualsiasi editor HTML e poi trasferisci il codice su Arduino ... ripeto, nei limiti della memoria ... :slight_smile:

Guglielmo

No, con eclipse e android sdk puoi fare una app da caricare sul telefono, poi ti devi fare uno schetch su Arduino per ricevere i comadi della app tramite tcp.
Se l'interfaccia è semplice sconsiglio la creazione di una app, se funziona bene la paginetta html è meglio perchè è multipiattaforma, funziona su pc, android ios e quantaltro, la app per android fatta con eclipse funziona solo sui device android.

Edit: @Guglielmo
Se la pagina si mette su una SD i limiti della memoria di arduino si eliminano, poi rimangono i limiti della piattaforma, se si fa una pagina html da un mega trasferirla dalla sd al client tramite Arduino e shield ethernet diventa problematico...
Proprio per vedere le differenze ho realizzato il wjsonduino in due versioni una su SD e l'altra tutta in memoria, che sono identiche anche nel html.
Ho anche fatto una pagina con un immagine svg che viene modificata tramite le letture delle porte analogiche dell'Arduino e ho dovuto per forza usare la SD, in memoria non c'è stata.

bigjohnson:
...
@Guglielmo
Se la pagina si mette su una SD i limiti della memoria di arduino si eliminano.
...

Interessante ...

Non mi è capitato di usare le SD con Arduino quindi non so bene come sono gestite ... da quanto mi dici posso leggere da SD e trasferire su rete delle info SENZA passare per la RAM ? Ovvero, se ben capisco, NON è necessario leggere qualche cosa (... quindi trasferiro in RAM) e poi trasmetterlo, ma si può fare direttamente ... mi confermi ?

Grazie mille,

Guglielmo

Edit : ... oppure ... lavori a blocchi ? Ovvero leggi un pezzo da SD in RAM, trasmetti il pezzo, leggi il successivo, e così via ? :slight_smile:

Il massimo sarebbe far risiedere la pagina su sd e far leggere i dati che variano, per es. led acceso o spento, ad arduino .
Quindi se sulla sd carico una immagine, quando apro da browser mi rimanderà alla sd per ciò che concerne la parte grafica e arduino mi dirà se il led è acceso o spento.....se tutto ciò si può fare ed è accessibile oltre che da pc anche da android il progetto potrà avere un seguito...ed arduino sarà davvero grande oltre naturalmente a tutto il forum!!!! .
Non so se il video che ho postato in apertura è composto da arduino come webserver e quindi accessibile da browser, oppure è stata creata un'applicazione android che comunica via bt. Passo la palla a chi ne sa più di me......

Il wjsonduino (vedete lnk in firma) versione sd fa proprio quello, tramite la libreria tinywebserver, per ora ho fatto solo una versione per leggere lo stato delle porte, ma penso di farne anche una che può cambiare lo stato delle uscite.

Grazie del suggerimento, avevo già dato uno sguardo al tuo notevole lavoro ma sarebe sprecato per il mio semplice web server: l'aggiornamento occuperebbe troppa banda su una rete in cui vado anche sul web, perciò avevo optato per una pagina "passiva", accessibile da explorer e che aggiornasse i dati "a comando". Anche perchè non ho molte uscite da controllare... al massimo tre.
Ma conosci il sorgente del codice del video postato? Dove posso reperirlo? Grazie Fabio.

Ciao Fafidio anche io vado alla ricerca disperata del sorgente di quel video...è una bella interfaccia sicuramente sviluppata su scheda SD con il Jquerymobile...
Purtroppo non si riesce ancora a trovare una bella guida fatta bene per quanto riguarda l'interfacciamento tra Sketch Arduino e pagina html su SD...io stò cercando di farfugliare qualcosa ma il tempo è tiranno e ho un puffetto maschio di appena 4 giorni in casa e non è facile...
Vediamo di darci una mano a vicenda...

Avevo già aperto un topic con argomenti simili...e una pagina in jquery semplice semplice per comandare 2 relè dal web...
http://forum.arduino.cc/index.php?topic=168708.0
Ciao...

Quelle pagine che vedi sul video di youtube non sono assolutamente complicate da fare e usa il jquerymobile, ci vuole un po' di tempo per crearle ma i dati che in via e riceve da arduino sono 4 in croce.
Può essere in parte vero che l'uso della SD non da limiti alla memoria, ma dimentichi i tempi, fare una pagina elegante su sd si può fare certamente, se hai voglia di aspettare ogni volta il caricamento, ci sono comunque dei pro e contro:

Contro

  • caricare 4 immagini da 100k + jquery(60k) + file html(40k) + file js(20k) + file css(3k), ci vogliono dai 30 ai 40 secondi il passaggio da una pag all'altra è snervante
  • durante il caricamento di qualunque file da SD gli eventi input che possono esserci il quel lasso di tempo verranno perduti.
  • non si può in questi casi collegare un pulsante della luce direttamente ad arduino per poi controllarne una lampada, se qualcuno sta caricando la pagina o smanetta sull'html la luce non si accende, io suggerisco sempre che arduino deve essere un controllore e non un gestore degli eventi, collegandolo in parallelo all'impianto esistente e funzionante indipendentemente da arduino.

Pro

  • Se non ha importanza perdere degli eventi va benissimo
  • il sistema è indipendente e non necessita di computer o server esterni è piccolo e può essere messo ovunque

Ottimizzare un po' sarebbe quello di impostare tutti gli input possibili come interrupt, l'evento input bloccherebbe temporaneamente il download delle pagine e file annessi, ma i pin con interrupt purtroppo sono pochi.

@pablos
Ciao pablos, come al solito molto esaustivo e professionale! Ti ringrazio delle varie soluzioni prospettate: dovendo accendere la caldaia, o verificare se è inserito l'antifurto da web (nel mio caso intranet visto che si tratta del garage sotto casa) non penso ci siano problemi di sucessione di comandi e quindi perdita di dati.....
Inoltre il semplice sistema in html funziona benissimo.....e anche con la eth shield non si inchioda!! Era solo per avere una interfaccia un po più carina...
Non ho intenzione di caricare immagini.....a meno che jquery mobile non "vede" il pulsante come una immagine pesantissima. Se, con jquery riesco a creare una paginetta simile a quella del video postato, arduino mi darà quei ritardi menzionati?
Il codice jquery si può inserire nel codice di arduino oppure si deve necessariamente salvare come index nella SD? Grazie in anticipo.
@pietro78
Bella pagina, spero di crearne anche io una simile, è a quello che vorrei arrivare...senza far perdere le performance al mio arduino uno. Vedo che siamo fermi sugli stessi problemi, speriamo in un aiuto dei geni..... :grin: :grin:

Non ho intenzione di caricare immagini.....a meno che jquery mobile non "vede" il pulsante come una immagine pesantissima. Se, con jquery riesco a creare una paginetta simile a quella del video postato, arduino mi darà quei ritardi menzionati?

No, non sono pesantissimi, qualsiasi pagina, parti js o css inclusi possono essere implementati nello sketch usando il classico client.print, pèrò ce ne stanno pochi dipende dalle dimensioni, puoi orientarti verso un arduino 2560 che ti da 256k o una memoria aggiuntiva i2c, oppure usare un arduino DUE dovrebbe ridurre i tempi di 10-15 volte (su questo non ho dati certi) passando da un clock 16mhz a un 80mhz da 8bit a 32bit

ciao

A vedere dal video i tempi di risposta non sono tanto lunghi...anzi...il fatto è che per caricare una pagina web sulla SD non ci vuole tanto ...il brutto stà proprio nel scrivere le parti js o css sul file sketch di Arduino...speriamo che qualcuno ci impari...

siamo in attesa dei professori!!! :grin: :smiley:

Ciao,se ti interessa con app inventor puoi creare i 2 pulsanti,puoi caricargli un logo immagine e puoi aprire un link http tramite la pressione del pulsante. Basta che quando costruisci il pulsante imposti che alla pressione del tasto, si dovrà aprire la tua pagina server tipo: 192.168.1.2:81/?L=0. E il secondo pulsante avrà il comando 192.168.1.2:81/?L=1. Di conseguenza avrai tasto 2 accende il led, tasto 1 spegne il led. In più volendo puoi aggiungere un terzo pulsante per il riconoscimento vocale e accendere e spegnere con comandi vocali. Io ho realizzato un Web server con ethernet Shield dalla quale posso accedere anche da remoto con comandi vocali tramite l'applicazione creata con app inventor. Basta modificare il tuo indirizzo IP locale con un ip statico registrato su dyndns. Se vuoi altre informazioni chiedi pure.
Un caro saluto a tutti
Enzo