#include // Enables the ESP8266 to connect to the local network (via WiFi) #include // Allows us to connect to, and publish to the MQTT broker const int ledPin = 0; // This code uses the built-in led for visual feedback that the button has been pressed const int buttonPin = 13; // Connect your button to pin #13 // WiFi // Make sure to update this for your own WiFi network! const char *ssid = "internet_of_insecure_things"; const char *wifi_password = "pass"; // MQTT const char *clientID = "window_0"; // Unique to this device // Make sure to update this for your own MQTT Broker! const char *mqtt_server = "mqtt.kitsunehosting.net"; const char *mqtt_topic = "home/upstairs_lab/actuators/window_0"; const char *mqtt_username = "user"; const char *mqtt_password = "pass"; // Initialise the WiFi and MQTT Client objects WiFiClient wifiClient; PubSubClient client(mqtt_server, 1883, wifiClient); // 1883 is the listener port for the Broker void setup() { pinMode(ledPin, OUTPUT); // Switch the on-board LED off to start with digitalWrite(ledPin, HIGH); // Begin Serial on 115200 // Remember to choose the correct Baudrate on the Serial monitor! // This is just for debugging purposes Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); // Connect to the WiFi WiFi.begin(ssid, wifi_password); // Wait until the connection has been confirmed before continuing while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Debugging - Output the IP Address of the ESP8266 Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // Connect to MQTT Broker // client.connect returns a boolean value to let us know if the connection was successful. // If the connection is failing, make sure you are using the correct MQTT Username and Password (Setup Earlier in the Instructable) if (client.connect(clientID, mqtt_username, mqtt_password)) { Serial.println("Connected to MQTT Broker!"); } else { Serial.println("Connection to MQTT Broker failed..."); } } void loop() { digitalWrite(ledPin, LOW); if (client.publish(mqtt_topic, "0")) { Serial.println("Button pushed and message sent!"); } else { Serial.println("Message failed to send. Reconnecting to MQTT Broker and trying again"); client.connect(clientID, mqtt_username, mqtt_password); delay(10); // This delay ensures that client.publish doesn't clash with the client.connect call client.publish(mqtt_topic, "-1"); } delay(400); digitalWrite(ledPin, HIGH); if (client.publish(mqtt_topic, "1")) { Serial.println("Button pushed and message sent!"); } else { Serial.println("Message failed to send. Reconnecting to MQTT Broker and trying again"); client.connect(clientID, mqtt_username, mqtt_password); delay(10); // This delay ensures that client.publish doesn't clash with the client.connect call client.publish(mqtt_topic, "-1"); } delay(400); }