RisalDash RisalDash

Проект · Умная комната · Безопасность

Одна панель, которая следит за всей комнатой

Четыре дешёвые детали закрывают комнату полностью: DHT22 — климат, PIR — движение, MQ-2 — газ и дым, 2-канальное реле — свет и вентилятор. Один ESP32 связывает их в панель безопасности с цепочкой тревоги — бейдж, зуммер, журнал, авто-проветривание — и всё это управляется с дашборда, который чип отдаёт сам.

ПроектУмная комнатаPIRMQ-2ESP32
Проект монитора комнаты на ESP32: DHT22, PIR, MQ-2, реле и сигнализация

Детали и их причуды

ДетальРольЧто знать
DHT22температура + влажностьодно чтение в 2 с, однопроводный протокол
PIR (HC-SR501)движениедержит выход окно ретриггера — так и трактуйте
MQ-2газ / дымнужен прогрев и калибровка на экземпляр
Реле 2chсвет + вентиляторопто-платы хотят 5 В; проверьте полярность IN
Зуммерлокальная тревогаактивному достаточно GPIO high

Цепочка тревоги — приоритеты, а не спагетти

У панели один статус, и газ всегда побеждает: GAS! > Motion > All clear. Газ включает зуммер, принудительно запускает вентилятор на проветривание и пишет событие; движение просто переключает бейдж и логируется. Вся логика приоритетов — пять строк:

// Alarm chain: gas beats motion; the buzzer follows the gas state, fan auto-vents.
bool gasBad = gas > 350;                      // real: calibrate to your MQ-2
if (gasBad && roomState != 2 && evlog) evlog->print("GAS/SMOKE - venting");
roomState = gasBad ? 2 : (motion ? 1 : 0);
alarmOut = gasBad;
if (gasBad) fan = true;                       // auto-vent on gas

// PIR: the module holds its output ~3 s per trigger — treat it as a window.
motion = millis() < motionUntil;

Дашборд

Две страницы: Room (показания + статус + журнал) и Control (свет, вентилятор, тревога). Пресеты dht22 и mq2 сами выбирают виджеты и диапазоны:

dash.layout("Room", RICON_HOME);
dash.sensor("dht22", &temp, &hum);            // temp gauge + humidity metric
dash.sensor("mq2", &gas);                     // smoke/LPG gauge with the right range
dash.badge("Status", &roomState).labels("All clear", "Motion", "GAS!");
dash.led("Motion", &motion);                  // PIR state, live
evlog = &dash.log("Events", 6);

dash.layout("Control", RICON_BULB);
dash.toggle("Light", &light);                 // relay channel 1
dash.toggle("Fan", &fan);                     // relay channel 2
dash.led("Alarm", &alarmOut);                 // buzzer output
dash.beginAP("RisalDash-Room", "12345678");

Пример из библиотеки (examples/04_Templates/RoomMonitor) работает без железа — фейковый MQ-2 изредка «чует дым», PIR срабатывает случайно, и вся цепочка видна: бейдж → зуммер → журнал → вентилятор. Потом подключаете реальные детали и убираете фейки. Каждый виджет — ещё и MCP-tool: ИИ-агент спросит «есть кто в комнате?» или включит вентилятор — это паттерн ИИ-агента.

Смежные сборки

Нужна только охрана? Шаблон MotionSecurity добавляет зоны и постановку на охрану. Только газ? GasSafety — MQ-2 + MQ-7 с трип-индикаторами. Вся квартира? SmartHome масштабирует тот же паттерн до сцен и комнат — эта панель и есть их выжимка для одной комнаты.

Посмотрите, как сработает тревога, на фейках сегодня — комнату подключите в выходные.