//MQTT_ValPotenciometro_LED
#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient esp32Client;
PubSubClient mqttClient(esp32Client);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
char *server = "broker.emqx.io";
int port = 1883;
const int portPin = 34;
int potValor = 0;
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");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
// put your setup code here, to run once:
/*
Serial.begin(115200);
pinMode(ledpin, OUTPUT);
delay(1000);
*/
///-------------
pinMode(ledpin,OUTPUT);
Serial.begin(115200);
delay(10);
wifiInit();
mqttClient.setServer(server, port);
mqttClient.setCallback(callback);
}
void loop() {
// put your main code here, to run repeatedly:
/*
potValor = analogRead(portPin);
Serial.println(potValor);
delay(1000); // this speeds up the simulation
if(potValor >= 2040){
digitalWrite(ledpin, HIGH);
delay(1000);
// digitalWrite(ledpin, LOW);
// delay(1000);
} else {
digitalWrite(ledpin, LOW);
delay(1000);
}
*/
//---Conectamos con nuestro broker mqtt----------------------S
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
Serial.print("String: ");
Serial.println(resultS);
//-----------------------------------------------------------E
//---Controlamos el led de acuerdo a lo resivido por mqtt----S
if(var == 0)
{
digitalWrite(ledpin,LOW);
}
else if (var == 1)
{
digitalWrite(ledpin,HIGH);
}
//-----------------------------------------------------------E
//---Aqui leemos el valor de la fotoresistencia o potenciometro
// y lo enviamos por mqtt------------------------------------S
potValor = analogRead(portPin);
Serial.print("Potenciometro: ");
Serial.println(potValor);
sprintf(datos, "Valor Potenciometro: %d ", potValor);
mqttClient.publish("Salida/01",datos);
delay(5000);
//-----------------------------------------------------------E
}