Model chytrého zabezpečení domácnosti
Funkční ukázkový systém postavený na Arduino Mega 2560 s ESP8266 (AT). Kombinuje detekci pohybu (PIR) a detekci CO (MQ-7), lokální alarm a bezpečnou logiku režimů. Notifikace jdou do Telegramu přes relay server (ESP → HTTP bez TLS → server → HTTPS Telegram Bot API).
Pozn.: Úmyslně nezveřejňuji citlivé údaje (SSID, hesla, tokeny). Dokumentace s plnými údaji se dává pouze „na vyžádání“.
Architektura
Jasné bloky + důvod relay serveru
Proč relay
ESP8266 v režimu AT příkazů je v praxi často limitované TLS kompatibilitou. Proto: ESP odešle jednoduchý HTTP request na vlastní server a server provede HTTPS volání na Telegram Bot API.
Bezpečnostní poznámka
- Na webu nezveřejňuji tokeny ani SSID.
- Relay endpoint je vhodné chránit (tajný klíč / rate-limit / IP allowlist).
- Notifikace jsou „edge-trigger“, aby se zabránilo spamu.
Logika a režimy
Stavový automat + algoritmus MQ-7
Režimy (stavový automat)
Zjednodušeně: režim určuje, co je aktivní, co se loguje a co spouští poplach.
| Režim | Chování |
|---|---|
| DISARMED | PIR poplach vypnut, systém ovladatelný, zámek dle kódu. |
| EXIT_DELAY | 30 s na opuštění prostoru po aktivaci (bez PIR poplachu). |
| ARMED | Střežení: PIR detekce vyhlašuje pohybový poplach. |
| LOCK_ONLY | Ovládání zámku bez PIR střežení (praktické pro demo). |
Kódy (pevné pro demo)
- 4321 – ARM + přechod do EXIT_DELAY + zamknutí
- 1234 – DISARM + odemknutí + zrušení pohybového poplachu
- 1243 – LOCK_ONLY + zamknutí
MQ-7: baseline, hystereze, cooldown
MQ-7 se vyhodnocuje relativně k referenční úrovni po startu. Cílem je stabilnější detekce bez „šumu“.
- Kalibrace baseline: 30 s po startu.
- Perioda měření: ~200 ms.
- Poplach: baseline + 220 (delta práh).
- Vypnutí poplachu: hystereze 50.
- Cooldown: 60 s po poplachu (zabránění opakovanému spínání).
Priorita událostí
- Plynový poplach má vyšší prioritu než pohybový poplach.
- Alarm: plyn = souvislý tón, pohyb = přerušovaný tón (pro rozlišení).
„Non-blocking“ hlavní smyčka (princip)
Cílem je, aby více bloků běželo současně bez dlouhých prodlev.
// Pseudokód (struktura)
loop():
handleModeStateMachine()
readKeypadAndApplyCode()
handlePIR()
sampleMQ7AndEvaluate()
driveBuzzerPattern()
wifiTickAndSendQueuedNotifications()
Testovací scénáře
Co by měl hodnotitel vidět „naživo“
Scénáře (doporučená demo posloupnost)
- Boot + baseline: start, LCD hlásí inicializaci a kalibraci MQ-7.
- LOCK_ONLY: zadání 1243 → zamknutí servem (bez střežení PIR).
- ARM + EXIT_DELAY: zadání 4321 → 30 s odchodové zpoždění.
- PIR poplach: po přechodu do ARMED vyvolat pohyb → alarm + notifikace (jednorázově).
- DISARM: zadání 1234 → zrušení pohybového poplachu + odemknutí.
- MQ-7 poplach: simulace zvýšení (demo zdroj) → souvislý alarm + notifikace.
- Hystereze: ukázat, že se poplach nevypíná „kmitáním“ kolem prahu.
- Cooldown: po skončení plynového poplachu nejde hned znovu vyhlásit.
Co tím dokazujete
- Správně navržené režimy a přechody.
- Odolnost proti opakovanému spamu notifikací.
- Rozlišení typů poplachu (uživatelsky srozumitelné).
- Stabilní vyhodnocení MQ-7 (baseline/hystereze/cooldown).