SHELLY – 11 ZÁSUVIEK

Súbory:
- index.html: HTML5 rozhranie
- api.php: API pre IP 192.168.1.253 až 192.168.1.243
- storage-private/: JSON história (PHP ju vytvorí automaticky)

INŠTALÁCIA
1. Nahraj index.html a api.php do rovnakého adresára na PHP serveri.
2. Server musí mať PHP 8+ s rozšírením cURL a prístup do lokálnej siete 192.168.1.0/24.
3. Uisti sa, že PHP môže zapisovať do adresára, v ktorom vytvorí storage-private.
4. V api.php skontroluj SHELLY_USERNAME a SHELLY_PASSWORD. Odporúča sa presunúť ich do konfiguračného súboru mimo verejného webu alebo do premenných prostredia.
5. Otvor index.html cez webový server (nie file://), napr. http://server/shelly-11/.

API
- api.php?action=devices
- api.php?action=status&id=253
- api.php?action=history&id=253&period=day|month|year
- api.php?action=overview&period=day|month|year (načíta a zaznamená všetkých 11 zásuviek)
- POST api.php?action=switch&id=253 s JSON telom {"on":true} alebo {"on":false}

Spoločný prehľad volá action=overview a načíta všetkých 11 zásuviek približne každú minútu. Pri tom ukladá históriu každého zariadenia najviac raz za minútu. Každá zásuvka má krátky sieťový timeout; ak je odpojená, ostatné zásuvky sa spracujú ďalej. Odpojená zásuvka sa označí červenou bodkou a zobrazí sa čas posledného úspešného merania. Jej existujúca história sa nemaže; počas výpadku vznikne v grafe medzera. Detail vybratej zásuvky obnovuje stav každých 15 sekúnd. Ak má história fungovať aj pri zatvorenom prehliadači, nastav na serveri cron, ktorý bude volať api.php?action=overview každú minútu.

BEZPEČNOSŤ
- Ovládanie zásuviek je neautentifikované na úrovni tohto príkladu. Nevystavuj ho priamo na internet; používaj len dôveryhodnú LAN alebo doplň autentifikáciu.
- Ak webserver nepodporuje .htaccess (napr. Nginx), nastav blokovanie priameho HTTP prístupu do storage-private v konfigurácii servera a ideálne umiestni adresár mimo document root.
- Príklad predpokladá Shelly RPC metódu Switch.Set a status kľúče switch:0, em:0 a temperature:0 ako v dodanom API.
