Serveur web avec boite de saisie en GET besoin d'aide SVP

Bonjour à tous,

J’ai un projet de mettre une Arduino dans mon garage avec interface web pour voir, modifier et géré à distance sur mon intranet local (pas d’internet) le tous.

  • Contrôle de l’ouverture automatique ou manuelle des lumières extérieures avec une Photorésistance selon la luminosité et heure fixe.
  • Contrôle pour les lumières de Noël selon date et heure.
  • Gestion de la température.
  • Etc.

Ce qui fonctionne :

  • Debug dans le Serial.
  • EEPROM Read.
  • Synchronisation du temps NTP sur un serveur local.
  • Lecture des valeurs a toutes les minutes.
  • Serveur web avec sélection des modes automatique, ON et OFF

Pour l’instant, je suis à l’étape du contrôle de lumières extérieur et le tout fonctionne bien sauf le site web ou mon problème est au niveau de la boite de saisie pour changer la valeur de la variable « Lum_Nuit_On » j’ai fait plusieurs tests et je ne parviens pas a récupéré la valeur entrée dans la boite et l’assigné a la variable.

À noter que je ne suis pas expert en programmation web. J’ai beaucoup recherché sur internet, mais pas évident d’avoir quelque chose de simple et clair. J’ai lu beaucoup sur votre forum d’ailleurs tout ce que j’ai fait en développement sur Arduino viens d’ici. Je n’ai jamais écrit sur votre forum, je suis un peu gêné, mais là je suis perdu.
Peux être avez-vous une idée pour orienté mes recherches.

Merci
Bien à vous

void HTTPServeur()
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
     
        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string
          readString += c;
          //Serial.print(c);
         }

         //if HTTP request has ended
         if (c == '\n') {          
           Serial.println(readString); //print to serial monitor for debuging
     
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");
           client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<TITLE>Arduino Garage</TITLE>");
           client.println("</HEAD>");
           client.println("<BODY>");
           client.println("<H1>Lumiere Garage Avant</H1>");
           client.println("<hr />");
           client.println("
");  
           client.println("<H2>Controle des Lumieres</H2>");
           client.println("
");
           client.print("Valeur du la Cellule Photoconductrice Garage : ");
           client.print(Luminosite);
           client.print(" / 1024 a ");
           client.print(hour());
           client.print(":");
           client.print(minute());
           client.print(" ");
           client.print(day());
           client.print("/");
           client.print(month());
           client.print("/");
           client.print(year());
           client.println("
");
           client.println("
");
           
           client.print("Valeur pour allumer lumiere < que ");
           client.print(Lum_Nuit_On);
           client.println("
");           
           client.print("<form method=get>Pour modifier la valeur : <input type=text size=3 name=Lum_Nuit_On value=");
           client.print(Lum_Nuit_On);
           client.println(">&nbsp;<input type=submit value=Save></form>");
           client.println("</body></html>");

           client.println("
");
           client.println("<a href=\"/?button1auto\"\">Automatique</a>

");           
           client.println("<a href=\"/?button1on\"\">Mettre a ON</a>

");
           client.println("<a href=\"/?button1off\"\">Mettre a OFF</a>
");   
           client.println("
");     
           client.println("
"); 
           client.println("<p>Marc Bolduc 2015</p>");  
           client.println("
"); 
           client.println("</BODY>");
           client.println("</HTML>");
     
           delay(1);
           //stopping client
           client.stop();
           //controls the Arduino if you press the buttons
           if (readString.indexOf("?button1auto") >0){
               Lum_Nuit_Auto=1;
           }           
           if (readString.indexOf("?button1on") >0){
               Lum_Nuit_Auto=0;
               Etat_Rly_Lum_Nuit=1;               
               digitalWrite(Rly_Lum_Nuit, HIGH);
           }
           if (readString.indexOf("?button1off") >0){
               Lum_Nuit_Auto=0;             
               Etat_Rly_Lum_Nuit=0;
               digitalWrite(Rly_Lum_Nuit, LOW);
           }
            //clearing string for next read
            readString="";  
           
         }
       }
    }
}
}

Garage_v1.08.ino (12.2 KB)

bonjour tu as deja tous tes declarations qui sont en commentaires
supprime / et / qui sont pas necessaire
/quote

//**********************************************************************************************************************
EXECUTE LA PREMIERE FOIS DANS UN AUTRE SKETCH POUR METTRE LES VALEURS DANS LE EEPROM

#include <EEPROM.h>
void setup()
{
}
void loop()
{
EEPROM.write(0, 200); //Valeur de Lum_Nuit_On
EEPROM.write(1, 23); //Valeur de Lum_Nuit_OFF_H
}
//**********************************************************************************************************************

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <Time.h>
#include <EEPROM.h>

//Variables qui seront charge depuis le EEPROM
int Lum_Nuit_On = 0;
int Lum_Nuit_OFF_H = 0;

// ethernet shield configuration
byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0x31, 0x31 };
byte ip = { 192,168,74,31 };
byte gateway = { 192,168,74,1};
byte subnet = { 255, 255, 255, 0 };
EthernetUDP Udp;
EthernetServer server(80);
unsigned int localPort = 8888; // local port to listen for UDP packets
IPAddress timeServer(192, 168, 74, 13); // Local NTP
const int timeZone = -5; // Eastern Daylight Time (USA)
const int NTP_PACKET_SIZE = 48; // NTP time is in the first 48 bytes of message
byte packetBuffer[NTP_PACKET_SIZE]; //NTP buffer to hold incoming & outgoing packets

// constants won’t change. They’re used here to set input pin numbers:
const int LuminositePin = A0; // pin with the photoresistor
byte Rly_Lum_Nuit = 2; // Pin Lumiere Nuit

// variables will change:
int Luminosite = 0; //Met 0 a la valeur variable to hold photoresistors value
unsigned long onesec = 0; //Pour ne pas execute le “if” du VOID LOOP plus de 1 fois, le temps que la seconde passe
String readString;
boolean Lum_Nuit_Auto=1; //Lumiere Nuit en Mode Automatique par default
boolean Etat_Rly_Lum_Nuit=0; //Pour savoir si ON(1) ou OFF(0)

Faute de frappe

Merci,

Fichier attache mise a jour