Prima di tutto Buon anno a tutti
Io ho pastrocchiato questo, l'ho testato e devo dire che funziona, però gradirei che gli diate un'occhiata:
#define WEBDUINO_AUTH_REALM "Prova Autenticazione"
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 220 };
#define PREFIX ""
WebServer webserver(PREFIX, 80);
boolean Rele1 = false;
boolean Rele2 = false;
boolean Rele3 = false;
void defaultCmd(WebServer &server, WebServer::ConnectionType type,char *url_param, bool param_complete)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
String s = "";
if (param_complete == true)
{
s = url_param;
if ( s == "R1=ON")
{
Rele1 = true;
digitalWrite(3, HIGH);
}
else if ( s == "R1=OFF")
{
Rele1 = false;
digitalWrite(3, LOW);
}
if ( s == "R2=ON")
{
Rele2 = true;
digitalWrite(5, HIGH);
}
else if ( s == "R2=OFF")
{
Rele2 = false;
digitalWrite(5, LOW);
}
if ( s == "R3=ON")
{
Rele3 = true;
digitalWrite(6, HIGH);
}
else if ( s == "R3=OFF")
{
Rele3 = false;
digitalWrite(6, LOW);
}
}
P(helloMsg) = "<h1>Prova Autenticazione</h1><a href=\"private.html\">Accesso</a>";
server.printP(helloMsg);
server.print("<h2>User = 1234 Password = 1234</h2>");
}
}
void privateCmd(WebServer &server, WebServer::ConnectionType type,
char *url_param, bool param_complete)
{
String s = "";
if (param_complete == true)
{
s = url_param;
if ( s == "R1=ON")
{
Rele1 = true;
digitalWrite(3, HIGH);
}
else if ( s == "R1=OFF")
{
Rele1 = false;
digitalWrite(3, LOW);
}
if ( s == "R2=ON")
{
Rele2 = true;
digitalWrite(5, HIGH);
}
else if ( s == "R2=OFF")
{
Rele2 = false;
digitalWrite(5, LOW);
}
if ( s == "R3=ON")
{
Rele3 = true;
digitalWrite(6, HIGH);
}
else if ( s == "R3=OFF")
{
Rele3 = false;
digitalWrite(6, LOW);
}
}
{
if (server.checkCredentials("MTIzNDoxMjM0"))
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
P(helloMsg) = "<h1>Accesso eseguito</h1>";
server.print("<table border=\"1\">");
server.print("<tr><td>Stato Rele</td><td>Comandi</td><td>");
if(Rele1 == true)
server.print("<tr><td style=\"color: red;\">RELE 1 ON</td><td>");
else
server.print("<tr><td style=\"color: black;\">RELE 1 OFF</td><td>");
if(Rele1 == false)
server.print("<input type= button value='Accendi'onclick=\"location.href='private.html?R1=ON'\">");
else
server.print("<input type= button value='Spegni'onclick=\"location.href='private.html?R1=OFF'\">");
server.print("</td></tr>");
if(Rele2 == true)
server.print("<tr><td style=\"color: red;\">RELE 2 ON</td><td>");
else
server.print("<tr><td style=\"color: black;\">RELE 2 OFF</td><td>");
if(Rele2 == false)
server.print("<input type= button value='clicca qui'onclick=\"location.href='private.html?R2=ON'\">");
else
server.print("<input type= button value='clicca qui'onclick=\"location.href='private.html?R2=OFF'\">");
server.print("</td></tr>");
if(Rele3 == true)
server.print("<tr><td style=\"color: red;\">RELE 3 ON</td><td>");
else
server.print("<tr><td style=\"color: black;\">RELE 3 OFF</td><td>");
if(Rele3 == false)
server.print("<input type= button value='clicca qui'onclick=\"location.href='private.html?R3=ON'\">");
else
server.print("<input type= button value='clicca qui'onclick=\"location.href='private.html?R3=OFF'\">");
server.print("</td></tr>");
server.printP(helloMsg);
}
}
else
{
/* send a 401 error back causing the web browser to prompt the user for credentials */
server.httpUnauthorized();
}
}
}
void setup()
{
Ethernet.begin(mac, ip);
webserver.setDefaultCommand(&defaultCmd);
webserver.addCommand("index.html", &defaultCmd);
webserver.addCommand("private.html", &privateCmd);
webserver.begin();
delay(100);
//definisci i pin 2 3 4 in uscita
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
//inizializza i le uscite
digitalWrite(3, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
void loop()
{
char buff[64];
int len = 64;
/* process incoming connections one at a time forever */
webserver.processConnection(buff, &len);
}
Era un po' che non mettevo mani sulla lib Ethernet.
Allora ricordavo bene la risposta che ti serve è sul char(c). Ho preso un esempio dell'ide e ti ho inserito l'autenticazione base64
Ora sto provando a passare il controllo dei led nel tuo codice, ma senza successo