aiuto come commandare un rele da web server arduino

Buongiorno a tutti, mi è venuto un dubbio il relè che devo far accendere da remoto attualmente si accende alle 9.10 e si spegne alle 17.10, io vorrei che quando accendo il pulsante da web si spegne per 10 minuti e poi ricontinui con il suo ciclo normale

Nessuno sa aiutarmi? Sono in un vicolo ceco

Nessuna soluzione da suggerirmi?

Devi impostare una nuova variabile con lo stato (di tipo bool) di quello che devi fare. Il codice in base a questa variabile o fa il pezzo in base all'ora oppure spegne e attende i 10 minuti (sfruttando la millis e NON la delay)
Quindi la pressione tasto da web deve solo mettere a true questa variabile stato, alla fine dei 10 minuti la variabile ritorna a false

client.println("<a href=\"./?off\">

Prova a togliere il punto:

client.println("<a href=\"/?off\">

(Anche per l'ON)

Buona sera ho tolto il punto ma non va comunque come posso fare? in poche parole si spegne dal web per 10 minuti e poi ritorna al suo ciclo normale fino le17:10

Io cosa ti ho scritto ? La logica di come devi fare.

ho trovato questo ma non funziona e non capisco perchè?

 const int ledPin =  4;            // piedino che vuoi attivare per 10 minuti al giorno
int ledState = LOW;                // Variabile associata al pin
unsigned long PreviousMillis = 0;  // Variabile che memorizza quando e' stato attivato il pin
const long MillisDays = 86400000;  // Millisecondi in un giorno (1000 millisecondi * 60 secondi * 60 minuti * 24 ore)
const long MillisDelay = 600000;    // intervallo di tempo per il quale deve restare spento (1000 milliseconds * 60 secondi * 10 minuti)
unsigned long CurrentMillis = 0;        // Variabile che viene incrementata ogni millisecondo.
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);         // Setto piedino come uscita
  digitalWrite(ledPin, LOW); 
}

void loop()
{
  CurrentMillis++ ;                //Incremento la variabile CurrentMillis di 1
  if (CurrentMillis >= MillisDays){// se CurrentMillis maggiore dei millisecondi di un giorno
    CurrentMillis = 0;             // Azzero la variabile contenente i millisecondi passati dato che ha superato i millisecondi in un giorno
    Serial.print("Tempo superato");
    Serial.println(CurrentMillis);
  }
  if (CurrentMillis >= (MillisDays - MillisDelay)){// se son gia' passati x millisecondi ( 24 ore - tempo di delay)
    digitalWrite(ledPin, LOW);    // Spengo il pin in uscita   
    Serial.print("Led Spento");
    Serial.println(CurrentMillis);
  }else{
    digitalWrite(ledPin, HIGH);    // accendo il pin in uscita 
    Serial.print("Led Acceso");
    Serial.println(CurrentMillis);
  }
}

Mi pare una boiata. Dove l'hai trovata ? Da per scontato che il loop() dura 1 millisecondo !!
Si usa mills() funzione di Arduino che ritorna i millisecondi del micro.
http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/

Poi la millis() richiede variabili unsigned long, quindi meglio siano tutte unsigned long le variabili coinvolte nel calcolo, anche MillisDelay
Per le costanti unsigned long devi aggiungere il post fisso UL

const long MillisDelay = 600000UL;

ma per farla funzionare come posso fare? dove metto i commandi dell loop per fqrloa ndare con il client

Buongiorno non esiste un modo di usarlo per quello che voglio fare io? Spegne per 10 minuti e si riaccende e fa il suo ciclo normale il rele

@Marco porta pazienza. Certo che si può fare, mettendo nel programma la logica di quel che vuoi fare, insieme a quel codice che hai già.
Ma questo non è il forum di assistenza tecnica di una ditta che ti fornisce il programma fatto. Siamo tutti utenti come te e se possiamo e sappiamo rispondiamo. Io stò lavorando e anche rispondendo quando posso.
La tua richiesta è fattibile, ti ho già detto cosa fare come passi logici. E non è semplice per chi come te (mi pare di aver capito) sa poco di programmazione.

Ho bisogno di qualcuno che mi fa capire come fare

marco3020:
Buongiorno a tutti, mi è venuto un dubbio il relè che devo far accendere da remoto attualmente si accende alle 9.10 e si spegne alle 17.10, io vorrei che quando accendo il pulsante da web si spegne per 10 minuti e poi ricontinui con il suo ciclo normale

E questo controllo sull'ora di accensione dove stà ? Nel tuo programma nella loop() non c'e' nulla, solo leggi da RTC ora e data e lo metti su lcd e su pagina web.
Poi aspetti da web se premono on/off e basta. Ma perchè il codice che hai postato è diverso da quello che affermi ?
Come posso dirti modifica qui o la in un codice che hai postato tu e che NON fa quel che dici tu ?

Il codice non riesco a postalo tutto il sito qui mi blocca

marco3020:
Il codice non riesco a postalo tutto il sito qui mi blocca

Non postarlo, allegalo usando la voce "Attachments and other options" sotto a dove scrivi

eccolo

sketch_WEB_SERVER.ino (10.6 KB)

Ora spiega bene quel che vorresti fare.
Dal tuo programma vedo che la parte web pilota rele5, mentre tutta la parte di temporizzazione tramite RTC e temperatura accende/spegne tutt'altro.
A meno che quel NOTTE=43 e rele5=43 voglia dire che stai pilotando la stessa cosa.
Mi pare usi releX e #define per definire LA STESSA cosa. Correggilo e poi ripostalo. Così è un casino immenso capirci qualcosa. Se il pin 43 pilota il rele5 e per te pilota la NOTTE allora chiamalo const byte rele5_NOTTE=5; almeno risulta chiaro. Stessa cosa per gli altri rele

P.S. le dichiarazioni dei pin falle di tipo const byte NON di certo float

float rele1 = 35;  ???     deve essere    const byte rele1=35;

Altro: questo NON ha senso:

if (temp1 > tempSoglia - 0.2 && - 0.6 )

Il C te lo accetta ma è un non senso. Deve essere un intervallo ? questo AND quello ? devi ripetere le variabili
e con delle parentesi si capisce meglio:

if( (temp1 > tempSoglia - 0.2) && (temp1 > tempSoglia - 0.6) )

Ma non ha senso neppure questa, almeno è corretta come "formula".

Altri suggerimenti: tutte le variabili che sono solo costanti, che non cambi mai metti davanti const.
esempi:

const float riscaldatore = 22.0;
const int delayUV = 360;

Questo è un pò lungo da leggere, puoi abbreviare in una sola riga mettendo il calcolo:

// int oraAlba = 9;        eliminarlo
// int minAlba = 10;       eliminarlo
const long albas = 9 * 3600 + 10 * 60 ;  // Alba: HH:MM

e togli il calcolo fatto nella loop