#include <Arduino.h>
#include <ArduinoJson.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include "certs.h"
WiFiClientSecure secureClient = WiFiClientSecure();
PubSubClient mqttClient(secureClient);
void connectToWiFi() {
Serial.print("Connecting to ");
Serial.println(SSID);
WiFi.begin(SSID, PWD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.print("Connected - ");
}
void connectToAWS() {
mqttClient.setServer(AWS_END_POINT, 8883);
secureClient.setCACert(AWS_PUBLIC_CERT);
secureClient.setCertificate(AWS_DEVICE_CERT);
secureClient.setPrivateKey(AWS_PRIVATE_KEY);
Serial.println("Connecting to MQTT....");
mqttClient.connect(DEVICE_NAME);
while (!mqttClient.connected()) {
Serial.println("Connecting to MQTT....Retry");
mqttClient.connect(DEVICE_NAME);
delay(5000);
}
Serial.println("MQTT Connected");
}
void setup() {
Serial.begin(9600);
connectToWiFi();
connectToAWS();
}
void loop(){
if(WiFi.status() != WL_CONNECTED) {
Serial.print("Wifi not connected...");
delay(500);
// we can even make the ESP32 to sleep
}
else{
delay(3000);
float h=30;
float t=35;
if (isnan(h) || isnan(t) ) // Check if any reads failed and exit early (to try again).
{
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
StaticJsonDocument<128> jsonDoc;
JsonObject eventDoc = jsonDoc.createNestedObject("event");
eventDoc["temp"] = t;
eventDoc["hum"] = h;
char jsonBuffer[128];
serializeJson(eventDoc, jsonBuffer);
mqttClient.publish("esp32/pub", jsonBuffer);
delay(10000);
}
}