Centralina d'allarme - invio/ricezione dati via ethernet

Salve ragazzi,
vi incollo il codice che uso per farvi capire cosa sto facendo.
In pratica vorrei capire se è possibile inserire un tasto su una pagina web e attivare disattivare il mio allarme da remoto.
Ecco il codice

void loop() {
  // lista client
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // richiesta http e linea bianca per scrivere
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n' && currentLineIsBlank) {
          // invio standard http
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // chiudo la connessione quando è tutto ok
      client.println("Refresh: 5");  // aggiorno la pagina html con gli stati ogni 5secondi
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // scrivo l'output dei pin che mi occorrono
          
                    client.print("Progetto 3: Allarme v2.0 con controllo remoto. PERUGINO IMPIANTI ");
                    client.println("
");                     client.println("
");                     client.println("
"); 
          client.print("Centralina di allarme per porte e finestre con controllo ethernet: ");
          client.println("
"); 

        
           int statoporte = digitalRead(4);
          client.print("Stato porte: ");
           client.print(statoporte);
                        client.println("
"); 
                                            client.println("
"); 
             int statoallarme = digitalRead(2);           
            client.print("Allarme attivo:");
              client.print(statoallarme);
              client.println("
"); 
                                  client.println("
"); 
           int intruso = digitalRead(6);
          client.print("Allarme intruso: ");
           client.print(intruso);
                        client.println("
"); 
                                 client.println("
");

In questo momento funziona tutto alla perfezione ma attivo il mio allarme solo via tasto fisico e lo disattivo con lo stesso. Ora vorrei, se possibile fare, fare lo stesso anche via web.
Grazie :slight_smile:

I tasti li ho creati. Come faccio a ricevere il dato alla pressione via web?

  client.print("Attiva/ Disattiva allarme ");
                    client.println("<button> Attiva </button>"); client.println("<button> Disattiva </button>");

Se le leggi tutte e 18 è meglio.

comunque trovi molto in rete sull pulsante web e arduino.

Se dovessi servire a qualcuno io ho risolto.
Ecco il codice usato:

  char c = client.read();
         if(postText.length()<10){
          postText +=c;

if(postText.indexOf("?on") >0){
          digitalWrite(2,HIGH);
          Serial.println("Accendi LED");
          attivo = true;
        }
     // Se l'utente ha premuto l'icona per spegnere il LED
     if(postText.indexOf("?off") >0 ){
       digitalWrite(2,LOW);
        Serial.println("Spegni LED");
        attivo = false;
       }
      // Viene cambiata la pagina WEB a seconda che il LED sia spento, oppure acceso
      if(attivo){
          client.println("<a href=\"./?off\"> <button>DISATTIVA ALLARME</button>");
        }else{
          client.println("<a href=\"./?on\"> <button>ATTIVA ALLARME</button>");
          }   
    delay(1);
    
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // Iniziamo una nuova linea bianca
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // chiudo la connessione
    client.stop();
    Serial.println("client disconnesso");

Naturalmente il codice è da adattare a qualsiasi applicazione. Ho incollato solo la parte usata per far funzionare due pulsanti che cambiano stato alla pressione da pagina web. Non richiede pagine html su scheda SD visto che molti lo chiedono.

Spero di aver fatto cosa gradita :slight_smile: Buona giornata!!