//Incluir bibliotecas
#include <DHTesp.h>
#include <EspMQTTClient.h>
char SSIDName[] = "Wokwi-GUEST"; //nome da rede WiFi
char SSIDPass[] = ""; //senha da rede WiFI
const int pir =19;
const int ledpin =5;
char BrokerURL[] = "test.mosquitto.org"; //URL do broker Mosquitto MQTT
//char BrokerURL[] = "broker.hivemq.com"; //URL do broker Hivemq MQTT
char BrokerUserName[] = ""; //nome do usuario para autenticar no broker MQTT
char BrokerPassword[] = ""; //senha para autenticar no broker MQTT
char MQTTClientName[] = "SaladeMáquinas"; //nome do cliente MQTT
int BrokerPort = 1883; //porta do broker MQTT
String Topico_01 = "uninove/t32/alarme"; //nome do topico 01
String Topico_02 = "uninove/t32/Temperatura"; //nome do topico 01
//String Topico_03 = "Uninove/t32/Umidade"; //nome do topico 01
EspMQTTClient clienteMQTT(SSIDName, SSIDPass, BrokerURL, BrokerUserName, BrokerPassword, MQTTClientName, BrokerPort); //inicializa o cliente MQTT
//Este prototipo de funcao deve estar sempre presente
void onConnectionEstablished() {
}
//Variaveis globais e objetos
const int DHT_PIN = 22; //terminal do sensor de temperatura e umidade
DHTesp dhtSensor; //instancia o objeto dhtSensor a partir da classa DHTesp
void enviarDados() {
clienteMQTT.publish(Topico_01, String("violado area 1"));
}
void setup() {
Serial.begin(115200);
pinMode(ledpin,OUTPUT);
pinMode(pir,INPUT);
clienteMQTT.enableDebuggingMessages(); //habilita mensagens de debug no monitor serial
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //inicializa o sensor de temperatura e umidade
}
//Loop
void loop() {
clienteMQTT.loop(); //funcao necessaria para manter a conexao com o broker MQTT ativa e coletar as mensagens recebidas
TempAndHumidity temp_umid = dhtSensor.getTempAndHumidity(); //instancia o objeto temp_umid a partir da classe TempAndHumidity
if (clienteMQTT.isWifiConnected() == 1) {
Serial.println("Conectado ao WiFi!");
} else {
Serial.println("Nao conectado ao WiFi!");
}
if (clienteMQTT.isMqttConnected() == 1) {
Serial.println("Conectado ao broker MQTT!");
} else {
Serial.println("Nao conectado ao broker MQTT!");
}
delay(1000);
const int IP=digitalRead(pir);
const int Temperatura = temp_umid.temperature;
//const int Umidade=temp_umid.humidity;
//Serial.print(IP);
delay(100);
if(IP==1){
enviarDados();
Serial.println(" Há movimento na Sala 1");
digitalWrite(ledpin,HIGH);
delay(1000);
}
else{
Serial.println(" Sem movimento na Sala 1");
digitalWrite(ledpin,LOW);
delay(1000);
}
if(Temperatura>50){
Serial.print(" Calor na sala 1");
clienteMQTT.publish(Topico_02, String(temp_umid.temperature, 2) + "°C");
//clienteMQTT.publish(Topico_03, String(temp_umid.humidity, 1) + "%");
digitalWrite(ledpin,HIGH);
delay(1000);
}
}