#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
// إعداد الشبكة
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// رابط سيرفر البايثون (تعدله إذا تغير IP جهازك)
const char* serverName = "http://192.168.8.234:5000/data";
// إعداد الحساسات
#define DHTPIN 25
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define TRIG_PIN 15
#define ECHO_PIN 2
#define PIR_PIN 19
#define PIR_LED 18
#define LED_GREEN 14
#define LED_YELLOW 12
#define LED_RED 13
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(PIR_PIN, INPUT);
pinMode(PIR_LED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_RED, OUTPUT);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
sendSensorData();
} else {
Serial.println("WiFi Disconnected ❌");
}
delay(5000); // إرسال كل 5 ثواني
}
void sendSensorData() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
bool motionDetected = digitalRead(PIR_PIN);
// قراءة المسافة من الحساس
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
if (isnan(temperature) || isnan(humidity)) {
Serial.println("❌ Failed to read from DHT sensor!");
return;
}
// طباعة القيم
Serial.println("========================");
Serial.printf("Temperature: %.1f°C\n", temperature);
Serial.printf("Humidity : %.1f%%\n", humidity);
Serial.printf("Motion : %d\n", motionDetected);
Serial.printf("Distance : %.1f cm\n", distance);
Serial.println("========================");
// تشكيل بيانات JSON
String jsonData = "{";
jsonData += "\"temperature\":" + String(temperature, 1) + ",";
jsonData += "\"humidity\":" + String(humidity, 1) + ",";
jsonData += "\"motion\":" + String(motionDetected) + ",";
jsonData += "\"distance\":" + String(distance, 1);
jsonData += "}";
Serial.println("Sending JSON data to server:");
Serial.println(jsonData);
// إرسال البيانات إلى السيرفر
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(jsonData);
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("✅ Server Response: " + response);
} else {
Serial.print("❌ Error sending data. HTTP code: ");
Serial.println(httpResponseCode);
}
http.end();
}