مرجع الأدوات
مجموعة الأدوات الكاملة — كود جاهز للصق في السكتش، عرض حيّ، وأحجام الخلايا S/M/L. ابنِ واجهة جهازك في دقائق.
كل بطاقة تأخذ أحد ثلاثة أحجام في الشبكة؛ لكل نوع افتراضي معقول يمكن تغييره بـ .size(). الأدوات الكبيرة (مخطط، مقياس) في L.
قيمة أو تحكّم واحد — metric، badge، toggle، LED. أربعة في الصف على الجوال.
dash.metric("Temp", &t) يحتاج بعض العرض — slider، progress، select، text.
dash.slider("PWM", &v, 0, 255) عرض كامل وأطول — مخطط، مقياس، خريطة، سجل، جدول.
dash.chart("Temp", &t).size(RSIZE_L) كود واحد يعمل على كل ESP. ومع المستشعرات الوهمية المدمجة تبني الواجهة كاملة قبل وصول أي لوحة.
عرض حيّ — كل الأدوات في واجهة الجهاز
المكتبة تترجم واجهتها الخاصة؛ وdash.translate() يترجم النصوص التي تكتبها أنت — عناوين الأدوات، أسماء الصفحات، خيارات القوائم. اختر لغة وتتبعها العناوين (العربية تنقلب إلى RTL):
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).
dash.metric("CPU", &cpu, "%") رقم كبير + شريط. عرض القيمة الأساسي.
in ESPUIdash.gauge("Voltage", &v, 0, 14, "V") مقياس دائري بمناطق. (غير موجود في ESPUI)
RisalDash onlydash.chart("Temp", &t, "°C").history(60) مخطط سلسلة زمنية. (غير موجود في ESPUI)
RisalDash onlydash.badge("State", &st) حالة ملوّنة: ok/warn/bad، متصل/غير متصل. (غير موجود في ESPUI)
RisalDash onlydash.label("Status", &statusStr) سطر حالة نصّي (قد يحتوي HTML).
in ESPUIdash.led("Link", &linkUp) نقطة مؤشّر تشغيل/إيقاف. (غير موجود في ESPUI)
RisalDash onlydash.face("Mood", &mood) عيون روبوت متحركة: 10 مشاعر + رمش، تتفاعل مع متغيّر أو وكيل ذكاء اصطناعي. (غير موجود في ESPUI)
RisalDash onlydash.cube("Orientation", &pitch, &roll, &yaw) مكعّب ثلاثي الأبعاد يدور بزوايا IMU (MPU6050/9250) — الاتجاه بلمحة. (غير موجود في ESPUI)
RisalDash onlydash.heatmap("Thermal", 32, 24) خريطة حرارية (canvas، jet colormap) — MLX90640 32x24 أو أي حقل ثنائي الأبعاد. (غير موجود في ESPUI)
RisalDash onlydash.progress("Upload", &pct) تقدّم العملية، 0-100%. (غير موجود في ESPUI)
RisalDash onlydash.table("System").row("uptime",&up) أزواج مفتاح-قيمة: معلومات النظام. (غير موجود في ESPUI)
RisalDash onlydash.log("Events", 5).print("...") سجل أحداث قابل للتمرير. (غير موجود في ESPUI)
RisalDash onlydash.image("Cam", "/snapshot.jpg") صورة / لقطة كاميرا عبر رابط.
in ESPUIdash.ai("Light turns off at 23:00") بطاقة تلميح من وكيل ذكاء اصطناعي. (ميزة RisalDash)
RisalDash onlydash.map("Track", &lat, &lon) خريطة حيّة (Leaflet، سمة داكنة) بعلامة ومسار. متتبّعات GPS، مسارات. (غير موجود في ESPUI)
RisalDash onlydash.toggle("Pump", &pump, [](bool v){...}) تشغيل/إيقاف مرحّل أو مضخة أو ضوء. عنصر الأتمتة الأساسي.
in ESPUIdash.button("Restart", [](){ ESP.restart(); }) إجراء لمرة واحدة: إعادة تشغيل، معايرة، تصفير عدّاد.
in ESPUIdash.slider("Brightness", &pwm, 0, 255) قيمة متدرّجة: السطوع، السرعة، العتبة.
in ESPUIdash.number("Setpoint", &target, 0, 100) إدخال رقمي دقيق بحدّ أدنى/أقصى وخطوة.
in ESPUIdash.text("SSID", &ssid) نص: اسم الشبكة، موضوع MQTT، تسمية الجهاز.
in ESPUIdash.textarea("Notes", ¬es) نص متعدد الأسطر: ملاحظات، JSON، إعداد صغير. (غير موجود في ESPUI)
RisalDash onlydash.password("WiFi pass", &pass) إدخال مُخفى لكلمات المرور/الرموز. (غير موجود في ESPUI)
RisalDash onlydash.select("Mode", &mode, {"Auto","Manual","Off"}) اختيار واحد من عدة خيارات — وضع.
in ESPUIdash.radio("Fan", &lvl, {"Low","Mid","High"}) اختيار حصري بأزرار. (غير موجود في ESPUI)
RisalDash onlydash.color("LED color", &rgb) منتقي ألوان لشرائط RGB/الإضاءة. (غير موجود في ESPUI)
RisalDash onlydash.time("Alarm", &alarmTime) ضبط وقت/تاريخ: منبّه، جدول.
in ESPUIdash.pad("Drive", [](int dir){...}) لوحة اتجاهات: روبوت، كاميرا، سيارة.
in ESPUIdash.joystick("Move", [](int x,int y){...}) إدخال تناظري ثنائي الأبعاد X/Y. (امتداد للوحة)
RisalDash onlydash.stepper("Count", &n, 1) زيادة/نقصان بأزرار -/+. (غير موجود في ESPUI)
RisalDash onlydash.ota("Firmware") رفع ملف/برنامج ثابت من المتصفح. (غير موجود في ESPUI)
RisalDash onlydash.terminal("Shell", handleCmd) طرفية: إخراج + إدخال أوامر عبر WebSocket. تصحيح/تحكّم من لوحة التحكم. (غير موجود في ESPUI)
RisalDash onlydash.radioBrowser("Stations", &listText, [](const String& v){ playFirst(v); }) قائمة محطات راديو إنترنت قابلة للتحرير — اسحب لإعادة الترتيب، عدّل الاسم/الرابط مباشرة، أضف/احذف. القيمة «Name | URL | Meta» لكل سطر؛ تعمل مع مشغّل ترميز ES8311. (غير موجود في ESPUI)
RisalDash onlydash.group("Power") قسم يجمع الأدوات بصريًا.
in ESPUIdash.tab("Sensors") تبويب لتقسيم لوحة تحكم كبيرة.
in ESPUIdash.separator("Settings") فاصل بعنوان بين الكتل.
in ESPUIwidget.span(2) تمديد بطاقة عبر N أعمدة من الشبكة. (غير موجود في ESPUI)
RisalDash only