// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 #include "secrets.h" #include #include #include #include "WiFi.h" #include "ESPDateTime.h" // The MQTT topics that this device should publish/subscribe #define AWS_IOT_PUBLISH_TOPIC "esp32/pub" #define AWS_IOT_SUBSCRIBE_TOPIC "esp32/sub" WiFiClientSecure net = WiFiClientSecure(); MQTTClient client = MQTTClient(256); void connectAWS() { WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting to Wi-Fi"); while (WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } // Configure WiFiClientSecure to use the AWS IoT device credentials net.setCACert(AWS_CERT_CA); net.setCertificate(AWS_CERT_CRT); net.setPrivateKey(AWS_CERT_PRIVATE); // Connect to the MQTT broker on the AWS endpoint we defined earlier client.begin(AWS_IOT_ENDPOINT, 8883, net); // Create a message handler client.onMessage(messageHandler); Serial.print("Connecting to AWS IOT"); while (!client.connect(THINGNAME)) { Serial.print("."); delay(100); } if(!client.connected()){ Serial.println("AWS IoT Timeout!"); return; } // Subscribe to a topic client.subscribe(AWS_IOT_SUBSCRIBE_TOPIC); Serial.println("AWS IoT Connected!"); } void publishMessage() { StaticJsonDocument<200> doc; DateTime.begin(); doc["time"] = DateTime.toISOString().c_str(); doc["box_close"] = digitalRead(26); doc["Customer_Phone_Number"] = ; // Example: +1234567890 char jsonBuffer[512]; serializeJson(doc, jsonBuffer); // print to client client.publish(AWS_IOT_PUBLISH_TOPIC, jsonBuffer); } void messageHandler(String &topic, String &payload) { Serial.println("incoming: " + topic + " - " + payload); // StaticJsonDocument<200> doc; // deserializeJson(doc, payload); // const char* message = doc["message"]; } void setup() { Serial.begin(9600); pinMode(26, INPUT); connectAWS(); } uint16_t digitalRead_value = 0; void loop() { publishMessage(); digitalRead_value = digitalRead(26); client.loop(); Serial.println("Pin Digital Values"); Serial.println(digitalRead_value); delay(60000); }