Hola, quisiera saber como puedo enviar mensajes desde thinger a mi microcontrolador ESP8266 para encender y apagar un led, ya el dispositivo se conecta correctamente a la plataforma por el protocolo, pero, no puedo configurar los widgets para ejercer control y enviar mensajes. Que puedo hacer?
Este es mi codigo:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = “ssid”;
const char* password = “password”;
const char* thingerServer = “backend.thinger.io”;
const int thingerPort = 1883;
const char* userName = “franklintorres06”;
const char* deviceName = “MICRO_PRUEBA1”;
const char* deviceCredential = “formato123”;
const int ledPin = D2; // Pin del LED
WiFiClient espClient;
PubSubClient client(espClient);
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Conexión a WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println(“Conectando a WiFi…”);
}
Serial.println(“Conectado a la red WiFi”);
// Conexión al servidor MQTT de Thinger.io
client.setServer(thingerServer, thingerPort);
while (!client.connected())
{
Serial.println(“Conectando al servidor MQTT…”);
if (client.connect(deviceName, userName, deviceCredential))
{
Serial.println(“Conectado al servidor MQTT”);
client.subscribe(“v2/tu_usuario/devices/tu_dispositivo/databuckets/Control_baliza”);
}
else
{
Serial.printf(“Error en conexión MQTT, rc=%d. Reintentando en 5 segundos…\n”, client.state());
delay(5000);
}
}
}
void loop()
{
// Verificar si hay mensajes en el Topic del LED
client.loop();
}
// Función para manejar los mensajes recibidos en el Topic del LED
void callback(char *topic, byte *payload, unsigned int length)
{
// Convertir el payload en una cadena de caracteres
char receivedMessage[length + 1];
for (int i = 0; i < length; i++)
{
receivedMessage[i] = (char)payload[i];
}
receivedMessage[length] = ‘\0’;
// Imprimir el mensaje recibido
Serial.println("Mensaje recibido en el Topic del LED: " + String(receivedMessage));
// Interpretar el mensaje y controlar el LED
if (strcmp(receivedMessage, “encender”) == 0)
{
digitalWrite(ledPin, HIGH);
Serial.println(“LED encendido”);
}
else if (strcmp(receivedMessage, “apagar”) == 0)
{
digitalWrite(ledPin, LOW);
Serial.println(“LED apagado”);
}
}