لوحة تحكم لمراقبة خلايا النحل (حرارة، رطوبة، وزن، وتنبيه) مع واجهات API لتغذية البيانات من ESP32.
npm install
npm run dev
# افتح http://localhost:3000انسخ .env.example إلى .env.local وحدد مفتاح API لحماية واجهة التحديث (اختياري لكنه مُستحسن):
HIVE_API_KEY=ضع_مفتاحك_هنا
إذا تم ضبط
HIVE_API_KEY، يجب أن ترسل الأجهزة الرأسx-api-keyبنفس القيمة.
- ارفع الكود إلى GitHub.
- أنشئ مشروعًا في Vercel واختر المستودع.
- أضف متغير البيئة
HIVE_API_KEYمن إعدادات المشروع (Project Settings → Environment Variables). - Deploy.
بيانات الذاكرة المؤقتة في واجهات API غير مستمرة على بيئات Serverless. استخدم قاعدة بيانات حقيقية للإنتاج (Vercel KV/Supabase/PlanetScale).
احرص على تثبيت مكتبة DHT (Adafruit DHT) وتهيئة شبكة Wi-Fi.
#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASS";
const char* apiKey = "ضع_نفس_مفتاح_HIVE_API_KEY_إن_وجد";
const char* serverURL = "https://YOUR-VERCEL-URL.vercel.app/api/updateHive";
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println("WiFi connected");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
float weight = 23.5; // TODO: قراءة من HX711
if (!isnan(temp) && !isnan(hum)) {
HTTPClient http;
http.begin(serverURL);
http.addHeader("Content-Type", "application/json");
if (strlen(apiKey) > 0) http.addHeader("x-api-key", apiKey);
String body = String("{") +
"\"username\":\"admin\"," +
"\"hive\":\"Hive 1\"," +
"\"temp\":" + String(temp) + "," +
"\"humidity\":" + String(hum) + "," +
"\"weight\":" + String(weight) + "," +
"\"alert\":false" +
"}";
int code = http.POST(body);
Serial.printf("POST code: %d\n", code);
String resp = http.getString();
Serial.println(resp);
http.end();
}
}
delay(10000);
}- لحفظ البيانات بشكل دائم، استخدم قاعدة بيانات (مثال: Vercel KV أو Supabase) بدلاً من التخزين داخل الذاكرة.
- يمكنك إنشاء صفحة إدارة متقدمة لاحقًا مع رسوم بيانية وإشعارات فورية.