#include // Include the WiFi library #include // Include the MQTT library const char* ssid = "iPhone Ernesto (2)"; // WiFi network name (SSID) const char* password = "****"; // WiFi password const char* mqtt_server = "broker.hivemq.com"; // MQTT broker server address WiFiClient espClient; // Create a WiFi client instance PubSubClient client(espClient); // Create a MQTT client instance void setup() { Serial.begin(115200); // Start the serial communication setup_wifi(); // Setup WiFi connection client.setServer(mqtt_server, 1883); // Set the MQTT broker server and port } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); // Connect to WiFi network while (WiFi.status() != WL_CONNECTED) { // Wait for WiFi connection delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // Print local IP address } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect("SeeeduinoXIAO")) { // Attempt to connect to MQTT broker Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" trying again in 5 seconds"); delay(5000); // Wait 5 seconds before retrying } } } void loop() { if (!client.connected()) { reconnect(); // If MQTT connection is lost, attempt to reconnect } client.loop(); // Maintain MQTT connection and handle incoming messages if (Serial.available()) { // Check if data is available on serial port char c = Serial.read(); // Read a character from serial input if (c == 'H' || c == 'L') { // Check if the character is 'H' or 'L' client.publish("led/control", String(c).c_str()); // Publish character to MQTT topic "led/control" Serial.print("Sent: "); Serial.println(c); // Print sent character to serial monitor } } }