Pages: [1] 2 3 4   Go Down
Author Topic: Invio comandi da Altervista verso Arduino  (Read 4044 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Intanto un saluto a tutti in quanto sono nuovo! smiley-wink
ho letto molti topic e grazie a questo forum son venuto a capo di molti problemi.

Ora scrivo in quanto mi son bloccato nel progetto che sto facendo  smiley-roll

1.Ho realizzato uno sketch in cui risiede del codice html (una semplice tabella) che, una volta fatto l'accesso da browser all'ip dell'ethernet shield dell'Arduino, mi permette di abilitare o meno alcune uscite (Led, relè..). Fin qui non ho avuto problemi, ed ho implementato il progetto anche per il controllo remoto.

2.Nel frattempo ho realizzato alcune pagine in html e php con una migliore interfaccia grafica (css) e maggiori comandi disponibili. Volevo salvare queste pagine sull' SD dell'ethernet shield (implementando un web server) ma non ho capito molto come posso farlo seppur leggendo diversi topic al riguardo.
Ho deciso quindi di spostare il tutto (quindi il sito) su Altervista. Ora il problema stà nell'inviare i comandi per pilotare le uscite ad Arduino.

Per la parte 1. (quella che mi è riuscita) mi sono servito di questo if per riconoscere il comando:
 
Code:
if(msg.indexOf("c1")>0)
                  {
                       digitalWrite(5, HIGH);
                  }
else if(msg.indexOf("c2")>0)
                  {
                       digitalWrite(5, LOW);
                  }

In cui "c1" e "c2" vengono riconosciuti dopo questa parte html (inserita nello sketch):

Code:

"<tr>"
         "<th><em><strong>Led</strong></em></th>"
         "<td><a href=”192.168.1.161:333/c1”> Accendi </a></td>"
         "<td><a href=”192.168.1.161:333/c2”> Spegni </a></td>"
"</tr>"


Ora mi servirebbe un aiuto per capire come inviare gli stessi comandi ("c1" e "c2") ad Arduino sfruttando però le pagine risiedenti su Altervista.

Ringrazio in anticipo tutti quelli che vorranno aiutarmi!  smiley
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per quanto riguarda il primo tentativo, non puoi fare girare una pagina in php su arduino perchè php è un linguaggio interpretato dal server (in questo caso arduino) che pertanto dovrebbe avere un interprete php. In teoria, per poche e semplici funzioni di php potresti scriverti un tuo proprio interprete (o meglio un parser), ma non credo che sia la strada più semplice.
Quindi se il sito dev'essere ospitato su arduino ti consiglio vivamente di usare javascript (che invece è interpretato dal browser) servendoti eventualmente di ajax e jquery.

Per quanto riguarda invece la seconda soluzione, tu attraverso i pulsanti di questa tabella (che adesso si trova su altervista) vuoi controllare arduino?
« Last Edit: April 05, 2012, 07:57:32 pm by supergiox » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao e grazie della risposta.

La tua frase:
"Per quanto riguarda invece la seconda soluzione, tu attraverso i pulsanti di questa tabella (che adesso si trova su altervista) vuoi controllare arduino?"
è proprio il problema che vorrei risolvere.

Grazie
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Probabilmente è la via più lunga, però se per qualche motivo la preferisci ok!
Io lo farei tramite jquery, ajax e php. Praticamente tramite jquery potresti caricare dei dati (o dei frammenti html) presenti su un'altra pagina tramite una chiamata ajax (se non l'hai mai fatto non preoccuparti, è facile!).
Il problema è che con questo metodo puoi solo fare richieste da una pagina ad un altra presente sullo stesso server, cioè sul server Altervista.
Per ovviare a questo problema si può passare attraverso php!
Cioè la richiesta ajax viene fatta ad una pagina php (sempre sul tuo sito Altervista) e quest'ultima carica i dati dal web server di arduino.
Ti può tornare utile questo.

Ora c'è un altro problema: la pagina php deve richiedere i dati ad un certo indirizzo ip, cioè quello di arduino, o meglio l'ip pubblico del router a cui è collegato.
Questo significa che dovrai inoltrare le richieste sulla porta 80 verso l'ip locale di arduino e (a meno chè non hai ip statico) dovrai utilizzare un dns dinamico.

Come vedi ci sono un bel pò di cose da fare, però se proprio vuoi prendere questa strada non c'è niente di particolarmente difficile, devi solo affrontare le varie parti una alla volta!
« Last Edit: April 06, 2012, 02:38:05 pm by supergiox » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie ancora per la tua risposta.
Purtroppo di Ajax e jquery sono a digiuno smiley-sad
Ma non c'è problema in quanto mi metteró a studiarli.

