Salve a tutti,
stavo lavorando ad un progetto che non riesco a far funzionare:
voglio creare un programma per controllare dei led via web proteggendo la pagina con user e password,
ho trovato questi 2 programmi e stavo cercando di unirli insieme ma non riesco, potete aiutarmi?
i due programmi:
la protezione
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
//definisco mac address e indirizzo ip
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 10};
//creo un oggetto webduino
WebServer webserver("", 80);
//funzione che crea la pagina principale del sito
void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
//invio al browser la pagina principale
P(helloMsg) = "<h4>Accedi:</h4><a href=\"private.html\">Pagina Privata</a>";
server.printP(helloMsg);
}
}
//questa funzione permette di verificare il nome utente e la password
//e in caso di successo di visualizzare la pagina privata
void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
//user= admin
//password= admin
//verifico nome utente e password
if (server.checkCredentials("YWRtaW46YWRtaW4="))
{
//in caso affermativo...
server.httpSuccess();
if (type != WebServer::HEAD)
{
//invio al browser la pagina privata
P(helloMsg) = "<h3>Buongiorno Admin!</h3>";
server.printP(helloMsg);
}
}
else
{
//creo una risposta http
//nel caso in cui si tenta un accesso
//no autorizzato
server.httpUnauthorized();
}
}
void setup()
{
//inizializzo la ethernet shield
Ethernet.begin(mac, ip);
//definisco funzione che gestisce
//la pagina principale del sito
webserver.setDefaultCommand(&defaultCmd);
webserver.addCommand("index.html", &defaultCmd);
//definisco la funzione che gestisce la pagina privata
webserver.addCommand("private.html", &privateCmd);
//inizializzo la libreria webduino
webserver.begin();
}
void loop()
{
char buff[64];
int len = 64;
webserver.processConnection(buff, &len);
}
programma per accendere i led:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,200,177 };
const int MAX_PAGENAME_LEN = 8; // max characters in page name
char buffer[MAX_PAGENAME_LEN+1]; // additional character for terminating null
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Ethernet.begin(mac, ip);
server.begin();
digitalWrite(10,HIGH);
delay(2000);
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
int type = 0;
while (client.connected())
{
if (client.available())
{
// GET, POST, or HEAD
memset(buffer,0, sizeof(buffer)); // clear the buffer | scrive l'array con 0
if(client.readBytesUntil('/',buffer,sizeof(buffer)))
{
if(strcmp(buffer,"POST ") == 0) //cerca la scritta post http://ruturajv.wordpress.com/2005/12/25/http-post-request/
{
client.find("\n\r"); // skip to the body
// find string starting with "pin", stop on first blank line
// the POST parameters expected in the form pinDx=Y
// where x is the pin number and Y is 0 for LOW and 1 for HIGH
while(client.findUntil("pinD", "\n\r")){
int pin = client.parseInt(); // the pin number
int val = client.parseInt(); // 0 or 1
pinMode(pin, OUTPUT);
digitalWrite(pin, val);
}
}
sendHeader(client,"Domotica");
//create HTML button to control pin 8
client.println("<h2>Controllo Pin Digitali</h2>");
client.println("<table border='1' >");
for(int i=2;i<=3;i++)
{
client.print("<tr><td>digital pin ");
client.print(i);
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.println(" value='0'><input type='submit' value='Off'/></form>");
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.print(" value='1'><input type='submit' value='On'/></form>");
client.print(" </td><td>stato: ");
if(digitalRead(i)==1)
client.print("ON");
else
client.print("OFF");
client.println("</td></tr>");
}
for(int i=5;i<10;i++)
{
client.print("<tr><td>digital pin ");
client.print(i);
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.println(" value='0'><input type='submit' value='Off'/></form>");
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.print(" value='1'><input type='submit' value='On'/></form>");
client.print(" </td><td>stato: ");
if(digitalRead(i)==1)
client.print("ON");
else
client.print("OFF");
client.println("</td></tr>");
}
client.println("</table>");
client.println("</body></html>");
client.stop();
}
}
}
// give the web browser time to receive the data
delay(1);
client.stop();
}
}
void sendHeader(EthernetClient client, char *title)
{
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("<html><head><title>");
client.print(title);
client.println("</title><body>");
}
Grazie in anticipo