#include #include const char* ssid = "ANLI"; const char* password = "Actua1455"; const char* mqtt_server = "broker.emqx.io"; const char* mqtt_Client = "FabAcademy_Colombia_MICHAEL"; const char* mqtt_Topic_Sub = "FabAcademy/week11"; #define LED_BLUE D2 // D2 on XIAO ESP32 C3 #define LED_YELLOW D3 // D3 #define LED_GREEN D4 // D4 WiFiClient espClient; PubSubClient client(espClient); int counter = 0; void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void turnOffAll() { digitalWrite(LED_BLUE, LOW); digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, LOW); } void showLED(int count) { turnOffAll(); if (count == 1) digitalWrite(LED_BLUE, HIGH); else if (count == 2) digitalWrite(LED_YELLOW, HIGH); else if (count == 3) digitalWrite(LED_GREEN, HIGH); } void callback(char* topic, byte* payload, unsigned int length) { String msg; for (unsigned int i = 0; i < length; i++) { msg += (char)payload[i]; } if (msg == "TOUCH") { counter++; if (counter > 3) counter = 1; showLED(counter); Serial.print("TOUCH message received. LED: "); Serial.println(counter); } } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect(mqtt_Client)) { Serial.println("connected"); client.subscribe(mqtt_Topic_Sub); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup() { Serial.begin(115200); pinMode(LED_BLUE, OUTPUT); pinMode(LED_YELLOW, OUTPUT); pinMode(LED_GREEN, OUTPUT); turnOffAll(); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); }