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 |