RisalDash RisalDash

مرجع الأدوات

كل الأدوات، كل الأحجام

مجموعة الأدوات الكاملة — كود جاهز للصق في السكتش، عرض حيّ، وأحجام الخلايا S/M/L. ابنِ واجهة جهازك في دقائق.

ثلاثة أحجام

كل بطاقة تأخذ أحد ثلاثة أحجام في الشبكة؛ لكل نوع افتراضي معقول يمكن تغييره بـ .size(). الأدوات الكبيرة (مخطط، مقياس) في L.

Sصغير · ¼

قيمة أو تحكّم واحد — metric، badge، toggle، LED. أربعة في الصف على الجوال.

dash.metric("Temp", &t)
Mمتوسط · ½

يحتاج بعض العرض — slider، progress، select، text.

dash.slider("PWM", &v, 0, 255)
Lكبير · كامل

عرض كامل وأطول — مخطط، مقياس، خريطة، سجل، جدول.

dash.chart("Temp", &t).size(RSIZE_L)

اللوحات المدعومة

كود واحد يعمل على كل ESP. ومع المستشعرات الوهمية المدمجة تبني الواجهة كاملة قبل وصول أي لوحة.

ESP32 Xtensa · dual-core
ESP32-S3 dual-core · USB · PSRAM
ESP32-C3 RISC-V · single-core
ESP32-C6 RISC-V · Wi-Fi 6 · Zigbee
ESP8266 single-core · verified

المعرض الحيّ

عرض حيّ — كل الأدوات في واجهة الجهاز

لوحة واحدة، أربع لغات

المكتبة تترجم واجهتها الخاصة؛ وdash.translate() يترجم النصوص التي تكتبها أنت — عناوين الأدوات، أسماء الصفحات، خيارات القوائم. اختر لغة وتتبعها العناوين (العربية تنقلب إلى RTL):

9:41
RisalDash
Overview
System

CPU

42%

RAM

61%

Temperature

24.4°C

Mode

Auto

Heater

http://192.168.4.1/?lang=en

// Your strings, localized at render time. English is the source.
struct Row { const char *en, *ru, *uz, *ar; };
static const Row DICT[] = {
  {"Temperature", "Температура", "Harorat", "الحرارة"},
  {"System",      "Система",     "Tizim",   "النظام"},
  /* …one row per author string… */
};

const char *tr(const char *s, const char *lang) {
  int col = lang[0]=='r'?1 : (lang[0]=='u'&&lang[1]=='z')?2
          : lang[0]=='a'?3 : 0;
  if (col == 0) return s;              // English → as written
  for (auto &r : DICT)
    if (!strcmp(r.en, s)) return col==1?r.ru:col==2?r.uz:r.ar;
  return s;                            // unmapped → leave it
}

void setup() {
  dash.translate(tr);                  // register once — that's it
  dash.gauge("Temperature", &t, 0, 50, "C");
}

نفس الخطاف لكل نص تكتبه: عناوين الأدوات، أسماء الصفحات/المجموعات/التبويبات، نصوص الأزرار وخيارات القوائم. بلا كلفة حتى تستدعي dash.translate().

على شاشة LCD تنطبق الفكرة نفسها بحدّ واحد صادق: خط الشاشة الأساسي لاتيني فقط، لذا تعرض الشاشة en / uz أصليًّا وترجع إلى الإنجليزية لـ ru / ar — بينما تقدّم لوحة الويب هذه اللغات الأربع كاملة.

كل الأدوات + الكود

انسخ السطر الواحد للأداة التي تحتاجها. الشارة تُظهر حجم الخلية الافتراضي (S/M/L).

العرض

📊 Metric / Value S
dash.metric("CPU", &cpu, "%")

رقم كبير + شريط. عرض القيمة الأساسي.

in ESPUI
🎯 Gauge L
dash.gauge("Voltage", &v, 0, 14, "V")

مقياس دائري بمناطق. (غير موجود في ESPUI)

RisalDash only
📈 Chart / Sparkline L
dash.chart("Temp", &t, "°C").history(60)

مخطط سلسلة زمنية. (غير موجود في ESPUI)

RisalDash only
🏷️ Status badge S
dash.badge("State", &st)

حالة ملوّنة: ok/warn/bad، متصل/غير متصل. (غير موجود في ESPUI)

RisalDash only
🔖 Label S
dash.label("Status", &statusStr)

سطر حالة نصّي (قد يحتوي HTML).

in ESPUI
💡 LED indicator S
dash.led("Link", &linkUp)

نقطة مؤشّر تشغيل/إيقاف. (غير موجود في ESPUI)

RisalDash only
🤖 Robot face S
dash.face("Mood", &mood)

عيون روبوت متحركة: 10 مشاعر + رمش، تتفاعل مع متغيّر أو وكيل ذكاء اصطناعي. (غير موجود في ESPUI)

RisalDash only
🧊 3D orientation cube S
dash.cube("Orientation", &pitch, &roll, &yaw)

مكعّب ثلاثي الأبعاد يدور بزوايا IMU (MPU6050/9250) — الاتجاه بلمحة. (غير موجود في ESPUI)

RisalDash only
🌡️ Heatmap / thermal L
dash.heatmap("Thermal", 32, 24)

