#include < WiFi.h> #include < PubSubClient.h> #include < Adafruit_NeoPixel.h> const char* ssid = "TuSSID"; const char* password = "TuContraseña"; const char* mqtt_server = "broker.emqx.io"; const char* topic = "hans/switch"; #define NEOPIXEL_PIN 10 #define NUM_PIXELS 1 WiFiClient espClient; PubSubClient client(espClient); Adafruit_NeoPixel pixels(NUM_PIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); pixels.begin(); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Conectando a "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi conectado"); Serial.println("Dirección IP: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { String message = ""; for (int i = 0; i < length; i++) { message += (char)payload[i]; } Serial.print("Mensaje recibido desde el topic "); Serial.print(topic); Serial.print(": "); Serial.println(message); if (message == "a") { pixels.setPixelColor(0, pixels.Color(255, 0, 0)); // Rojo pixels.show(); } else { pixels.setPixelColor(0, pixels.Color(0, 255, 0)); // Verde pixels.show(); } } void reconnect() { while (!client.connected()) { Serial.print("Conectando al servidor MQTT..."); if (client.connect("neopixelClient")) { Serial.println("Conectado"); client.subscribe(topic); } else { Serial.print("falló, rc="); Serial.print(client.state()); Serial.println(" intentando nuevamente en 5 segundos"); delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } client.loop(); }