#include <Arduino.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <math.h>
#include <WiFi.h>
#include <time.h>
// WiFi SimulatorCredentials
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define ENDPOINT_URL "https://holaqueso.free.beeceptor.com/api/data-records/"
// HTTP Client
HTTPClient httpClient;
// HTTP Header Parameter and Value
#define CONTENT_TYPE_HEADER "Content-Type"
#define APPLICATION_JSON "application/json"
// Device Identification
#define DEVICE_ID "HC2947"
#define HRS_PIN 33
// HTTP Header Parameter and Value
#define CONTENT_TYPE_HEADER "Content-Type"
#define APPLICATION_JSON "application/json"
// Display Configuration
//String sensorID = "HC001";
char timeStringBuffer[20];
void setup() {
// Setup code to run once
Serial.begin(115200);
pinMode(HRS_PIN, INPUT);
// WiFi setup
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
delay(500);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Perform connection
httpClient.begin(ENDPOINT_URL);
int httpResponseCode = httpClient.GET();
// Timer Client Configuration
configTime(0, 0, "pool.ntp.org");
}
int HRS_ANALOG_Y = analogRead(HRS_PIN);
int HRS_scaledValue_Y = map(HRS_ANALOG_Y, 0, 4095, 0, 200);
void loop() {
// Simulated sensor values
int HRS_ANALOG_X = analogRead(HRS_PIN);
int HRS_scaledValue = map(HRS_ANALOG_X, 0, 4095, 0, 200);
int heartRate = HRS_scaledValue;
if (HRS_scaledValue != HRS_scaledValue_Y) {
int heartRate = HRS_scaledValue;
int sensorValue = analogRead(HRS_PIN);
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Time Error");
return;
}
strftime(timeStringBuffer, sizeof(timeStringBuffer), "%d/%m/%Y %H:%M", &timeinfo);
// Build a Data Record
JsonDocument dataRecord;
dataRecord["deviceId"] = DEVICE_ID;
dataRecord["hearRate"] = heartRate;
dataRecord["time"] = String(timeStringBuffer);
// Serialize Data Record
String dataRecordResource;
serializeJson(dataRecord, dataRecordResource);
// Perform POST with Data Record
httpClient.addHeader(CONTENT_TYPE_HEADER, APPLICATION_JSON);
httpClient.POST(dataRecordResource);
// Check Response
JsonDocument response;
String responseResource;
responseResource = httpClient.getString();
deserializeJson(response, responseResource);
serializeJsonPretty(response, Serial);
httpClient.end();
HRS_scaledValue_Y = HRS_scaledValue;
}
else {
}
delay(1000); // Send data every minute
}