خريطة حرارية (canvas، jet colormap) — MLX90640 32x24 أو أي حقل ثنائي الأبعاد. (غير موجود في ESPUI)

RisalDash only
📶 Progress bar M
dash.progress("Upload", &pct)

تقدّم العملية، 0-100%. (غير موجود في ESPUI)

RisalDash only
🗂️ Key-Value table L
dash.table("System").row("uptime",&up)

أزواج مفتاح-قيمة: معلومات النظام. (غير موجود في ESPUI)

RisalDash only
📜 Log / Console L
dash.log("Events", 5).print("...")

سجل أحداث قابل للتمرير. (غير موجود في ESPUI)

RisalDash only
🖼️ Image L
dash.image("Cam", "/snapshot.jpg")

صورة / لقطة كاميرا عبر رابط.

in ESPUI
🤖 AI hint L
dash.ai("Light turns off at 23:00")

بطاقة تلميح من وكيل ذكاء اصطناعي. (ميزة RisalDash)

RisalDash only
🗺️ Mini-map / GPS L
dash.map("Track", &lat, &lon)

خريطة حيّة (Leaflet، سمة داكنة) بعلامة ومسار. متتبّعات GPS، مسارات. (غير موجود في ESPUI)

RisalDash only

التحكم

🔘 Toggle / Switcher S
dash.toggle("Pump", &pump, [](bool v){...})

تشغيل/إيقاف مرحّل أو مضخة أو ضوء. عنصر الأتمتة الأساسي.

in ESPUI
🔲 Button M
dash.button("Restart", [](){ ESP.restart(); })

إجراء لمرة واحدة: إعادة تشغيل، معايرة، تصفير عدّاد.

in ESPUI
🎚️ Slider M
dash.slider("Brightness", &pwm, 0, 255)

قيمة متدرّجة: السطوع، السرعة، العتبة.

in ESPUI
🔢 Number S
dash.number("Setpoint", &target, 0, 100)

إدخال رقمي دقيق بحدّ أدنى/أقصى وخطوة.

in ESPUI
⌨️ Text Input M
dash.text("SSID", &ssid)

نص: اسم الشبكة، موضوع MQTT، تسمية الجهاز.

in ESPUI
📝 Text Area M
dash.textarea("Notes", &notes)

نص متعدد الأسطر: ملاحظات، JSON، إعداد صغير. (غير موجود في ESPUI)

RisalDash only
🔑 Password M
dash.password("WiFi pass", &pass)

إدخال مُخفى لكلمات المرور/الرموز. (غير موجود في ESPUI)

RisalDash only
📋 Select / Dropdown M
dash.select("Mode", &mode, {"Auto","Manual","Off"})

اختيار واحد من عدة خيارات — وضع.

in ESPUI
🔘 Radio group M
dash.radio("Fan", &lvl, {"Low","Mid","High"})

اختيار حصري بأزرار. (غير موجود في ESPUI)

RisalDash only
🎨 Color picker S
dash.color("LED color", &rgb)

منتقي ألوان لشرائط RGB/الإضاءة. (غير موجود في ESPUI)

RisalDash only
🕐 Time / Date M
dash.time("Alarm", &alarmTime)

ضبط وقت/تاريخ: منبّه، جدول.

in ESPUI
🎮 D-Pad M
dash.pad("Drive", [](int dir){...})

لوحة اتجاهات: روبوت، كاميرا، سيارة.

in ESPUI
🕹️ Joystick M
dash.joystick("Move", [](int x,int y){...})

إدخال تناظري ثنائي الأبعاد X/Y. (امتداد للوحة)

RisalDash only
Stepper +/- M
dash.stepper("Count", &n, 1)

زيادة/نقصان بأزرار -/+. (غير موجود في ESPUI)

RisalDash only
📤 File / OTA upload M
dash.ota("Firmware")

رفع ملف/برنامج ثابت من المتصفح. (غير موجود في ESPUI)

RisalDash only
⌨️ Terminal / console M
dash.terminal("Shell", handleCmd)

طرفية: إخراج + إدخال أوامر عبر WebSocket. تصحيح/تحكّم من لوحة التحكم. (غير موجود في ESPUI)

RisalDash only
📻 Radio station browser M
dash.radioBrowser("Stations", &listText, [](const String& v){ playFirst(v); })

قائمة محطات راديو إنترنت قابلة للتحرير — اسحب لإعادة الترتيب، عدّل الاسم/الرابط مباشرة، أضف/احذف. القيمة «Name | URL | Meta» لكل سطر؛ تعمل مع مشغّل ترميز ES8311. (غير موجود في ESPUI)

RisalDash only

التخطيط

🧩 Group / Panel
dash.group("Power")

قسم يجمع الأدوات بصريًا.

in ESPUI
📑 Tab
dash.tab("Sensors")

تبويب لتقسيم لوحة تحكم كبيرة.

in ESPUI
Separator
dash.separator("Settings")

فاصل بعنوان بين الكتل.

in ESPUI
↔️ Span / Width
widget.span(2)

تمديد بطاقة عبر N أعمدة من الشبكة. (غير موجود في ESPUI)

RisalDash only