Vidjetlar roʻyxati
Toʻliq vidjetlar toʻplami — sketchga qoʻyiladigan kod, jonli render va S/M/L katak oʻlchamlari. Gadjet UI'sini bir necha daqiqada tuzing.
Har bir karta katakka uch oʻlchamdan birida joylashadi; har turda mantiqiy default bor, .size() bilan oʻzgartiriladi. Katta vidjetlar (chart, gauge) — L da.
Bitta qiymat yoki boshqaruv — metric, badge, toggle, LED. Mobilda 4 tadan.
dash.metric("Temp", &t) Biroz kenglik kerak — slider, progress, select, text.
dash.slider("PWM", &v, 0, 255) Toʻliq kenglik, balandroq — chart, gauge, xarita, log, jadval.
dash.chart("Temp", &t).size(RSIZE_L) Bitta kod — har qanday ESP'da. Oʻrnatilgan soxta sensorlar bilan butun UI'ni plata kelishidan oldin tuzasiz.
jonli render — barcha vidjetlar qurilma UI'sida
Kutubxona oʻz chromeini oʻzi tarjima qiladi; dash.translate() esa siz yozgan matnlarni — vidjet sarlavhalari, sahifa nomlari, select variantlari. Tilni tanlang — sarlavhalar ham almashadi (arabcha RTLga oʻtadi):
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");
} Bitta hook barcha muallif matnlari uchun: vidjet sarlavhalari, sahifa/guruh/tab nomlari, tugma yozuvlari va select variantlari. dash.translate() chaqirilmaguncha xarajatsiz.
LCD panelida xuddi shu gʻoya bitta halol cheklov bilan: standart shrift faqat lotin, shuning uchun ekran en / uz ni tabiiy koʻrsatadi va ru / ar uchun inglizchaga qaytadi — bu veb-dashboard esa toʻrttasini toʻliq beradi.
Kerakli vidjetning bitta qatorini nusxalang. Chip default katak oʻlchamini koʻrsatadi (S/M/L).
dash.metric("CPU", &cpu, "%") Katta raqam + panel. Asosiy qiymat koʻrsatkichi.
in ESPUIdash.gauge("Voltage", &v, 0, 14, "V") Zonali doiraviy koʻrsatkich. (ESPUI'da yoʻq)
RisalDash onlydash.chart("Temp", &t, "°C").history(60) Vaqt qatori grafigi. (ESPUI'da yoʻq)
RisalDash onlydash.badge("State", &st) Rangli holat: ok/warn/bad, onlayn/oflayn. (ESPUI'da yoʻq)
RisalDash onlydash.label("Status", &statusStr) Matnli holat qatori (HTML boʻlishi mumkin).
in ESPUIdash.led("Link", &linkUp) Yoniq/oʻchiq indikator nuqtasi. (ESPUI'da yoʻq)
RisalDash onlydash.face("Mood", &mood) Animatsion robot koʻzlari: 10 emotsiya + pirpirash, oʻzgaruvchi yoki AI agentga javob beradi. (ESPUI'da yoʻq)
RisalDash onlydash.cube("Orientation", &pitch, &roll, &yaw) IMU burchaklari bilan aylanadigan 3D kub (MPU6050/9250) — yoʻnalish bir qarashda. (ESPUI'da yoʻq)
RisalDash onlydash.heatmap("Thermal", 32, 24) Issiqlik xaritasi (canvas, jet colormap) — MLX90640 32x24 yoki istalgan 2D maydon. (ESPUI'da yoʻq)
RisalDash onlydash.progress("Upload", &pct) Amal jarayoni, 0-100%. (ESPUI'da yoʻq)
RisalDash onlydash.table("System").row("uptime",&up) Kalit-qiymat juftlari: tizim maʼlumoti. (ESPUI'da yoʻq)
RisalDash onlydash.log("Events", 5).print("...") Aylantiriladigan hodisalar jurnali. (ESPUI'da yoʻq)
RisalDash onlydash.image("Cam", "/snapshot.jpg") URL orqali rasm / kamera surati.
in ESPUIdash.ai("Light turns off at 23:00") AI agentdan maslahat kartasi. (RisalDash xususiyati)
RisalDash onlydash.map("Track", &lat, &lon) Jonli xarita (Leaflet, qorongʻi tema) marker va iz bilan. GPS trekerlar, marshrutlar. (ESPUI'da yoʻq)
RisalDash onlydash.toggle("Pump", &pump, [](bool v){...}) Rele, nasos yoki chiroqni yoqish/oʻchirish. Asosiy avtomatlashtirish boshqaruvi.
in ESPUIdash.button("Restart", [](){ ESP.restart(); }) Bir martalik amal: qayta ishga tushirish, kalibrlash, hisoblagichni nolga tushirish.
in ESPUIdash.slider("Brightness", &pwm, 0, 255) Silliq qiymat: yorqinlik, tezlik, chegara.
in ESPUIdash.number("Setpoint", &target, 0, 100) Min/maks va qadam bilan aniq raqamli kiritish.
in ESPUIdash.text("SSID", &ssid) Satr: tarmoq nomi, MQTT mavzusi, qurilma yorligʻi.
in ESPUIdash.textarea("Notes", ¬es) Koʻp qatorli matn: eslatmalar, JSON, kichik konfiguratsiya. (ESPUI'da yoʻq)
RisalDash onlydash.password("WiFi pass", &pass) Parol/tokenlar uchun yashirin kiritish. (ESPUI'da yoʻq)
RisalDash onlydash.select("Mode", &mode, {"Auto","Manual","Off"}) Bir nechta variantdan birini tanlash — rejim.
in ESPUIdash.radio("Fan", &lvl, {"Low","Mid","High"}) Tugmalar bilan oʻzaro istisno tanlov. (ESPUI'da yoʻq)
RisalDash onlydash.color("LED color", &rgb) RGB lentalar/yoritish uchun rang tanlagich. (ESPUI'da yoʻq)
RisalDash onlydash.time("Alarm", &alarmTime) Vaqt/sana oʻrnatish: budilnik, jadval.
in ESPUIdash.pad("Drive", [](int dir){...}) D-pad boshqaruvi: robot, kamera, mashina.
in ESPUIdash.joystick("Move", [](int x,int y){...}) Analog 2D X/Y kirish. (Pad kengaytmasi)
RisalDash onlydash.stepper("Count", &n, 1) -/+ tugmalari bilan oshirish/kamaytirish. (ESPUI'da yoʻq)
RisalDash onlydash.ota("Firmware") Brauzerdan fayl/proshivka yuklash. (ESPUI'da yoʻq)
RisalDash onlydash.terminal("Shell", handleCmd) Konsol: chiqish + WebSocket orqali buyruq kiritish. Dashboarddan tuzatish/boshqaruv. (ESPUI'da yoʻq)
RisalDash onlydash.radioBrowser("Stations", &listText, [](const String& v){ playFirst(v); }) Tahrirlanadigan internet-radio stansiyalar roʻyxati — tortib tartiblash, nom/URL'ni joyida tahrirlash, qoʻshish/oʻchirish. Qiymat — har qatorda «Name | URL | Meta»; ES8311 kodek pleyeri bilan ishlaydi. (ESPUI'da yoʻq)
RisalDash onlydash.group("Power") Vidjetlarni vizual guruhlaydigan boʻlim.
in ESPUIdash.tab("Sensors") Katta dashboardni boʻlish uchun tab.
in ESPUIdash.separator("Settings") Bloklar orasida sarlavhali ajratgich.
in ESPUIwidget.span(2) Kartani N ustunga choʻzish. (ESPUI'da yoʻq)
RisalDash only