#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
WiFiClient wifiClient;
PubSubClient mqtt(wifiClient);
const char* mqttServer = "test.mosquitto.org";
int port = 1883;
void callback(char* topic, byte* payload, unsigned int length) {
//função chamada quando alguma mensagem recebida no tópico
String msg = "";
for (int i = 0; i < length; i++) {
msg = msg + String((char)payload[i]);
}
Serial.println("Mensagem: " + msg);
}
void reconnectMQTT() {
static unsigned long wait = millis();
unsigned long delayms = 5000UL;
if (!mqtt.connected() && (millis() > wait)) {
Serial.println("Conectando ao servidor mqtt...");
if (mqtt.connect("esp32Client")) {
Serial.println("Connectado!");
mqtt.subscribe("npititopicout");
} else {
Serial.print("Falhou, rc=");
Serial.print(mqtt.state());
Serial.println(" tentando novamente em 5 s.");
wait = millis() + delayms;
}
}
}
int btnPin = 14;
int btnState = 1;
int count = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.print("Iniciando conexçao com ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(500);
}
Serial.println();
Serial.println("Conexão bem sucedida!");
Serial.print("Ip local: "); Serial.println(WiFi.localIP().toString());
mqtt.setServer(mqttServer, port);
mqtt.setCallback(callback);
pinMode(btnPin, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
reconnectMQTT();
btnState = digitalRead(btnPin);
if (!btnState) {
count++;
Serial.println(btnState);
if (mqtt.connected())
mqtt.publish("npititopicin", String(count).c_str());
delay(200);
}
mqtt.loop();
delay(10); // this speeds up the simulation
}