Arduino trigger de temperatura com IOT

Boas, eu estou a estagiar na Câmara Municipal de Almeirim e o admin da informática como me viu a usar um arduino pediu-me para fazer um sensor de temperatura para a sala dos servidores para quando passar um x de temperatura mandar um email e sms para ele.
Pelo que eu estive a ver posso usar um esp para enviar a imforção para o thingspeak e depois pelo ifttt mandar o email e sms.
Gostava de saber se sabem de alguma opção melhor e que seja free.
Obrigado

Fiz exatamente isso para um POC aqui no meu serviço…no meu caso também tenho um display

// Librarys utilizadas no projecto
#include <DHT.h> // sensor temp/humid
#include <ESP8266WiFi.h> // modulo wifi wemos
#include <SPI.h> // protocolo de comunicação com display led
#include <Wire.h> // protocolo de comunicação com display led
#include <Adafruit_GFX.h> // protocolo de comunicação com display led
#include “Adafruit_SSD1306.h” // protocolo de comunicação com display led

// declaração dos pins do ecran led
#define OLED_MOSI D7
#define OLED_CLK D5
#define OLED_DC D1
#define OLED_CS D8
#define OLED_RESET D3
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// API Key do site Thingspeak.com e servidor
String apiKey = “your_api_key”;
const char* server = “api.thingspeak.com”;

// dados para o wifi
const char* ssid = “ssid”;
const char* password = “password”;

// definição dos pins do sensor temp/humidade DHT11
#define DHTPIN D2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;

#if (SSD1306_LCDHEIGHT != 64)
#error(“Height incorrect, please fix Adafruit_SSD1306.h!”);
#endif
int i=0;

void setup()

{

// OLED SSD1306
display.begin(SSD1306_SWITCHCAPVCC);
//display.begin();
//delay(2000);
////display.display();
//delay(2000);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(“Hello, world!”);
display.clearDisplay();
display.display();

Serial.begin(115200);
delay(100);
dht.begin();

WiFi.begin(ssid, password);

// printout para o ecran lcd
display.print(“Connecting to”);
display.print("ssid);

//printout para a consola do terminal
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
display.print(".");
display.display();
}
Serial.println("");
Serial.println(“WiFi connected”);
display.print(“WiFi connected”);
display.display();

}

void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
display.clearDisplay();
mostraDados(t,h);

if (isnan(h) || isnan(t))
{
Serial.println(“Failed to read from DHT sensor!”);
display.clearDisplay();
display.print(“Failed to read from DHT sensor!”);
display.display();
return;
}

if (client.connect(server,80)) {
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr += “\r\n\r\n”;

client.print(“POST /update HTTP/1.1\n”);
client.print(“Host: api.thingspeak.com\n”);
client.print(“Connection: close\n”);
client.print(“X-THINGSPEAKAPIKEY: “+apiKey+”\n”);
client.print(“Content-Type: application/x-www-form-urlencoded\n”);
client.print(“Content-Length: “);
client.print(postStr.length());
client.print(”\n\n”);
client.print(postStr);

//debug para a consola do terminal
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(“C” );
Serial.println();
Serial.print(“Humidity: “);
Serial.print(h);
Serial.print(”%”);
Serial.println();

}
client.stop();

// thingspeak needs at least a 15 sec delay between updates
// 20 seconds to be safe
delay(20000);
}

void mostraDados(int t, int h) {
//função para exibir a temperatura / humidade no ecran LCD

display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(" Temperatura:");
display.setTextSize(2);
display.print(" “);
display.print(t);
display.print((char)247);
display.println(” C");
display.setTextSize(1);
display.println("---------------------");

display.println(" Humidade:");
display.setTextSize(2);
display.print(" “);
display.print(h);
display.println(” %");
display.display();
}

Cheguei a fazer uma app para android no AppInventor que não era mais que um browser

1 Like

Obrigado pela resposta mas vou optar por usar o arduino com um shield de ethernet.
Vou usar isto https://github.com/8enSmith/Arduino-DHT11-Thingspeak/blob/master/DHT11_Ethernet_Sketch.ino para enviar para o thingspeak e depois criar o trigger para enviar para o ifttt

Por acaso sabes de alguma caixa boa para o arduino com o shield de ethernet
Eu estou a olhar para estas mas depois nao tem espaco para os jumpers