Buongiorno, avrei una domanda su come gestire gli input da un web server creato con arduino utilizzando il linguaggio Jquery. Per spiegarmi meglio ho aggiunto queste stringhe al mio codice:
client.print(“Password”);
client.print("");
come faccio a fare in modo che arduino possa leggere l’input inserito nella textbox creata sulla pagina web?
avrei bisogno di continuare con un:
if(—input==password—){ —codice—
}
Ora mi interessa per verificare l’input di una password, ma sarebbe interessante anche per molte altre applicazioni che vorrei mettere in pratica a breve, come ad esempio chiedere all’utente quanti led vuole accendere attraverso una textbox creata sul sito web.
Vi ringrazio anticipatamente
Cordiali Saluti
Metti lo sketch che hai fatto e si lavora su quello, comunque devi fare un form metodo GET o POST dipende da cosa hai fatto e un submit, prelevi il contenuto del box e lo spedisci
per user e pass è molto meglio se usi "HTTP Basic Authentication" o il "Digest Access Authentication"
EVENTUALMENTE POTRESTI DARMI QUALCHE INDICAZIONE PER ENTRAMBI I MODI? OVVERO SIA PER IL METODO GET/POST CHE PER IL METODO “HTTP Basic Authentication”
TI RINGRAZIO DAVVERO TANTO ANTICIPATAMENTE
Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
Per risparmiare memoria SRAM, invece di
client.print("</div>");
usa
client.print( F("</div>") );
Ovvero metti le frasi fisse del client.print() dentro a F()
grazie mille. Purtroppo se scrivo client.print(F(…)); non fa visualizzare la pagina, ma cercherò di risolvere questo leggero problema.
prima mi interesserebbe chiedere alcune cose:
ora ho provato con la method=get ma purtroppo ho due problemi: innanzitutto va ad aggiungere all’URL una stringa in più ad ogni click del pulsante senza cancellare quanto aveva scritto in precedenza; in secondo luogo preferirei applicare il metodo POST in modo da mantenere la password più nascosta. Purtroppo però, se scrivo method=post al posto di get, non succede nulla.
inoltre quando clicco il pulsante per l’apertura, grazie alla funzione href l’url viene aggiornato con \acceso5 e il led si accendo, ma se riclicco il pulsante per permettere la riaccensione, non succede più nulla.
allego di seguito il mio codice
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,7 };//SCRIVERE QUI L'INDIRIZZO IP DEL VOSTRO ARDUINO
EthernetServer server(90);
String query;
int r=0;
void setup()
{
query = String("");
Ethernet.begin(mac, ip);
server.begin();
pinMode(5,OUTPUT);
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
query.concat(c);
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("html");
//SCRIPT PER FUNZIONAMENTO
client.print("<head>");
client.print("<meta name='viewport' content='width=device-width, initial-scale=1'>");
client.print("<link rel='stylesheet' href='http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css'/>");
client.print("<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.min.js'></script>");
client.print("<script type='text/javascript' src='http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js'></script>");
client.print("</head>");
client.print("<body>");
client.print("<div data-role='page' id='home'data-theme='a'>");//APRO LA PAGINA
client.print("<div data-role='header'><h1>My Home</h1></div>");//APRO L'INTESTAZIONE
client.print("<div data-role='content'>");//APRO IL CONTENUTO DELLA PAGINA
client.print("<form method=get>");
client.print("<label for='password'>Password</label>");
client.print("<input id='password' name='password' type='text' value=\"");client.println("\"></td>");
client.println("
<input name=\"S\" type=\"submit\" value=\"INVIA\">");
client.println("</form>");
int pass = query.indexOf("password=1000");
if (pass>=-1) {digitalWrite(5,HIGH);delay(500);digitalWrite(5,LOW);
r=1;}
else r=0;
client.print("<div data-role='collapsible' data-theme='a' data-content-theme='a'>");
client.print("<h3>Cancello</h3>");
client.print("<a href='accendi5' data-role='button'data-inline='true'data-transition='flip'>ON</a>");
if (r>=1 & query.indexOf("accendi5") > 0 ) {
digitalWrite(5,HIGH);
delay(2000);
digitalWrite(5,LOW);
}
client.print("</div>");
client.print("<div data-role='footer'>");
client.print("</div>");
client.print("</div>");
client.print("</body>");
client.print("</html>");
break;
}
}
}
delay(1);
client.stop();
query = String("");
}
}
potreste aiutarmi a implementare il metodo post, a implementare la pagina http 401 per richiedere le credenziali di accesso e infine per cancellare dall’url le stringhe che sono state aggiunte cliccando i diversi pulsanti.