#include "DHT.h"
// ---------- CONFIGURAÇÕES DE PINOS ----------
#define DHTPIN 7
#define DHTTYPE DHT22
const int LDR_PIN = A0;
const int LED_PIN = 9;
// ---------- OBJETO DO SENSOR ----------
DHT dht(DHTPIN, DHTTYPE);
// ---------- LIMITES (AJUSTÁVEIS) ----------
const float TEMP_HIGH = 28.0;
const float HUM_LOW = 30.0;
const float HUM_HIGH = 70.0;
const int LDR_DARK_THRESHOLD = 600;
unsigned long lastRead = 0;
const unsigned long INTERVALO = 5000;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(LDR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.println("SmartWork - Monitor de Bem-Estar no Trabalho (Arduino UNO)");
}
void loop() {
unsigned long agora = millis();
if (agora - lastRead < INTERVALO) {
return;
}
lastRead = agora;
float temperatura = dht.readTemperature();
float umidade = dht.readHumidity();
int ldrValue = analogRead(LDR_PIN);
if (isnan(temperatura) || isnan(umidade)) {
Serial.println("Erro ao ler DHT22");
return;
}
bool ambienteRuim = false;
String motivo = "";
if (temperatura > TEMP_HIGH) {
ambienteRuim = true;
motivo += "Temperatura alta; ";
}
if (umidade < HUM_LOW || umidade > HUM_HIGH) {
ambienteRuim = true;
motivo += "Umidade fora do ideal; ";
}
if (ldrValue > LDR_DARK_THRESHOLD) {
ambienteRuim = true;
motivo += "Luminosidade baixa; ";
}
String status = ambienteRuim ? "critico" : "confortavel";
if (!ambienteRuim) {
motivo = "Ambiente ok.";
}
digitalWrite(LED_PIN, ambienteRuim ? HIGH : LOW);
String payload = "{";
payload += "\"temperature\":" + String(temperatura, 1) + ",";
payload += "\"humidity\":" + String(umidade, 1) + ",";
payload += "\"light\":" + String(ldrValue) + ",";
payload += "\"status\":\"" + status + "\",";
payload += "\"reason\":\"" + motivo + "\"";
payload += "}";
int contentLength = payload.length();
Serial.println("--------------------------------------------------");
Serial.println("POST /api/smartwork/dados HTTP/1.1");
Serial.println("Host: api.smartwork.com");
Serial.println("Content-Type: application/json");
Serial.print("Content-Length: ");
Serial.println(contentLength);
Serial.println();
Serial.println(payload);
Serial.print("Resumo: ");
Serial.print(status);
Serial.print(" | ");
Serial.println(motivo);
}