This is an old revision of the document!


#include <Arduino.h> #include <WiFi.h> #include <HTTPClient.h>

==== TODO: fill these in for the lab ==== const char* WIFI_SSID = “LAB_WIFI_SSID”; const char* WIFI_PASSWORD = “LAB_WIFI_PASSWORD”; const char* SERVER_URL = “http://192.168.1.100:8080/ingest”; replace with your server IP ========================================= const char* DEVICE_ID = “sparrow-01”; const char* API_KEY = “SUPER_SECRET_API_KEY_123”; intentionally bad design

void connectToWiFi() {

Serial.printf("Connecting to WiFi SSID: %s\n", WIFI_SSID);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

uint8_t retries = 0;

while (WiFi.status() != WL_CONNECTED && retries < 30) {
  delay(500);
  Serial.print(".");
  retries++;
}

if (WiFi.status() == WL_CONNECTED) {

  Serial.println("\nWiFi connected!");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
} else {
  Serial.println("\nFailed to connect to WiFi");
}

}

void setup() {

Serial.begin(115200);
delay(2000); // give serial time to come up

connectToWiFi();

randomSeed(esp_random());

}

void loop() {

if (WiFi.status() != WL_CONNECTED) {
  Serial.println("WiFi disconnected, reconnecting...");
  connectToWiFi();
}

if (WiFi.status() == WL_CONNECTED) {

  // Fake sensor data
  float tempC     = 20.0 + (random(0, 1000) / 100.0f);  // 20.00 to 29.99
  float humidity  = 40.0 + (random(0, 1000) / 50.0f);   // 40.0 to 59.9
  int   battery   = random(60, 100);                    // 60-99 %

Build JSON manually to avoid extra libraries String payload = ”{”; payload += “\”device_id\”:\”” + String(DEVICE_ID) + “\”,”; payload += “\”temp_c\”:” + String(tempC, 2) + ”,”; payload += “\”humidity\”:” + String(humidity, 1) + ”,”; payload += “\”battery\”:” + String(battery); payload += ”}”; Serial.println(“Sending HTTP POST to server…”); Serial.println(“URL: ” + String(SERVER_URL)); Serial.println(“Payload: ” + payload); Serial.println(“API key (also sent!): ” + String(API_KEY)); HTTPClient http; http.begin(SERVER_URL); HTTP, not HTTPS

  http.addHeader("Content-Type", "application/json");
  http.addHeader("X-API-Key", API_KEY);         // Intentionally leaked secret

int httpCode = http.POST(payload);

  String response = http.getString();

Serial.printf(“HTTP response code: %d\n”, httpCode);

  Serial.println("Response body: " + response);
  Serial.println("-----------------------------");

http.end();

}

delay(5000); send every 5 seconds }

iothings/laboratoare/2025_code/lab8_1.1763203742.txt.gz · Last modified: 2025/11/15 12:49 by dan.tudose
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0