#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient esp32Client;
PubSubClient mqttClient(esp32Client);
const char* ssid = "PACHA";
const char* password = "@us@ng@te";
char *server = "broker.emqx.io";
int port = 1883;
int ledpin= 26;
int fotopin=33;
int var = 0;
int ledval = 0;
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.println("Dirección IP: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensaje recibido [");
Serial.print(topic);
Serial.print("] ");
char payload_string[length + 1];
int resultI;
memcpy(payload_string, payload, length);
payload_string[length] = '\0';
resultI = atoi(payload_string);
var = resultI;
resultS = "";
for (int i=0;i<length;i++) {
resultS= resultS + (char)payload[i];
}
Serial.println();
}
void reconnect() {
while (!mqttClient.connected()) {
Serial.print("Intentando conectarse MQTT...");
if (mqttClient.connect("arduinoClient")) {
Serial.println("Conectado");
mqttClient.subscribe("Entrada/01");
} else {
Serial.print("Fallo, rc=");
Serial.print(mqttClient.state());
Serial.println(" intentar de nuevo en 5 segundos");
delay(5000);
}
}
}
void setup()
{
pinMode(ledpin,OUTPUT);
Serial.begin(115200);
delay(10);
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
wifiInit();
mqttClient.setServer(server, port);
mqttClient.setCallback(callback);
}
void loop()
{
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
Serial.print("String: ");
Serial.println(resultS);
if(var == 0)
{
digitalWrite(ledpin,LOW);
}
else if (var == 1)
{
digitalWrite(ledpin,HIGH);
}
fotoval = analogRead(fotopin);
Serial.print("Photoresistencia: ");
Serial.println(fotoval);
sprintf(datos, "Valor fotoresistencia: %d ", fotoval);
mqttClient.publish("Salida/01",datos);
delay(5000);
}