En el siguiente código, sustituye la configuración por los datos de tu red WiFi.
La URL y el puerto deben coincidir con tu dervidor de MQTT. Si usas test.mosquitto.org, conserva los valores mostrados más adelante.
    Para monitorear su funcionamiento, debes hacer clic en el botón de
    arriba a la derecha en la ventana de Arduino, que tiene una lupa y
    tiene el mensaje flotante que dice Monitor Serie.
    Debes ajustar los baudios a la misma velocidad que en el código,
    donde dice
    Serial.begin(115200);
    que en este caso es 115200 baudios. Si no se ven los mensajes,
    baja la velocidad tanto en el código, como en el monitor.
   
   Ve como configurar y ejecutar este ejemplo. No hagas caso a la parte de los certificados,
| 1 | #include "EspMQTTClient.h" | 
| 2 | |
| 3 | const char *const SSID = | 
| 4 | "Galaxy A723C85"; | 
| 5 | const char *const PASS = | 
| 6 | "bdoi1764"; | 
| 7 | const char *const URL = | 
| 8 | "test.mosquitto.org"; | 
| 9 | const uint16_t PUERTO = | 
| 10 | 1883; | 
| 11 | const char *const CLIENT_ID = | 
| 12 | "gilpgdmIoT-esp32-1"; | 
| 13 | const char *const TOPICO_FOCO = | 
| 14 | "gilpgdm/IoT/foco"; | 
| 15 | |
| 16 | EspMQTTClient cliente( | 
| 17 | SSID, | 
| 18 | PASS, | 
| 19 | URL, | 
| 20 | 0, // Usuario opcional | 
| 21 | 0, // Contraseña opcional | 
| 22 | CLIENT_ID, | 
| 23 | PUERTO); | 
| 24 | const int BOTON = 0; | 
| 25 | bool presionado = false; | 
| 26 | String valor = "0"; | 
| 27 | |
| 28 | void recibeMensaje( | 
| 29 | const String &payload) | 
| 30 | { | 
| 31 | valor = payload; | 
| 32 | digitalWrite(LED_BUILTIN, | 
| 33 | valor == "1" | 
| 34 | ? HIGH | 
| 35 | : LOW); | 
| 36 | } | 
| 37 | |
| 38 | void enviaMensajeMqtt( | 
| 39 | String valorAEnviar, | 
| 40 | String topico) | 
| 41 | { | 
| 42 | cliente.publish(topico, | 
| 43 | valorAEnviar); | 
| 44 | } | 
| 45 | |
| 46 | void onConnectionEstablished() | 
| 47 | { | 
| 48 | cliente.subscribe( | 
| 49 | TOPICO_FOCO, recibeMensaje); | 
| 50 | enviaMensajeMqtt( | 
| 51 | valor, TOPICO_FOCO); | 
| 52 | } | 
| 53 | |
| 54 | void setup() | 
| 55 | { | 
| 56 | Serial.begin(115200); | 
| 57 | pinMode(BOTON, INPUT); | 
| 58 | pinMode(LED_BUILTIN, OUTPUT); | 
| 59 | // Funcionalidades opcionaes | 
| 60 | // Mensajes para depurar conexión | 
| 61 | cliente.enableDebuggingMessages(); | 
| 62 | cliente.enableHTTPWebUpdater(); | 
| 63 | // Actualizaciones | 
| 64 | // OTA (Over The Air) | 
| 65 | cliente.enableOTA(); | 
| 66 | // Mensaje de última voluntad. | 
| 67 | cliente.enableLastWillMessage( | 
| 68 | "gilpgdm/IoT/lastwill", | 
| 69 | "Adios"); | 
| 70 | } | 
| 71 | |
| 72 | void loop() | 
| 73 | { | 
| 74 | cliente.loop(); | 
| 75 | if (cliente.isConnected()) | 
| 76 | { | 
| 77 | bool actual = | 
| 78 | digitalRead(BOTON); | 
| 79 | if (!presionado && | 
| 80 | actual == LOW) | 
| 81 | { | 
| 82 | enviaMensajeMqtt( | 
| 83 | valor == "1" ? "0" : "1", | 
| 84 | TOPICO_FOCO); | 
| 85 | } | 
| 86 | presionado = (actual == LOW); | 
| 87 | } | 
| 88 | } | 
| 89 |