Utilizzare WebHook di IFTTT in un progetto che usa già la Shield Ethernet

Buongiorno,
spero di aver scelto un titolo corretto. Premetto che non ho mai usato Arduino ma siccome ne avevo uno accantonato nel cassetto e si è posta l'occasione di provarlo ne ho approfittato.

Il mio progetto è sulla carta abbastanza semplice.

Arduino Uno
Ethernet Shield
Sensore DHT22
Sensore DS18B20

Dovrei leggere le temperature e l'umidità per poi riportarle su una pagina html raggiungibile all'IP di Arduino. Fino a qui sono riuscito nel mio intento.

Ora vorrei inviare una notifica tramite WebHook di IFTTT in modo tale che al superamento di una soglia di temperatura ricevo un'allarme. Questa parte non ho idea di come svilupparla, ho un URL ma non so nè come collegarmi e neanche come eventualmente evitare che continui a fare il loop richiamandolo continuamente (ho visto che Arduino Due permette più loop e forse è più comodo in questo). Accetto qualsiasi idea alternativa, soprattutto se su rete locale, l'importante è avere una notifica su Android e magari Windows. Ho letto delle guide per interfacciarsi con IFTTT ma richiedono HTTPClient e non sono riuscito a farlo convivere con EthernetClient, non ho ancora capito se la cosa è eventualmente possibile.

Vi riporto il codice per ora utilizzato, sono già quasi al limite di memoria (mi consigliate eventualmente di passare al Due o Mega?).

// Includo librerie
#include <OneWire.h> 
#include <DallasTemperature.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

//PIN Usati
#define ONE_WIRE_BUS 2 
#define DHTPIN 4    
#define DHTTYPE DHT22   

OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire);
DHT dht(DHTPIN, DHTTYPE);

//Variabili
float temp2;
float hum;


//Connessione
byte mac[] = {};
IPAddress ip(192,168,1,15);
EthernetServer server(80);

void setup(void) 
{ 
 Serial.begin(9600); 
 sensors.begin(); 
 dht.begin();
 Ethernet.begin(mac, ip);
 server.begin();
 Serial.print("Arduino server IP address: ");
 Serial.println(Ethernet.localIP());
} 
void loop(void) 
{ 

 sensors.requestTemperatures();  
 temp2 = dht.readTemperature();
 hum = dht.readHumidity();

 EthernetClient client = server.available(); 

 if (client) {

    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        Serial.write(c);
        
        if (c == '\n' && currentLineIsBlank) {
          
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 60");
          client.println();

          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head>");
          client.println("<title>Arduino</title>");
          client.println("<script>");
          client.println("window.onload=function rfsh(){");
          client.println("document.getElementById('t1').innerHTML =");
          client.print(sensors.getTempCByIndex(0));  
          client.println(";"); 
          client.println("document.getElementById('t2').innerHTML =");
          client.print(temp2);
          client.println(";"); 
          client.println("document.getElementById('h').innerHTML =");
          client.print(hum); 
          client.println(";}");  
          client.println("</script>");        
          client.println("</head>");
          client.println("<body>");
          client.println("<h1>Temp1:</h1> ");
          if (sensors.getTempCByIndex(0) > 26){
              client.println("<p style='color: red; font-weight: bold;' id='t1'></p>");
          } else {
              client.println("<p id='t1'></p>");
          }
          client.println("<h1>Temp2:</h1> ");
          if (temp2 > 26){
              client.println("<p style='color: red; font-weight: bold;' id='t2'></p>");
          } else {
              client.println("<p id='t2'></p>");
          }
          client.println("<h1>Umidita:</h1> ");
          client.println("<p id='h'></p>");
          client.println("</body>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }

    delay(100);

    client.stop();
  }  
}

Vi ringrazio anticipatamente per l'aiuto. Qualsiasi critica al codice è ben accetta, anche se mi dite di buttarlo tutto e rileggermi le guide :slight_smile:

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Grazie gpb01. Ho effettuato la presentazione nel thread italiano, mi scuso per non aver fatto quanto dovuto.
Ti ringrazio anche per i link, ho trovato anche un tuo post ad altro utente con riferimenti a guide in PDF e al libro di Leonardo Miliano che leggerò sicuramente.

Buona giornata
Massimo