4.- Now the two codes united.
ESP32 Publish: juan/aleatorio
ESP32 Subscript to: juan/boton
App Publish: juan/boton
App Subscript to: juan/aleatorio
// Juan A. Villalpando.
// http://kio4.com/arduino/117_Wemos_MQTT.htm
//#include <ESP8266WiFi.h> // Para el ESP8266
#include <WiFi.h> // Para el ESP32
WiFiClient WIFI_CLIENT;
#include <PubSubClient.h>
PubSubClient MQTT_CLIENT;
const char* ssid = "Nombre_red_Wifi";
const char* password = "Clave_Wifi";
// const byte led4 = D4; // LED4 ESP8266
const byte LED2 = 2; // LED2 ESP32
void setup() {
pinMode(LED2, OUTPUT);
Serial.begin(115200);
delay(10);
Serial.println();
Serial.print("Connecting with ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi conected. IP: ");
Serial.println(WiFi.localIP());
// Setting Callback.
MQTT_CLIENT.setCallback(callback);
}
// What to do when it receives the data.
void callback(char* recibido, byte* payload, unsigned int length) {
Serial.print("Message received: ");
Serial.print(recibido);
Serial.print(" ");
for (int i=0;i<length;i++) {
char receivedChar = (char)payload[i];
Serial.print(receivedChar);
if (receivedChar == '1') {digitalWrite(LED2, HIGH);}
if (receivedChar == '0') {digitalWrite(LED2, LOW);}
}
Serial.println();
}
void loop() {
if (!MQTT_CLIENT.connected()) {
reconnect();
}
// PUBLISH topic.
// Convierte el entero a char. Debe ser char.
int aleatorio = random(1,90);
String aleatorioString = String(aleatorio);
char alea[6];
aleatorioString.toCharArray(alea, 6);
MQTT_CLIENT.publish("juan/aleatorio", alea);
// Wait 2 s.
delay(2000); // DELAY
////////////////////////////////////
// CHECK SUBCRIPTION.
MQTT_CLIENT.loop(); // Check Subscription.
}
// Reconecta con MQTT broker
void reconnect() {
MQTT_CLIENT.setServer("broker.hivemq.com", 1883);
//MQTT_CLIENT.setServer("mqtt.eclipse.org", 1883);
MQTT_CLIENT.setClient(WIFI_CLIENT);
// Trying connect with broker.
while (!MQTT_CLIENT.connected()) {
Serial.println("Trying to connect with Broker MQTT.");
MQTT_CLIENT.connect("JuanAntonio"); // it isn't necessary..
MQTT_CLIENT.subscribe("juan/boton"); // HERE SUBSCRIBE.
// Wait to try to reconnect again...
delay(3000);
}
Serial.println("Conectado a MQTT.");
}