Go Down

Topic: arduino server (Read 503 times) previous topic - next topic

danyevo

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
Code: [Select]


#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:
Code: [Select]


#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

nid69ita

Per essere sicuri, hai la shield classica, WIZ5100 o la più economica ENC28j60 ?
my name is IGOR, not AIGOR

PaoloP

Mi ci sono cimentato anche io tempo fa non ricavandone alcunchè. Ho deciso di aspettare l'Arduino YUN (http://arduino.cc/en/Main/ArduinoYUN)

danyevo

si ho la shield classica i programmi funzionano tutti e due provati di persona, devo solo unirli

danyevo

Pensate sia possibile?

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy