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 |