Skip to content

h-19gg/Mywebsite

Repository files navigation

Bee Hive Dashboard (Next.js + Tailwind + API)

لوحة تحكم لمراقبة خلايا النحل (حرارة، رطوبة، وزن، وتنبيه) مع واجهات API لتغذية البيانات من ESP32.

تشغيل محليًا

npm install
npm run dev
# افتح http://localhost:3000

المتغيرات البيئية

انسخ .env.example إلى .env.local وحدد مفتاح API لحماية واجهة التحديث (اختياري لكنه مُستحسن):

HIVE_API_KEY=ضع_مفتاحك_هنا

إذا تم ضبط HIVE_API_KEY، يجب أن ترسل الأجهزة الرأس x-api-key بنفس القيمة.

النشر على Vercel

  1. ارفع الكود إلى GitHub.
  2. أنشئ مشروعًا في Vercel واختر المستودع.
  3. أضف متغير البيئة HIVE_API_KEY من إعدادات المشروع (Project Settings → Environment Variables).
  4. Deploy.

بيانات الذاكرة المؤقتة في واجهات API غير مستمرة على بيئات Serverless. استخدم قاعدة بيانات حقيقية للإنتاج (Vercel KV/Supabase/PlanetScale).

ESP32 مثال (Arduino)

احرص على تثبيت مكتبة 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) بدلاً من التخزين داخل الذاكرة.
  • يمكنك إنشاء صفحة إدارة متقدمة لاحقًا مع رسوم بيانية وإشعارات فورية.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors