#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Configurações do MQTT
const char* mqtt_server = "broker.emqx.io";
const char* mqtt_topic = "joao/projeto/p3";
WiFiClient espClient;
PubSubClient client(espClient);
#define MQ2_ANA 25
#define MQ2_DIG 2
void setup() {
Serial.begin(115200);
pinMode(MQ2_ANA, INPUT);
pinMode(MQ2_DIG, INPUT);
// Inicia a conexão Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi conectado!");
// Inicia o cliente MQTT
client.setServer(mqtt_server, 1883);
}
void reconnect() {
// Loop até conectar
while (!client.connected()) {
Serial.print("Conectando ao servidor MQTT...");
if (client.connect("ESP32Client")) {
Serial.println("conectado!");
} else {
Serial.print("falhou, rc=");
Serial.print(client.state());
Serial.println("; tentando novamente em 5 segundos");
delay(5000);
}
}
}
void loop() {
// Verifica se está conectado ao MQTT, se não estiver, reconecta
if (!client.connected()) {
reconnect();
}
client.loop();
int analogValue = analogRead(MQ2_ANA);
int digitalValue = digitalRead(MQ2_DIG);
// Publica os valores lidos no tópico MQTT
char message[50];
snprintf(message, 50, "Analog: %d, Digital: %d", analogValue, digitalValue);
Serial.println(message);
if (client.publish(mqtt_topic, message)) {
Serial.println("Mensagem publicada com sucesso!");
} else {
Serial.println("Falha ao publicar a mensagem.");
}
delay(10000);
}