WEB SERVER - gestire Input da textbox

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

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

grazie mille per i suggerimenti...ho consultato i suoi link e mi sono presentato.

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"

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,177 };
EthernetServer server(80);
String query;
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");
        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'>");
        client.print("<div data-role='header'><h1>My Home</h1></div>");
        client.print("<div data-role='content'>");
        client.print("<label for='password'>Password</label>");
        client.print("<input id='password' name='password' type='password'/>");


        
QUI VORREI METTERE LA VERIFICA DELLA PASSWORD PER POTER CONTINUARE CON IL CODICE CHE SEGUE:


{

        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 (query.indexOf("accendi") > 0) {
        digitalWrite(5,HIGH);
         }
        client.print("<a href=''data-role='button'data-inline='true'data-transition='flip'>OFF</a>");

        client.print("</div>");

        client.print("<div data-role='footer'>");
        client.print("<p><a href='#one'data-role='button'data-icon='arrow-r'data-inline='true'>RUN</a></p>");

        client.print("</div>");
        client.print("</div>");
        
        client.print("</body>");
        client.print("</html>");
        
         break;
}


      }
    }
  }
  delay(1);
  client.stop();
  query = String("");
}

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.

sanga:
grazie mille. Purtroppo se scrivo client.print(F(…)); non fa visualizzare la pagina, ma cercherò di risolvere questo leggero problema.

Deve funzionare con del testo.
Ciao Uwe

Esempio con 3 campi input text, un button che invia con metodo POST

code DELETED

Uscita header

POST / HTTP/1.1
Host: 192.168.2.177
... DELETED

Ti resta da fare il parse del Content-Length