#include // Include the WiFi library #include // Include the MQTT library // network credentials const char* ssid = "iPhone Ernesto (2)"; const char* password = "****"; // MQTT broker IP address or hostname const char* mqtt_server = "broker.hivemq.com"; WiFiClient espClient; // Create a WiFi client instance PubSubClient client(espClient); // Create a MQTT client instance void setup() { Serial.begin(115200); // Start the serial communication delay(10); // Connect to Wi-Fi WiFi.begin(ssid, password); // Connect to WiFi network while (WiFi.status() != WL_CONNECTED) { // Wait for WiFi connection delay(500); Serial.print("."); } Serial.println("WiFi connected"); // Connect to MQTT Broker client.setServer(mqtt_server, 1883); // Set the MQTT broker server and port client.setCallback(callback); // Set callback function to handle incoming messages while (!client.connected()) { // Attempt to connect to MQTT broker Serial.print("Attempting MQTT connection..."); if (client.connect("ESP32C3Client")) { // Client ID for MQTT connection Serial.println("connected"); client.subscribe("arduino/uno"); // Subscribe to the topic "arduino/uno" } else { Serial.print("failed, rc="); Serial.print(client.state()); // Print connection status Serial.println(" try again in 5 seconds"); delay(5000); // Wait 5 seconds before retrying } } } void loop() { client.loop(); // Maintain MQTT connection and handle incoming messages } // MQTT callback function to handle incoming messages void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); // Print the topic of the incoming message Serial.print("] "); // Print the incoming message for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); }