#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
// š WiFi credentials
const char* ssid = "root";
const char* password = "root";
// š AWS IoT Endpoint
const char* aws_endpoint = "a2p5fn0oke3izv-ats.iot.ap-south-1.amazonaws.com";
// MQTT topic
const char* topic = "cleanroom/data";
// š Root CA (PASTE HERE)
static const char* root_ca PROGMEM = R"EOF(
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs7YIsOKAv+5d7JQknuvh
139MXsUuaMOUvsMOwdGd28nB2FEabXUoIUvkYrrdzpotDYOr9cP1H9VB2wE08W1j
QK4haEwa5pA1FyPcDdSaVs83ZCBHJMAqizQKx9q2ByL1zPg5PtTCSmubaSJxEPvd
P2TC9E+lT/IPU+sbZfVUPNTgstAYUxVwUsOnu6g9R20rOuu4Xt31C4RBXKBPRwWz
zYpoHKrFZpu9rUodp3fqNSiBlABLW37QVTlcKh09HVuUvvcwvdG+QeZ4O60XYlz+
BRiESHD8BqNUCBxKSmb3uZDCtLRXMMWbihkjwu5vBMgOwfvCZ7mHOtox8uZDVg+A
8wIDAQAB
-----END PUBLIC KEY-----
)EOF";
// š Device Certificate (PASTE HERE)
static const char* device_cert PROGMEM = R"EOF(
-----BEGIN CERTIFICATE-----
MIIDWTCCAkGgAwIBAgIUQkAaF4f6fjkjGiFeE435+41KJyYwDQYJKoZIhvcNAQEL
BQAwTTFLMEkGA1UECwxCQW1hem9uIFdlYiBTZXJ2aWNlcyBPPUFtYXpvbi5jb20g
SW5jLiBMPVNlYXR0bGUgU1Q9V2FzaGluZ3RvbiBDPVVTMB4XDTI2MDQxNzA5NTcw
N1oXDTQ5MTIzMTIzNTk1OVowHjEcMBoGA1UEAwwTQVdTIElvVCBDZXJ0aWZpY2F0
ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALO2CLDigL/uXeyUJJ7r
4dd/TF7FLmjDlL7DDsHRndvJwdhRGm11KCFL5GK63c6aLQ2Dq/XD9R/VQdsBNPFt
Y0CuIWhMGuaQNRcj3A3UmlbPN2QgRyTAKos0Csfatgci9cz4OT7Uwkprm2kicRD7
3T9kwvRPpU/yD1PrG2X1VDzU4LLQGFMVcFLDp7uoPUdtKzrruF7d9QuEQVygT0cF
s82KaByqxWabva1KHad36jUogZQAS1t+0FU5XCodPR1blL73ML3RvkHmeDutF2Jc
/gUYhEhw/AajVAgcSkpm97mQwrS0VzDFm4oZI8LubwTIDsH7wme5hzraMfLmQ1YP
gPMCAwEAAaNgMF4wHwYDVR0jBBgwFoAUQcpvPevFVGesFnBr16bhkgkdvaswHQYD
VR0OBBYEFI1fe857vHCf6vYvF4uWKcQG8KIpMAwGA1UdEwEB/wQCMAAwDgYDVR0P
AQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBAQCXPZwDCUcLcNGx3DXes12ce8ec
gKGFVfBL5cbrZAn/12tZy791DQqI61z5FtsmCK7OBXRdmzxUUDHbQW+X/lQuIEMc
JwLCUummwtpLJcGQYPLdaDXhLctcdslPnlbacqDkEsNBkt2erf4NAO/jbU4HTfKf
pIiLJnGzCICLal9etpOxODudZ7MtIavidpNsH8U/Qe/6XHWqMqFB9lMjgvYKcias
6LxOr4fcFd9EHTTrLndjJ+gytboL9PfYwknRqdci36mYgHyWuBAZ0eeLR7qXkma+
ul521T+N1bhyVBzpKiKPa1QF9tZYJ/+d+jM4CSl6nC/7pgHpQtoeZtVAI0h8
-----END CERTIFICATE-----
)EOF";
// š Private Key (PASTE HERE)
static const char* private_key PROGMEM = R"EOF(
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAs7YIsOKAv+5d7JQknuvh139MXsUuaMOUvsMOwdGd28nB2FEa
bXUoIUvkYrrdzpotDYOr9cP1H9VB2wE08W1jQK4haEwa5pA1FyPcDdSaVs83ZCBH
JMAqizQKx9q2ByL1zPg5PtTCSmubaSJxEPvdP2TC9E+lT/IPU+sbZfVUPNTgstAY
UxVwUsOnu6g9R20rOuu4Xt31C4RBXKBPRwWzzYpoHKrFZpu9rUodp3fqNSiBlABL
W37QVTlcKh09HVuUvvcwvdG+QeZ4O60XYlz+BRiESHD8BqNUCBxKSmb3uZDCtLRX
MMWbihkjwu5vBMgOwfvCZ7mHOtox8uZDVg+A8wIDAQABAoIBAHHD+xx/RyI5tBvg
bI5upTnWzHHyQb7wkWlx8hWgrV5GCwD11tUUJaNud9ZIlcIEuCCmCmY69yJ/zoDl
8q4joYGAuoVcKGttPy629MeMn2f1Jguso10Qid41w91hB3rdFt37BcJQze5u0KNt
ukYWK6nGD+S5xt0lT67AV0fkVr9qtF3+TpzsrMuuTBW5yrAInz6viyxQqHIlwWWY
l5KuIR8WPUqSE9gVxAgA0Xp35vvGsUk1oWD7yJeFRPP26OWM1rFs0j4YrP2+VvV9
+4xCED2XSLrD40iDxY4L5NABqv/GHeW4/6NnwXgAx0m0gYH/4nXTiIYCZhz3H0+Q
vTGckwECgYEA3Zc6aapEVhhZL/MzS79vwe5jynU0Jl6txQtL+hKjHKez3ZrBcxRe
ljScX6seR+VA7V2Rz5UZqEwBRTYX2v6EzeUOfq+rlYZhHV/GJF8+45YkJ2zLdW/a
x6Mf1mpMiyzs7UNxRwVZVgpLsJ0XkyQMqizdqW0kDQkx0b8sVRLvCrkCgYEAz538
rQKwEUqJ6fxZ479bAmFFbM2NPukr3ObW93FdCcmUz5ySWkFlXDSgKHFiBFNf2NQn
urjjEsoL+vTWHLyrKZbZ9mfsbxXin4yxPDRls8JVLN0l+2fYKMRyUMD20HPaPzSA
iYcYUrrtJUk1qqvnfxrbK62bn1HC25HpcEWI4wsCgYASl8zb7uB7BOH+5v4n3fFH
qXQQGdN9YLZd8Tu3yPaMwfmSn5iZylzBZ7qzQE1zJOZUxGQmsdEMUQxOPWK1CmQk
TpLvyFeyXSsq5s1eYeuJ9yAjerp7qR4HYEWcnSC9END0e5M2rVk4ofaF5DiFLSIu
6ULUI4dB3MKkYdEbdlI+aQKBgDD7jy+qYKvTsDIaLYMEFI69MEn5PQfIr2aQt8rt
Xgv/GTLaN9U/dJCKgfbIuV1X5lcbxrvQ/xHhxW3R8eoZwTAwvP/biPa0bSFDalVP
72a3xKyvCFUGLQOBRY8z14darfUXh/PqgZyTKXwQh67am+VrCqaFcR/nhFeVV0P7
w839AoGBAIv81Uj42lkbdSQfAY9ZmXMkXoYyRawb/vYqNV329w0ghOPRdNjsZK2/
IYz71fTH7o77runv/efnO0pgK67Og9bo9LqmAdo8CJq4fld6TgJCxIIh66dRkRAg
ndozQivyc78yg+vfveAYxORPDRqykhLPbPdSaOEOFtwrJ3Gsuz7o
-----END RSA PRIVATE KEY-----
)EOF";
// Secure client
WiFiClientSecure net = WiFiClientSecure();
PubSubClient client(net);
void connectAWS() {
net.setCACert(root_ca);
net.setCertificate(device_cert);
net.setPrivateKey(private_key);
client.setServer(aws_endpoint, 8883);
Serial.println("Connecting to AWS IoT...");
while (!client.connected()) {
if (client.connect("ESP32_Client")) {
Serial.println("ā
Connected to AWS IoT");
} else {
Serial.print("ā Failed, retrying...");
delay(2000);
}
}
}
void setup() {
Serial.begin(115200);
// Connect WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nā
WiFi connected");
connectAWS();
}
void loop() {
client.loop();
// Dummy sensor values
float temperature = random(200, 350) / 10.0;
float humidity = random(300, 800) / 10.0;
float pressure = random(100, 250) / 10.0;
int particles = random(100, 500);
String payload = "{";
payload += "\"temperature\":" + String(temperature) + ",";
payload += "\"humidity\":" + String(humidity) + ",";
payload += "\"pressure\":" + String(pressure) + ",";
payload += "\"particles\":" + String(particles);
payload += "}";
client.publish(topic, payload.c_str());
Serial.println("š¤ Sent: " + payload);
delay(5000);
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4