#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient esp32Client;
PubSubClient mqttClient(esp32Client);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
char *mqttServer = "broker.emqx.io";
const char* clientID = "esp32_maestro";
int LedPin= 2;
int port = 1883;
int fotopin = 33;
int fotoval = 0;
char datos[40];
String resultS = "";
void wifiInit() {
Serial.print("Conectándose a: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("Conectado a WiFi.");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length)
{
char msg = 0;
Serial.print("Mensaje recibido: [");
Serial.print(topic);
Serial.print("]: ");
for(int i = 0 ; i < length; i++){ msg = (char)payload[i]; }
Serial.println(msg);
if('1' == msg){ digitalWrite(LedPin, HIGH); }
else if('0' == msg){ digitalWrite(LedPin, LOW); }
}
void reconnect() {
while (!mqttClient.connected()) {
Serial.println("Intentando conectarse a MQTT...");
if (mqttClient.connect(clientID)) {
Serial.println("Conectado");
mqttClient.subscribe("Entrada/01");
Serial.println("suscrito al tema");
} else {
Serial.print("Fallo, rc=");
Serial.print(mqttClient.state());
Serial.println(" intentar de nuevo en 1 segundos");
delay(1000);
}
}
}
void setup()
{
pinMode(LedPin,OUTPUT);
Serial.begin(115200);
delay(10);
wifiInit();
mqttClient.setServer(mqttServer, port);
mqttClient.setCallback(callback);
}
void loop()
{
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
fotoval = analogRead(fotopin);
Serial.print("Foto: ");
Serial.println(fotoval);
sprintf(datos, "%d ", fotoval);
mqttClient.publish("SALIDA/01",datos);
delay(500);
}