#include <WiFi.h>
#include <HTTPClient.h>
#include "DHT.h"
// بيانات الاتصال
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// UID المستخدم (يمكن تغييره لأي مستخدم آخر)
String userUID = "ejo5dDmXDHXWCNVHCcxjMhTLnC32";
// رابط قاعدة Firebase بدون البيانات النهائية
String firebaseBaseUrl = "https://icool-5e016-default-rtdb.firebaseio.com/users/";
// إعداد حساس DHT22
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
// الاتصال بالواي فاي
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n✅ Connected! iCool System - Server Sync Mode.");
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("❌ DHT Sensor Error!");
return;
}
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
// إنشاء رابط كامل حسب UID المستخدم
String firebaseUrl = firebaseBaseUrl + userUID + "/sensors.json";
http.begin(firebaseUrl);
http.addHeader("Content-Type", "application/json");
// إنشاء JSON للبيانات مع دعم الوقت الحقيقي
String jsonData = "{";
jsonData += "\"temperature\": " + String(t) + ",";
jsonData += "\"humidity\": " + String(h) + ",";
jsonData += "\"pressure\": null,"; // جاهز للحساسات المستقبلية
jsonData += "\"status\": \"online\",";
jsonData += "\"last_updated\": {\".sv\": \"timestamp\"}";
jsonData += "}";
Serial.print("📤 Syncing Live Data with Server Time... ");
int httpResponseCode = http.sendRequest("PATCH", jsonData);
if (httpResponseCode > 0) {
Serial.println("✅ Success! Code: " + String(httpResponseCode));
} else {
Serial.println("❌ Error: " + String(httpResponseCode));
}
http.end();
}
// دلاي ثانية واحدة للتفاعل اللحظي
delay(1000);
}