Secondo te posso affrontare il problema in modo più semplice?
Come scritto prima ho provato a cimentarmi nel tyniwebserver ma non c'ho capito molto.
Apparte la soluzione di appoggiarmi ad altervista non vedo altre strade..

Grazie!
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Purtroppo non so aiutarti per quanto riguarda il lato arduino in quanto non ho una ethernet shield né ho mai provato tinywebserver...
Però da quello che ho capito, tu puoi gestire le richieste GET, fare delle operazioni in base alla richiesta ed eventualmente inviare la pagina.
Se non usi ajax, nel momento in cui premi un pulsante sul browser viene inviata la richiesta GET e contestualmente il browser si aspetta di ricevere qualcosa dal server (arduino). Questo significa che devi inviare di nuovo la stessa pagina (o se vuoi un'altra) tramite tinywebserver.
Con ajax invece puoi permetterti di inviare una richiesta GET (o POST) senza essere vincolato a ricaricare la pagina, cosa che nel tuo caso sarebbe superflua visto che devi solo inviare comandi.

Quindi: puoi fare a meno di ajax, ma devi inviare la pagina al browser.
« Last Edit: April 07, 2012, 07:30:56 am by supergiox » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok allora mi studierò qualcosa, e nel frattempo aspetterò magari qualche altro suggerimento da utenti che magari si sono già cimentati in questo  smiley-razz

Ti ringrazio e ti faccio auguri di buona Pasqua!
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 336
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Di niente! Buona Pasqua anche a te smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scrivo ancora nel caso qualcun altro oltre al gentilissimo "supergiox" mi sappia aiutare  smiley-sweat
Ho provato a vedere alcuni progetti che incrociano il php con Arduino, e mi pare di aver capito che è stato eseguito il parsing di alcuni comandi (il GET ad esempio).
Non ho trovato guide esaustive e quindi chiedo a voi delucidazioni!

grazie
Logged

Padova
Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao domoino,
non so se ti può essere d'aiuto ma prova a dare un'occhiata alla piattaforma http://paraimpu.crs4.it/ (progetto italiano made in Sardegna) che permette di interfacciarsi con diversi sensori e attuatori tra i quali c'è anche Arduino.
Potresti usare il sito che hai messo su Altervista come strato di presentazione e con il quale l'utente interagisce. Al click di un pulsante invii la richiesta a paraimpu tramite javascript e lui poi indirizza la richiesta al tuo Arduino.
Prova a darci un occhio se ti può essere utile. Io avevo fatto un progettino semplice semplice che collegava Arduino UNO e uno smartphone Android per quanto possibile se ti posso essere d'aiuto chiedi pure.

Ciao.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie critical.
Avevo già dato un'occhiata veloce ma non in modo approfondito.
Nel pomeriggio daró un'occhiata, ti ringrazio e nel caso mi permetteró di disturbati  smiley-roll smiley
Logged

Padova
Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nessun problema, anzi se posso fare qualcosa ben venga visto che ho un po' abbandonato quel progettino  smiley-sad
Ciao
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, ho spulciato per bene l'intero forum.
Forse mi conviene tener in considerazione la parte "implementazione web server direttamente su arduino".
Purtroppo non c'è verso che io capisca il TinyWebServer  smiley-sad
Se qualcuno riesce a spiegarmi minimamente il funzionamento gliene sarei molto grato; io dovrei far girare 8 pagine (html), un css e un login in php.

Nel frattempo mi studio la strada proposta da critical   smiley-wink
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiungo un pezzo alla volta purtroppo ma sto seguendo 2 strade:
1. Sito si Altervista che dovrebbe mandare comandi ad Arduino ;
2. Implementare TinyWebServer.

Preferisco seguire la 1. se possibile, e proprio al riguardo posto questa parte di codice trovato nel fantastico progetto "DomoticHome" per vedere se può fare al caso mio:
Code:
if(readString.startsWith("GET /?out=3&status=0"))
{RemoteSwitch::sendTelegram(code2,10);
//digitalWrite(3, LOW);
client.print("{\"status\" : \"0\" , \"out\" : \"");
client.print(3);
client.print("\"}");
}
Potrei usare questo codice per intercettare i comandi inviati da Altervista??

Grazie ancora!
Logged

Padova
Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

domoino per intercettare i comandi prova a dare un occhio a questo topic, in particolare al codice di @medimax (che alla fine è il codice iniziale di @giusepperomano con qualche modifica): http://arduino.cc/forum/index.php/topic,77511.msg755356.html#msg755356 e come viene valorizzata la variabile readString.

ciao
Logged

Pages: [1] 2 3 4   Go Up
Jump to: