#include <WiFi.h>
#include <AwsIotWiFiClient.h> // Include the AWSIoTWiFiClient library
// AWS IoT setup
AwsIotWiFiClient awsIot;
char HOST_ADDRESS[] = "your-aws-endpoint.amazonaws.com"; // AWS IoT Endpoint
char CLIENT_ID[] = "ESP32Device";
char TOPIC[] = "esp32/buttonStatus";
// Wi-Fi credentials
const char* ssid = "your-SSID";
const char* password = "your-PASSWORD";
// Button pin
const int buttonPin = 0;
int lastButtonState = HIGH;
void setup() {
// Initialize serial and button pin
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP);
// Connect to Wi-Fi
connectToWiFi();
// Connect to AWS IoT
connectToAWSIoT();
}
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi!");
}
void connectToAWSIoT() {
Serial.println("Connecting to AWS IoT...");
int status = awsIot.connect(HOST_ADDRESS, CLIENT_ID);
if (status == 0) {
Serial.println("Connected to AWS IoT!");
} else {
Serial.print("AWS IoT Connection failed with status: ");
Serial.println(status);
}
}
void loop() {
// Check the button state
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
// Button pressed, publish message to AWS IoT
Serial.println("Button pressed! Sending notification to AWS IoT...");
awsIot.publish(TOPIC, "Button Pressed");
}
lastButtonState = buttonState;
delay(100);
}