#include <Arduino.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <WiFi.h>
// WiFi Credentials
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// Endpoint URL
#define ENDPOINT_URL "https://iot-edge-sample-wv71.free.beeceptor.com/api/v1/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 "HC2971"
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("IoT Connectivity Sample");
// WiFi Setup
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println("Connected: ");
Serial.println(WiFi.localIP());
// Post Request
// Start HTTP Request
httpClient.begin(ENDPOINT_URL);
// Data Record Build
JsonDocument dataRecord;
dataRecord["deviceId"] = DEVICE_ID;
dataRecord["distance"] = 250;
// Data Record Serialization
String dataRecordResource;
serializeJson(dataRecord, dataRecordResource);
// Data Record Posting
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);
// Manipulate Response Data
Serial.println();
Serial.print("Distance: ");
Serial.println(response["distance"].as<long>());
// End HTTP Request
httpClient.end();
// Get All Request Sample
// Start HTTP Request
httpClient.begin(ENDPOINT_URL);
// Get Data Records
// Get Response HTTP Status Code
int httpResponseCode = httpClient.GET();
Serial.print("Response Code: ");
Serial.println(httpResponseCode);
// Fetch Data
responseResource = httpClient.getString();
deserializeJson(response, responseResource);
serializeJsonPretty(response, Serial);
// Manipulate Data Records
Serial.println("About to show IDs");
JsonArray dataRecords = response.as<JsonArray>();
if(dataRecords != NULL) {
for(JsonVariant dataRecord : dataRecords) {
Serial.print("ID: ");
Serial.println(dataRecord["id"].as<String>());
}
}
// End this Request
httpClient.end();
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}