#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include <NewPing.h>
const char * ssid = "Wokwi-GUEST";
const char * password = "";
const char* host = "https://hladinomer.eu/data.php"; // Full URL for HTTPClient
#define pinTrigger 22
#define pinEcho 23
#define uS_TO_S_FACTOR 1000000
#define TIME_TO_SLEEP 300
RTC_DATA_ATTR unsigned long BootCount;
NewPing sonar(pinTrigger, pinEcho);
// Root CA cert - ISRG Root X1
const static char* test_root_ca PROGMEM = \
"-----BEGIN CERTIFICATE-----\n" \
"MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\n" \
"TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" \
"cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\n" \
"WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\n" \
"ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\n" \
"MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\n" \
"h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n" \
"0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\n" \
"A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\n" \
"T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\n" \
"B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\n" \
"B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\n" \
"KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\n" \
"OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\n" \
"jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\n" \
"qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\n" \
"rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n" \
"HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\n" \
"hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\n" \
"ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n" \
"3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\n" \
"NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\n" \
"ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\n" \
"TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\n" \
"jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\n" \
"oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n" \
"4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\n" \
"mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\n" \
"emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n" \
"-----END CERTIFICATE-----\n";
void setup() {
Serial.begin(115200);
Serial.println("=== ESP32 System Info ===");
// Arduino Core version
Serial.printf("Arduino Core version: %d.%d.%d\n",
ESP_ARDUINO_VERSION_MAJOR,
ESP_ARDUINO_VERSION_MINOR,
ESP_ARDUINO_VERSION_PATCH);
// ESP-IDF (SDK) version
Serial.print("ESP-IDF version: ");
Serial.println(esp_get_idf_version());
Serial.println("Set distance via HC-SR04 sensor, you have 5 seconds");
delay(5000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println(F("\nWiFi Connected"));
// 1. Measure Distance
int vzdialenost = 0;
int validSamples = 0;
for (int i = 0; i < 10; i++) {
int reading = sonar.ping_cm();
if (reading > 0) {
vzdialenost += reading;
validSamples++;
}
delay(50);
}
if (validSamples > 0) {
vzdialenost = vzdialenost / validSamples;
Serial.printf("Average Distance: %d cm\n", vzdialenost);
// 2. Prepare HTTPS Request
WiFiClientSecure *client = new WiFiClientSecure;
if(client) {
client->setCACert(test_root_ca);
// Optional: if memory is still tight, uncomment the next line:
// client->setBufferSizes(1024, 1024);
HTTPClient https;
Serial.println(F("[HTTPS] Connecting..."));
if (https.begin(*client, host)) {
https.addHeader("Content-Type", "application/x-www-form-urlencoded");
String httpRequestData = "hodnota=" + String(vzdialenost) + "&token=123456789";
int httpResponseCode = https.POST(httpRequestData);
if (httpResponseCode > 0) {
Serial.printf("[HTTPS] Response code: %d\n", httpResponseCode);
// String payload = https.getString(); // Uncomment if you need to see server response
} else {
Serial.printf("[HTTPS] POST failed, error: %s\n", https.errorToString(httpResponseCode).c_str());
}
https.end();
} else {
Serial.println(F("[HTTPS] Unable to connect"));
}
delete client; // Free memory
}
} else {
Serial.println(F("Error: Sensor out of range or no reading."));
}
// 3. Go to Sleep
BootCount++;
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println(F("Entering Deep Sleep..."));
esp_deep_sleep_start();
}
void loop() {}Start simulation, click on HC-SR04 sensor and set distance within 5 seconds.