#include <WiFi.h>
#include <ArduinoHttpClient.h>
#define trigpin 4
#define echopin 2
float duration;
float distance;
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASS ""
#define TB_SERVER "eu.thingsboard.cloud"
#define TOKEN "jOT8TUDSWYezHShrXER8"
WiFiClient wifiClient;
HttpClient http(wifiClient, TB_SERVER, 80);
bool sendTelemetryHTTP(float value) {
http.stop(); // Close previous connection, if any
String url = "/api/v1/" + String(TOKEN) + "/telemetry";
http.beginRequest();
http.post(url, "application/json", "{\"UltrasonicData\":" + String(value) + "}");
http.endRequest();
int httpCode = http.responseStatusCode();
if (httpCode > 0) {
Serial.print("HTTP POST Success. Response code: ");
Serial.println(httpCode);
return true;
} else {
Serial.print("HTTP POST Error. Response code: ");
Serial.println(httpCode);
return false;
}
}
void initWifi();
void setup() {
Serial.begin(9600);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
initWifi();
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
initWifi();
}
digitalWrite(trigpin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin, LOW);
duration = pulseIn(echopin, HIGH);
distance = (duration / 58.2);
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
// Send telemetry data using HTTP
if (sendTelemetryHTTP(distance)) {
Serial.print("Sending Ultrasonic Data: ");
Serial.print(distance);
Serial.println(" cm");
Serial.println("Telemetry data sent successfully");
} else {
Serial.println("Failed to send telemetry data. Try again...");
}
delay(1000);
}
void initWifi() {
Serial.println("Connect WiFi");
WiFi.begin(WIFI_AP, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("CONNECTED");
}