Created
July 21, 2020 14:51
-
-
Save gsampallo/274542038b4df31b6ee430c39a2d5487 to your computer and use it in GitHub Desktop.
DPRE - Suscribirse a un tema con MQTT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ESP8266WiFi.h> | |
#include <PubSubClient.h> | |
//Reemplace por los datos de la red iot | |
const char* ssid = "Nombre_red"; | |
const char* password = "password"; | |
const char* mqtt_server = "mqtt_server"; | |
WiFiClient espClient; | |
PubSubClient client(espClient); | |
/* | |
* LED/BOTON | |
* Reemplace por el nro. de GPIO correcto | |
*/ | |
int pinLed1 = 5; | |
void setup() { | |
Serial.begin(115200); | |
WiFi.begin(ssid, password); | |
Serial.println("Conectando"); | |
while (WiFi.status() != WL_CONNECTED) { | |
Serial.print("."); | |
delay(500); | |
} | |
Serial.println("Conectado"); | |
Serial.print("Direccion: "); | |
Serial.println(WiFi.localIP()); | |
client.setServer(mqtt_server, 1883); | |
client.setCallback(callback); | |
/* | |
* A continuacion especifique el modo de operacion | |
* de los GPIO | |
*/ | |
} | |
void callback(char* topic, byte* payload, unsigned int length) { | |
//Se converte topic a un String | |
String tema = String(topic); | |
//Se convierte la cadena de bytes en un String | |
String mensaje = String((char*)payload).substring(0,length); | |
Serial.println(tema+":"+mensaje); | |
if(mensaje == "LED1") { | |
digitalWrite(pinLed1,HIGH); | |
digitalWrite(pinLed2,LOW); | |
digitalWrite(pinLed3,LOW); | |
} | |
} | |
void reconectar() { | |
while(!client.connected()) { | |
String clientId = "ESP8266Client-"; | |
clientId += String(random(0xffff), HEX); | |
if (client.connect(clientId.c_str())) { | |
Serial.println("conectado a "+String(mqtt_server)); | |
client.subscribe("LED"); | |
} else { | |
delay(5000); | |
} | |
} | |
} | |
void loop() { | |
if (!client.connected()) { | |
reconectar(); | |
} | |
client.loop(); | |
delay(1); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment