#include <WiFi.h>
#include <string.h>
#include <PubSubClient.h>
#include "DHTesp.h"
DHTesp DHT;
//parametros do WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
//parametros do servidor mqtt
const char* mqtt_server = "test.mosquitto.org";
const char* usuario = "";
const char* senha = "";
// O pino de leitura é o D34
//O potenciômetro está simulando o sensor de gás
int DHT22_PIN = 15;
TempAndHumidity leitura;
char temp[4];
void alteraTemp(int templ){
String l = String(templ);
for(int i = 0; i<l.length(); i++){
temp[i] = l[i];
}
}
bool findString(char* str, char* substr){
Serial.println(strlen(str));
for(int i = 0; i<strlen(str); i++){
if(str[i]==substr[0]){
Serial.println();
bool tem = true;
for(int k = 0; k<strlen(substr); k++){
Serial.print(str[i+k]);
if(str[i+k]!=substr[k]){
tem = false;
break;
}
}
if(tem){
Serial.println("Achou True");
return true;
}
Serial.println();
}
}
Serial.println("Achou False");
return false;
}
int buzzer = 12, led = 14;
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi(){
delay(10);
//conecta na rede wifi
Serial.println();
Serial.print("Conectando a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Conectado ao WiFi!");
Serial.println("Endereco P: ");
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
setup_wifi();
DHT.setup(DHT22_PIN, DHTesp::DHT22);
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
unsigned long antes = 0;
void loop() {
delay(200);//DELAY ACELERA A SIMULAÇÃO NO WOKWI
if((millis()-antes)>=1000){
antes = millis();
leitura = DHT.getTempAndHumidity();
//Serial.println((int)leitura.temperature);
}
if(!client.connected()) {
reconnect();
}
client.loop();
alteraTemp((int)leitura.temperature);
client.publish("casa/temperatura", (char*)temp);
//Serial.println(temp);
}
void reconnect(){
//loop até ser conectado
while(!client.connected()){
Serial.println("Tentando reconectar ao broker MQTT...");
//tentativa de conexão
if(client.connect("jnonsijnvsvuinsi")){
Serial.println("Conectado");
//INSCREVE-SE ao tópico carolina
client.subscribe("botao1");
Serial.println("inscreve-se em um tópico");
}else{
Serial.print("Falhou, rc=");
Serial.print(client.state());
Serial.println("Tentar novamente em 5 segundos...");
delay(5000);
}
}
}
void callback(const char* topic, byte* payload, unsigned int length){
//truena/carol26jnvsvuinsi
Serial.println((char*)payload);
if(findString((char*)payload, "buzzer")){
if(findString((char*)payload, "true")){
digitalWrite(buzzer, 1);
}else{
digitalWrite(buzzer, 0);
}
}
if(findString((char*)payload, "led")){
if(findString((char*)payload, "true")){
digitalWrite(led, 1);
}else{
digitalWrite(led, 0);
}
}
}