RisalDash RisalDash

Loyiha · Suv · Monitoring

Qachon boʻshashini oʻzi bashorat qiladigan suv baki

Bakda 62 % borligini bilish yaxshi. Uning 14 soatdan keyin boʻsh boʻlishini va toʻsatdan ortiqcha sarf yorilgan quvurga oʻxshashini bilish — mana shu chindan qutqaradi. Bitta suvga chidamli ultratovush datchigi va ESP32 sizga daraja, hajm, boʻshash prognozi, oqish alerti va avtomatik nasosni beradi — chip oʻzi beradigan dashboardda.

LoyihaSuvJSN-SR04TPrognozESP32
ESP32 suv baki loyihasi: daraja, boʻshash prognozi, oqish detektori va avto-nasos

Oʻlchash — qopqoqdan bitta ping

JSN-SR04T (suvga chidamli HC-SR04) bak qopqogʻi ostiga oʻrnatiladi va suv yuzasiga ping yuboradi. Aks-sado havo oraligʻini beradi; daraja bak balandligidan hisoblanadi: levelPct = 100 · (1 − gapCm / TANK_CM), litr — sigʻimdan. Ulanish — standart ultratovush: 5 V quvvat, 3.3 V pin uchun ECHO’da boʻluvchi:

Ultratovush datchigi ESP32’ga ECHO’da kuchlanish boʻluvchisi bilan ulangan
HC-SR04 va JSN-SR04T uchun bir xil ulanish. BoardLab’da yigʻilgan.

Prognoz — EMA, mashina oʻrganish emas

Boʻshash prognoziga bulutdagi model kerak emas. Sarf tezligini eksponensial oʻrtacha bilan silliqlang (bitta yuvilgan bachok prognozni choʻchitmasin) va qolgan darajani unga boʻling. Oqish detektori — oʻsha son + chegara: nasos oʻchiq boʻlsa-yu, suv maishiy meʼyordan ancha tez ketsa — nimadir oqyapti.

// --- the predictor: smooth the drain rate, project time-to-empty ---
float dPct = (prevPct - levelPct) * 240.0f;           // %/min at 250 ms per tick
prevPct = levelPct;
if (!pump) ratePctMin += 0.05f * (dPct - ratePctMin); // EMA — calm, not jumpy
hoursLeft = ratePctMin > 0.01f ? levelPct / ratePctMin / 60.0f : 99;

// --- leak detection: dropping much faster than the household norm, pump off ---
bool leakNow = !pump && ratePctMin > 0.9f;
if (leakNow && !leak && evlog) evlog->print("LEAK suspected - close the valve");
leak = leakNow;

// --- auto-fill: pump on below 25 %, off above 90 % ---
if (levelPct < 25) pump = true;
else if (levelPct > 90) pump = false;

Dashboard

Daraja bar-shkalasi, hajm, «Empty in» stat, trend grafigi, xom sensor sahifasi, oqish LED’i va nasos tumbleri — oʻnlab qatorda eʼlon qilinadi; butun UI’ni ESP oʻz access point’i orqali beradi:

dash.layout("Tank", RICON_WATER);
dash.gauge("Level", &levelPct, 0, 100, "%").variant("bar");
dash.stat("Volume", &liters, "L");
dash.stat("Empty in", &hoursLeft, "h");    // the prediction, live
dash.chart("Trend", &levelPct, "%");

dash.layout("Sensor", RICON_SIGNAL);
dash.metric("Air gap", &distCm, "cm");     // what the ultrasonic actually reads
dash.metric("Drain rate", &ratePctMin, "%/min");
dash.led("Leak suspected", &leak);
dash.toggle("Pump", &pump);
dash.beginAP("RisalDash-Tank", "12345678");

Kutubxonadagi namuna (examples/04_Templates/TankLevel) temirsiz ishlaydi: bak boʻshaydi, toʻladi va vaqti-vaqti bilan «quvur yorilib», alert qanday ishlashini koʻrasiz. Datchik kelganda bitta qatorni haqiqiy pingCm() ga almashtirasiz — bu fake-sensor workflow.

Komponentlar roʻyxati

QismVazifa~Narx
ESP32 / ESP8266miya + Wi-Fi + dashboard$3–5
JSN-SR04Tsuvga chidamli daraja$3–4
Rele modulinasos boshqaruvi$1–2
5 V manbaquvvat$2–3

Chegaralarni bugun sozlang — bak dam olish kunigacha kutadi.