Server & síť/Telemetrie na iPhonu
Telefon, který hlídá počítač.
iPhone ve stojánku vedle monitoru ukazuje teploty a zátěž procesoru i grafiky, paměť, příkon a kolik mi zbývá z limitů AI asistenta. Když spustím hru, sám se přepne na herní board s FPS a pingem. Po pěti minutách nečinnosti zhasne, po návratu k myši se probudí.
K čemu to je
Pohled na stroj, aniž bych něco otevíral
Když renderuju video, hraju nebo nechám běžet AI agenta, chci vědět, jak je na tom počítač, a nechci kvůli tomu přepínat okna. Malý displej vedle monitoru to řeší: dvě velké teploty, zátěž, paměť a příkon na jeden pohled.
Druhá věc, na kterou koukám častěji, než bych čekal: limity Claude Code. Předplatné má okno pěti hodin a týdne, a když se blíží konec, chci to vidět dřív, než mě to zastaví uprostřed práce.
Inspirace přišla z návodu na PromptLab, kde autor použil starý Android po USB kabelu. Já měl v šuplíku iPhone, takže jsem cestu musel vymyslet jinak.
Proč
Proč iPhone a proč ne po kabelu
Android umí přes USB protunelovat port z počítače a spustit vlastní aplikaci, která drží displej rozsvícený. iPhone nic z toho nedovolí. Místo kabelu tak jde všechno po domácí Wi-Fi a místo aplikace je to webová stránka přidaná na plochu.
A protože Home Assistant už o počítači ví skoro všechno, nedávalo smysl stavět další sběrač dat na Windows. Telefon se ptá serveru, server se ptá Home Assistanta a počítač jen posílá čísla.
Jak to funguje
Kudy tečou čísla
- Počítač hlásí do Home Assistanta. Agent na Windows posílá zátěž a poslední aktivitu. Čtečka čidel doplní teploty, příkon a paměť grafiky každých deset sekund.
- Server skládá jednu odpověď. Malá služba v Dockeru drží živé spojení s Home Assistantem a jednou za pět minut se ptá na limity AI asistenta.
- Telefon jen kreslí. Jedna stránka bez knihoven, obnovuje se každé dvě sekundy. Přidaná na plochu, zamčená v kiosku, displej nezhasíná.
- Hra má přednost. Když zátěž grafiky drží půl minuty nad 60 %, nebo přijde FPS z počítače, server přepne stránku na herní board: FPS, 1 % low, frametime, ping na dvě linky, teploty a příkon. Vypne se až minutu po konci hry.
- Šetří displej. Po třech minutách nečinnosti počítače ztlumí a nechá obsah pomalu bloudit, po pěti minutách zčerná. Návrat k myši ji probudí.
Co jsem zjistil
Co jsem zjistil po cestě
Čtečka čidel je rychlejší
Agent na Windows hlásí po půl minutě a teplotu procesoru vůbec neumí. Čtečka čidel dá teploty, příkon i otáčky třikrát rychleji.
Limity se nesmí číst každou minutu
Rozhraní s limity mě po chvíli odmítlo. Pětiminutový interval stačí a při odmítnutí se drží poslední známé hodnoty.
OLED chce klid
Tři minuty bez pohybu myši a obsah ztmavne a pomalu cestuje po displeji. Další dvě minuty a je černo. Pixely, které nesvítí, se nevypalují.
Aplikací k instalaci
Stránka přidaná na plochu se chová jako aplikace: bez lišty prohlížeče, na celý displej. Vývojářský účet ani Xcode nebyly potřeba.
Boční tlačítko
Asistovaný přístup zamkne telefon v jedné aplikaci. Náhodný dotyk ani notifikace dashboard nezavřou.
Nastavení, bez kterého to nejde
Webová stránka na iPhonu displej neudrží, i když o to požádá. Automatický zámek nastavený na Nikdy je jediná spolehlivá cesta.
Hra se pozná podle grafiky
Zátěž grafiky nad 60 % po dobu půl minuty zapne herní board, pod 30 % po dobu minuty ho vypne. Díky hysterezi neblikají boardy při načítání úrovně.
FPS jdou přes Home Assistant
Skript na počítači čte sdílenou paměť RTSS a posílá FPS, 1 % low a název hry jako tři senzory. Když dorazí FPS větší než nula, herní board naskočí hned.
Ping měří server, ne telefon
Server zkouší TCP spojení na dva cíle každé tři sekundy a z posledních deseti vzorků počítá průměr, rozptyl a ztrátu. Telefon jen ukáže číslo.
Co jsem se naučil
Tři věci, na které jsem narazil
Hodiny místo dashboardu
Po chvíli se na displeji objevily hodiny a kalendář. Nebyl to nový režim stránky, ale StandBy: telefon se prostě zamkl. Zámek na Nikdy to vyřešil.
Dvě funkce se skoro stejným jménem
Asistivní přístup chce seznam aplikací a webovou stránku v něm nenajdeš. Asistovaný přístup nic nevybírá, zamkne to, co je zrovna otevřené. Chvíli jsem hledal ve špatném.
Ještě to jede? Ne, to je záložka na počítači
Po přesunu na domácí adresu stará adresa dál vypadala živě. Byla to jen zapomenutá záložka v prohlížeči na počítači. Kdo se opravdu připojuje, poznáš jedině na serveru.
Ovladač nehýbe myší
Nečinnost počítače poznávám podle klávesnice a myši. S ovladačem v ruce by tak dashboard uprostřed hry ztmavl a po pěti minutách zčernal. Proto má herní režim přednost před nečinností.
Pro AI agenta
Postav si to u sebe
Chceš si to postavit u sebe? Zkopíruj návod a dej ho svému AI agentovi, třeba Claude Code nebo Codexu. Je v něm cíl, postup krok za krokem, pasti, na které jsem narazil, a jak ověřit, že to funguje. Adresy ani hesla v něm nejsou, ty agent doplní s tebou.
Pro zvědavé
Technické detaily
Stack a tok dat FastAPI · WebSocket · PWA · RTSS
- Počítač
- HASS.Agent posílá do Home Assistanta zátěž, paměť a poslední aktivitu (MQTT, cca 30 s). LibreHardwareMonitor vystaví čidla po HTTP a čte je oficiální integrace Home Assistanta každých 10 s: teplota procesoru, příkon, paměť grafiky, ventilátor.
- Server
- FastAPI v Dockeru. Počáteční stav přes REST, dál WebSocket na změny stavu, žádný polling. Mapování klíčů na entity v JSON souboru, který se načítá za běhu. Odpověď pro telefon na jedné adrese, port jen na domácí a VPN adrese.
- Limity AI
- Token Claude Code ze serveru a jeho rozhraní pro využití předplatného. Dotaz jednou za 5 minut, při odmítnutí se respektuje požadovaná pauza a drží poslední hodnoty.
- Telefon
- Jedna HTML stránka, návrhová plocha ve velikosti displeje na šířku, transformem přeškálovaná a na výšku otočená. Dvojité klepnutí ji převrátí, když je zamčené otáčení. Wake Lock API se zkouší, spoléhá se ale na Automatický zámek: Nikdy.
- Hra
- Detekce na serveru: zátěž grafiky nad prahem po zadanou dobu, nebo FPS z RTSS přes HASS.Agent (PowerShell čte sdílenou paměť RTSS, tři senzory: FPS, 1 % low, název hry). Ping jako TCP connect ze serveru na dva cíle, průměr, rozptyl a ztráta z deseti vzorků. Prahy a cíle jsou v proměnných prostředí.
Režimy a prahy kdy co svítí
| Režim | Kdy | Co dělá |
|---|---|---|
| Živě | počítač aktivní | plný dashboard |
| Klid | 3 min bez vstupu | 42 % krytí, obsah pomalu bloudí |
| Černá | 5 min bez vstupu nebo počítač spí | čistá černá, jen slabý čas, displej dál svítí |
| Hra | grafika nad 60 % půl minuty, nebo FPS z RTSS | herní board, přednost před nečinností, konec minutu po hře |
| Spí | agent přestal hlásit | „Systém spí“, po minutě černá |
| Bez spojení | server neodpovídá | oranžová obrazovka, pokus každé 2 s |
Teploty: procesor v normě do 70 °C, zvýšená do 85, vysoká do 95, pak kritická. Grafika o pár stupňů přísněji. Limity: v pořádku do 70 % využití, docházejí od 70 %, kritické od 90 %. FPS: plynulé od 60, slabší od 30, pod 30 se trhá. Každý stav nese barvu i slovo.
Pasti a jejich řešení pro ty, kdo to staví taky
Kontejner s vlastním uživatelem nepřečte soubor s tokenem (práva jen pro vlastníka), musí běžet pod stejným uživatelem. Bind mount jednoho souboru zestárne, když ho program přepisuje atomicky, mountuje se celý adresář. Rozhraní s limity vrací 429 už při dotazu jednou za minutu. Windows firewall: přes VPN adaptér byl port čidel otevřený i bez pravidla, po LAN ne. Headless Chromium nedovolí okno užší než 500 px, takže screenshot na výšku vypadal jako chyba v otáčení. A ve Windows se HASS.Agent hodí na detekci spánku: jakmile zmizí, jeho entity jsou hned nedostupné, integrace čidel to pozná až po neúspěšném dotazu. Herní board na šířku má okraj jen na straně s výřezem kamery, podle toho, jak je telefon otočený.
Dál