Přeskočit obsah

Centrální Seznam Úkolů (TODO)

Živý backlog pro homelab, smart home a AI stack.

Tagy: Oblast [infra] [ha] [ai] [monitoring] [docs] [services] — Velikost [S]≤2h [M]≤1d [L]>1d


Právě teď (Current Focus)

Max 5 položek. Co je aktivní priorita.

  • [ ] [infra][M] Cluster dokončení po stavbě pmx2 — hotovo 2026-07-06: instalace, join, migrace pfSense+HA na pmx2, replikace 100/102→pmx1 + 105→pmx2 à 90 min, syslog→Loki. Zbývá (v tomto pořadí): ~~① QDevice na TrueNAS~~ HOTOVO 2026-07-24 (expected votes 2→3) → ③ upgrade pmx1 9.1.9→9.2.5 + kernel 7.x (viz „Kernel 7.x migrace" — teď bezpečné díky QDevice; pozn.: s ha-managerem to už nebude bezvýpadkové, dokud není zapnutý, reboot pmx1 nevadí, klenoty na pmx2) → ② ha-manager pro set 100 + 102 + 105 + 107 (2026-07-24 rozhodnuto přidat i 105 PBS — ideální kandidát, datastore na TrueNASu je sdílený → failover bezeztrátový; a 107 debian kvůli nginx/ha.marada.name; 104/106/109 vědomě jen PBS restore) — odemčeno QDevicem; všechny 4 replikované ✅ (100/102/107 pmx2→pmx1, 105 pmx1→pmx2), watchdog softdog ✅ naběhl. RAM caveat: pmx1-smrt → pmx2 převezme PBS = 25/27 G (napjaté, ARC přiškrcený, ~2 G rezerva) — protože Scrypted (8 G) teď na pmx2; nouzově OK, ale failover test musí hlídat OOM/ARC. Páka: Scrypted RAM 8→6 G, nebo (pořádně) náhrada pmx1 + přesun Scryptedu → pmx2 zpět na ~13 G. Kroky: ha-manager groups (preference nodů) → ha-manager add vm:100 vm:102 vm:105 ct:107kontrolovaně zabít node a ověřit zotavení + RAM → ④ cpu: x86-64-v3 pro migrovatelné VM → ⑤ regenerace proxmox_generated.md + úklid /etc/pve/nodes/pmx2 orphan zbytků. Pozn.: failover trojice na pmx1 je RAM-těsný (~29/30 G) — v nouzi stopnout Immich (experiment). Jellyfin (110): rozhodnout obnovit z PBS / zrušit. Viz decision_log.md 2026-07-06.
  • [ ] [infra][L] Audit repa + infrastruktury 2026-07 — remediace — checklist nálezů (zálohy/DR, HA fail-safes, alerting, docs, HW): audit_2026-07.md. Akutní: secure wipe SSD pmx2 před vrácením Amazonu (repliky + secrets; data rescue netřeba — Immich media na TrueNAS, Jellyfin LXC prázdné); Storj sync fix (fast_list aplikován 2026-07-06, ověřit noční běh); NFS/docker retry na debian-services (2026-07-06 stack nevstal po rebootu). Kvórum (delnode) a náhrada nodu řešeny samostatně výše (Nový uzel PN54-S1, QDevice).
  • [ ] [docs][L] Audit repa 2026-06 — remediace — kompletní checklist nálezů (bezpečnost, HA config, docs, tooling, governance): audit_2026-06.md. Řeší se postupně po dávkách. Zbylé open položky přenést do audit_2026-07 / sem a soubor smazat (viz 2026-07 D7).
  • [ ] [ha][S] FTV utility_metery grid_import/export_dnes — reset spikesensor.grid_import_dnes/grid_export_dnes (configuration.yaml) běží na surových Victron vebus energy senzorech bez guardu; reset Cerba GX → denní hodnota na FTV dashboardu skočí. Zvážit wrapper sensor s delta_values nebo akceptovat (řídký jev). Viz audit C17.
  • [ ] [ha][S] Dashboard zahrada — 38 neidentifikovaných Zigbee světeldashboards/zahrada.yaml má dočasnou identifikační kartu (light.light, light.1, light.0x...). Doidentifikovat a pojmenovat, kartu pak smazat. Viz audit C21.
  • [ ] [ha][M] Rekuperace boost — navrhnout znovu a pořádně — starý dvouklik-boost (15 min na switch.rekuperace_2) odstraněn 2026-06-11, protože kolidoval s automatizací „Rekuperace wc" (vzájemně si vypínaly switch). Promyslet čistý model: jeden vlastník switche, priorita boost vs. WC odsávání, UI ovládání. Viz audit C3.

Aktivní backlog

Aktivní úkoly mimo top-5 focus.

  • [x] [ha][S] Zvonek na nativní DALI event + odstranění button_manageru — DOKONČENO 2026-07-23 — trigger přehozen na foxtron_dali_button_action (flap upper, double_press; okno zvonění+30 s beze změny), ověřeno živým zvoněním, button_manager.py + buttons.yaml + check_buttons.py + pydantic odstraněny, AppDaemon restartován. Viz decision_log.md 2026-07-22.
  • [ ] [ha][S] DALI registr — úklid dvou anomálií — ① „Vypínač WC (duplikát – smazat)" (bus 21_24, addr 1, starý formát identifieru) smazat službou foxtron_dali.remove_paired_switch a ověřit, že nový „Vypínač WC" dál loguje stisky; ② identifikovat fyzický vypínač „DALI Vypínač 1 (192.168.40.21_23, 1/0)" (mačkáním + Logbook zařízení), přejmenovat a zařadit do area.
  • [ ] [ha][M] Floorplan: rozmístit prvky + analýza vypínač→rolety — v editoru (placement.html, vygeneruje session ze dashboards/pudorys.yaml) rozmístit 112 entit + 47 vypínačů na reálné pozice, export poslat agentovi → zapíše do pudorys.yaml. Pak spustit návrh mapování vypínač→rolety/světla (polygon membership + blízkost + jména vypínačů „u dveří kam").

  • [ ] [monitoring][S] Nezávislý fallback alerting kanál + heartbeat monitoru — kontext 2026-07-20 (fix GH #81): Proxmox root mail z pmx1/pmx2 nikdy nechodil (přímé SMTP na Gmail, bounce 550 — chybí PTR/relay) a nikomu to nechybělo, protože primární alerting je řetěz syslog→Alloy (debian-services)→Loki→ai-monitor→GH issues. Ten ale (a) je single chain — výpadek debian-services/Loki/monitoru = ticho, včetně ticha o vlastním výpadku; (b) běží 2× denně → latence až ~12 h u akutních věcí (ZFS degraded, failed vzdump). Úkol: ① zřídit nezávislý push kanál přes Proxmox notification targets (preferovaně ntfy/Telegram webhook, ne Gmail smarthost — bez PTR/app-password tahanic) na pmx1+pmx2+PBS pro kritické eventy; ② heartbeat/dead-man switch na ai-monitor — alarm, když >24 h nepřišel žádný run. Gmail relay jen jako záložní varianta ①.

  • [ ] [docs][M] Online dokumentace — domácí plná verze (s Osobním) — v1 (online oříznutá verze na Cloudflare Pages + Access, bez osobni/) nasazena; viz dokumentace_online.md. Fáze 2: doma na LAN plná verze včetně složky Osobní (standardní mkdocs build z mkdocs.yml). Otevřené: ① kde hostovat (který domácí stroj — web s plným buildem, auto-rebuild na push); ② TLS — buď vlastní adresa docs.dum.marada.name (čistší), nebo split-horizon DNS override na docs.marada.name (potřebuje platný lokální cert, jinak varování v prohlížeči). Rozhodnout ①/② dřív než stavět. Drobnost k opravě při té příležitosti: wallbox.md odkazuje na osobni/domacnost/auta.md, který v online verzi 404 (v domácí OK).
  • [ ] [infra][S] DNS filtr: zamezit obcházení hardcoded DNS — od 2026-07-20 Unbound forwarduje přes DoT na AdGuard/DNS4EU (blokace reklam), ale zařízení s natvrdo nastaveným DNS (8.8.8.8 apod. — typicky IoT/TV) filtr obcházejí. Zvážit: NAT redirect portu 53 ze všech VLAN na pfSense + block odchozích 853/tcp (DoT) mimo firewall samotný; DoH (443) plnohodnotně zablokovat nejde — max. blocklist známých DoH resolverů. Viz decision_log.md 2026-07-20.
  • [x] [ha][S] Scrypted AN: migrace MQTT → websocket — DOKONČENO 2026-07-21 — Discovery layer na websocket (AN v5.1.3), AN credentials přímo v pluginu (nový token scrypted-an), smazány: 3 MQTT devices staré discovery rodiny v HA (entity registry), 2 mrtvé automatizace (snooze/alarm action), Scrypted pluginy HA + Cloud + MQTT. Živé scrypted_an entity přejmenovány z _2 na čistá ID. Ověřeno: websocket entity se aktualizují, AN log „REST push connection restored". Zbývá jen: uživatel revokuje starý token HA pluginu v HA profilu.
  • [x] [infra][S] NVR refquota fáze 2: dotáhnout na 2.9T — DOKONČENO 2026-07-23 — Scrypted prořezal 3,09 T → 2,83 T (retenci si NVR řídí samo), podmínka <2,85 T splněna → refquota na archive/nvr snížena 3,15 T → 2,90 T. Potvrzeno, že alert „Refquota exceeded 89,8 %" byl důsledek záměrně těsné kvóty, ne hrozby zaplnění.
  • [ ] [ha][S] Změřit inference time detekce + dotáhnout konfiguraci — 2026-07-23 zjištěno, že není známo, jak detekce reálně běží. Ve Scrypted UI (https://192.168.20.21:10443) → plugin OpenVINO odečíst inference time na snímek a projít, které kamery mají object detection vůbec zapnutou (podezření, že konfigurace není dotažená — viz otevřený úkol „Detekce postav → HA"). Interpretace: ≲80 ms = v pořádku; 100–250 ms = znatelné zpoždění; ≳300 ms = detekce zaostává. Toto číslo je jediný zbývající důvod, proč by dávalo smysl pořídit Coral TPU — spotřeba, hluk ani růst počtu kamer ho neospravedlňují (viz decision_log.md 2026-07-23). Pozn.: OpenVINO je Intel framework, na AMD iGPU inference neakceleruje → běží čistě na CPU.
  • [~] [monitoring][S] Teplotní monitoring pmx1 + pmx2 — HOTOVO 2026-07-24; zbývá fyzická údržba pmx1 — ① Monitoring nasazen (KISS přes Loki, ne Prometheus — žádný metrický stack pro nody neexistoval, lm-sensors netřeba): loop service node-temp-log.service na obou nodech čte hwmon á 60 s → logger → syslog → Alloy → Loki (logfmt tctl_c/amdgpu_c); Grafana alert node-cpu-temp-high per-hostname >88 °C/5min → Telegram. Skripty + unit + README v repu docs/files/proxmox/node-temp-log/, alert v grafana/provisioning/alerting/rules.yaml. Ověřeno živě (rule loaded, obě instance Normal). ② Zbývá fyzická údržba pmx1 (pm4 běží ~80 °C, pmx2 taky ~80 °C pod Scryptedem): nejdřív neinvazivně profouknout prach + ověřit ventilátor; repasta (ARCTIC MX-4, ne Kryonaut — lepší longevita na 24/7 horký node; + izopropyl 99 % + bezžmolkový hadřík) až když profouknutí nestačí. Teď máš baseline v Grafaně → uvidíš, jestli zásah pomohl. Časovat na klidno (pmx1 je DR cíl, nese PBS). Viz decision_log.md 2026-07-23.
  • [ ] [infra][L] HW reshuffle (cíl H1 2027, hradlem cena RAM) — konsolidovaný plán, viz decision_log.md 2026-07-24. Trigger fáze 2 = návrat cen DDR5 (dnes 32GB SODIMM = 8 863 Kč, vyprodáno; návrat Q4 2027+). Fáze 1 (teď): thermal pmx2 přes USB Coral (~2000 Kč, nula RAM) nebo jen monitoring; žádné DDR5 nákupy. Fáze 2 (H1 2027):M1 Plus (Minisforum, Mironet ~8 837 Kč barebone, i5-12600H/Iris Xe/2×DDR5→96GB/2×2.5GbE) → nový pmx1 (Scrypted detekce na Iris Xe → Coral odpadá); DDR5 dokoupit až teď (Crucial 32GB ~8 863 Kč, 1×32 s volným slotem). ② starý pmx1 (32GB DDR4) → nový TrueNAS (opraví ARC starvation, poběží chladně). ③ archive 4TB (USB) přepojit; tank 1TB NVMe → M1 Plus rpool — předem migrovat PBS datastore + app-data + VM storage (jádro operace). ④ retire NUC8i3BEH (8GB). Prerekvizita k ověření: fyzicky volné sloty ve starém pmx1 pro TrueNAS roli.
  • [ ] [infra][S] TrueNAS RAM/box — vyřešeno reshuffle-em (starý pmx1 → TrueNAS) — current NUC8i3BEH (8GB) je memory-tight (588 MB free, ARC 1,1 GB). Nekupovat nový box ani RAM — fáze 2 reshuffle (viz „HW reshuffle" výše) dá TrueNASu starý pmx1 s 32 GB DDR4 → ARC fix zdarma. Do té doby TrueNAS jede jak jede (funguje, jen těsně). Breakpoint pro PBS-jako-TrueNAS-app se otevře až s tou větší RAM (viz PBS záznam v decision_log.md).
  • [ ] [ha][S] Doorbell: jmenovité TTS hlášení („Jan Šefránek zvoní u dveří") — AN people tracker publikuje per-osoba senzory (sensor.scrypted_an_people_tracker_*, 5 otagovaných lidí) + image.*_last_image. Návrh bez zdržení: TTS smyčka v doorbell_ring opakuje po 5 s → 1. iterace generická („Někdo zvoní"), od 2. iterace šablona zkontroluje, zda se některý tracker aktualizoval v posledních ~15 s (na kameru zvonku) → jmenovitá hláška. Prerekvizita: empiricky ověřit obsah stavu tracker senzorů po první detekci (kamera/lokace?). Fallback při nerozpoznání = generická hláška (neškodné). Volitelně jméno i do push notifikace.
  • [ ] [ha][S] Doorbell: rozchodit two-way audio přes HA — mluvení se zvonícím z HA (fallback k HomeKit cestě, funkční i při výpadku Scrypted/HomeKit). WebRTC karta (AlexxIT v3.6.1) na /lovelace/doorbell je instalovaná právě kvůli tomu — ověřit, že má nakonfigurovaný two-way zdroj (go2rtc isapi:// backchannel na DS-KV8113, ne jen RTSP stream), mic ikonu v kartě a mic permission v companion appce; otestovat reálný hovor. Pozn.: v prohlížeči vyžaduje HTTPS (ha.marada.name).
  • [ ] [ha][M] Kamerové notifikace: „arm garden" model (děti na zahradě = desítky záznamů, nenotifikovat) — rozhodnutá architektura 2026-07-21: logika čistě v HA, AN slouží jen jako senzorová sběrnice (přes websocket publikuje per-kamera person/animal/vehicle binary sensory). Implementace: ① ve Scryptedu pojmenovat kamery (teď všechny „IP CAMERA" → nerozlišitelná entity ID); ② helper input_boolean.arm_garden (git, dashboard toggle); ③ automatizace: person detekce zahradních kamer + arm_garden == on → notify oba iPhony se snímkem; ④ rozšíření: auto-arm v noci / když anyone_home == off, auto-disarm ráno; expozice booleanu do HomeKit (ovládání z Watch). NEdělat přes AN Rules (logika by žila mimo git v UI pluginu). Scrypted app na mobilu: jen prohlížečka timeline, push v ní vypnout.
  • [ ] [infra][S] Ověřit config záložní Aruby proti failover plánu — plan.md tvrdí „předkonfigurované VLANy", ale od migrace na USW-48 nikdo neověřil. Zapnout Arubu bokem (bez kabelů), porovnat VLANy/porty s tabulkami ve sit/plan.md (Failover Plán), vypnout. ~20 min. Bez toho je 10min failover plán fikce.
  • [x] [infra][S] QDevice na TrueNAS — DOKONČENO 2026-07-24 — qnetd CT dostal statickou 192.168.20.23 (in-container systemd-networkd, autoritativní; + pfSense DHCP rezervace pro přehled), corosync-qnetd + sshd, root klíče pmx1/pmx2. pvecm qdevice setup 192.168.20.23 -fexpected votes 2→3, Flags: Quorate Qdevice. Kterýkoli node teď může spadnout bez ztráty kvóra. Caveat: arbiter běží na TrueNASu → dvojitý výpadek (TrueNAS + node současně) = ztráta kvóra (přijatelná hrana). Odemyká ha-manager. Viz decision_log.md 2026-07-24.
  • [ ] [infra][S] DR postup „PBS mrtvý / obnova ze Storj" — doplnit do disaster_recovery.md: (a) PBS server je bezstavová skořápka — čistá instalace kdekoli + připojení datastore tank/pbs-data (chunky = obyčejné soubory); (b) Storj větev: plný pull bucketu (Cloud Sync PULL, ~h) nebo nouzový rclone mount read-only + datastore nad mountem (single-guest restore bez stažení 260 G). Odsouhlaseno 2026-07-06.
  • [ ] [infra][M] Pilot: PBS S3 datastore přímo na Storj — PBS 4.2 (duben 2026) povýšil S3 backend na stable → restore po chuncích přímo z GUI. Prerekvizity: upgrade PBS 4.0.11→4.2, test kompatibility Storj S3 gateway, nový bucket (jiný formát než dnešní rclone mirror). Trade-off vs. dnešní mirror: přímý restore, ale PBS potřebuje mazat (GC) → nekompatibilní s Object Lock/WORM (audit Z2). Pilot jako druhý cíl vedle mirroru, pak rozhodnout. Až po QDevice/ha-manager.
  • [ ] [infra][M] GDrive 5 TB jako cold-archive offsite větev — nevyužitá kapacita; GDrive je špatný na PBS chunky (433k malých objektů, API limity), výborný na velké soubory: (a) měsíční vzdump klenotů (100/102/107) → rclone crypt → GDrive = druhá offsite větev nezávislá na PBS+Storj řetězu (jiný formát, jiný provider); (b) TrueNAS config export + secrets bundle (uzavírá audit Z3/Z4). Až po cluster práci.
  • [ ] [infra][S] Replikace/migrace rychlost: SSH strop ~60 MB/s na 1GbE — USW-48 je 1GbE (2.5G porty PN54 ladem). Možnosti: migration: type=insecure v datacenter.cfg (šifrování pryč, důvěryhodná LAN), přímý 2.5G kabel pmx1↔pmx2 (pmx1 ale nemá 2. port — USB adaptér?), nebo akceptovat (delty malé, inkrement 26 s). Rozhodnout, neřešit reflexivně.
  • [x] [infra][S] Ověřit noční vzdump po přesunu PBS — ověřeno 2026-07-06: denní řada záloh 1.–6. 7. nepřerušená (i v den incidentu), job automaticky následuje guesty po migracích. Pozn.: v jobu není CT 104 (nový Immich, experiment — vědomě) ani 110.

  • [x] [ha][S] GitOps: race condition apply automatizace (lock vs. status) — vyřešeno 2026-06-14: tvrdá podmínka binary_sensor.ha_safe_update_running == off nahrazena wait_template (timeout 30 s, continue_on_timeout). safe_update.sh zapíše status a hned exitne (lock smaže trap), ale lock binary_sensor se pollem po 5 s opožďoval a shazoval akci → restart se neaplikoval. Viz decision_log.md 2026-06-14.

  • [x] [ha][M] GitOps apply: reload_all degraduje systém přes nemocnou YAML integraci — vyřešeno 2026-06-15 zrušením celého auto-deploye: nahrazen ručním skillem ha-deploy (pull → config check → cílený reload/restart, nikdy reload_all). Tím odpadl i lock/status race. Viz decision_log.md 2026-06-15.
  • [x] [ha][S] modbus atrea trvale nezdravý — vyřešeno 2026-06-16: registry 1201–1206 nebyly špatné adresy, ale špatný function code — byly input_type: holding, ale Atrea aMotion má celou čtecí mapu jako input registry (FC04); holding (FC03) jen pro request blok 1001–10xx. Přepnuto na input_type: input, chyby ustaly. Při tom přidáno řízení výkonu ventilátorů (zápis do 1004). Viz decision_log.md 2026-06-16.
  • [ ] [ha][L] Řízení přebytků FTV — implementace (fázovaný plán, revize 2026-06-20) — plán v rizeni_energie.md po multiagentním review. Viz decision_log.md 2026-06-20.
  • Fáze 0 (gate): HOTOVO 2026-06-21 — 2775/2777 + offsety zapisovatelné a drží, ale kompresor inertní (e-Manager „Surplus control" nezapnut + chybí CEM elektroměr). Surplus-by-BUS tudy nejede. Lekce: zápisy do TČ jen přes HA modbus.write_register (pymodbus 2. master kolidoval, shodil rollback). Viz decision_log.md 2026-06-21.
  • v1 (nativní HA YAML, bez AppDaemon): signál binary_sensor.ftv_surplus_curtailed (2stupňový — gating SOC/cena 0,50/MPPT/balancing + PV-rise potvrzení) + helpery → EP2 5 kW → EP1 3 kW → script.klima_pv_soak; fail-safe nezávislý na mozku; balancing interlock (dní_od_plného>14 & SOC<100 → potlačit). ≈ 60–70 % hodnoty.
  • Fáze 2 (kompresor) — Path B OVĚŘENA + v1 NASAZENA 2026-06-21 (commit 129dc70). Setpoint-by-BUS funguje (2705/2720 DHW, 2713/2722 AK): flip-test ukázal DHW setpoint 48→60, AK 30→48, kompresor 15,7 kW, COP ~3,5. v1 = input_boolean.ftv_tc_boost (manuální: ON→60/48, OFF→48/30) + noční reset 22:00 (45/30). Surplus registry 2775/2777 opuštěny. Viz decision_log.md 2026-06-21. Zbývá (později): auto-zvedání dle Forecast.Solar (ne curtailment — pozdě), patrony overflow, bazén (Aseko), watchdog/age-check. Operační: snížit směšovač TV 75→55 před trvalým boostem.
  • Charakterizace (scripts/): noční spotřeba (= bazénová VZT), kapacity, COP, příkon kompresoru. Ověřit i EnerSpot zápornou cenu (FAQ). Práh diverze OTE 0,50 (firma); v pásmu 0,30–0,50 jímat doma. Závislost na Forecast.Solar (Fáze 3, viz níže).
  • [ ] [ha][S] Predikce výroby FTV — Forecast.Solar — ~~čeká na string dokumentaci~~ odblokováno 2026-06-20 (geometrie doložena projektem). Nainstalovat nativní integraci, config flow se 3 poli (souřadnice ~49,99 N / 14,65 E — ověř): dům 35° / azimut −59 / 14,4 kWp, carport jih 2° / 0 / ~4,3 kWp, carport sever 2° / 180 / ~7,4 kWp (nebo carport sloučit do 1 vodorovného pole 11,7 kWp). Hotová tabulka: ftv.md → Vstupy pro Forecast.Solar. Dá sensor.energy_production_today_remaining jako vstup pro prediktivní ranní arbitráž. Solcast Hobbyist až později pro vyšší přesnost. Viz ceny_a_tarify.md.
  • Konkrétní entity pro kaskádu jímání (součást bodu 3 výše): kompresor TČ (Modbus 2775 enable + 2777 setpoint kW — TČ si přebytek rozdělí samo) → patrony (switch.ftv_do_boileru 3 kW, switch.ftv_do_akumulacky 5 kW) → bazén (požadavek DI4, ohřev kompresorem). Detail v rizeni_energie.md.
  • [ ] [ha][S] TČ Energy: cross-check integrace vs. counter — sleduj dál — první srovnání 2026-06-14: dnešní přírůstek ecoforest_electric_energy_total = 8,3 kWh vs. denní counter TČ (2206) = 9,8 kWh, tj. integrace ~15 % pod. Split OK (buckety sedí na total, ověřeno živě). Možné příčiny: left-Riemann bias na cyklujícím inverterovém příkonu, 30s sampling míjí krátké špičky, nebo counter 2206 zahrnuje i patrony (2193 = jen kompresor). Když čistý celý den potvrdí >10 %, otestovat method: trapezoidal. Viz decision_log.md 2026-06-12.
  • [ ] [ha][M] Auto (BYD Dolphin) — odhad SoC + headroom „kolik teď uložit" — pro řízení přebytků/exportu znát volnou kapacitu auta. Návrh, formule, limity (sběrnice spí při parkování, výkonový floor 1,4 kW/fáze) a template senzor v wallbox.md → Odhad SoC. Enabler = WiCAN Pro OBD dongle (WiFi→MQTT→HA, ~$80, Mouser EU MP-WICAN-PRO) — čte pravý SoC při příjezdu. Presence z OCPP. Doplnit usable kapacitu dle varianty Dolphina. Nákup odložen.
  • [ ] [infra][S] sw-dilna: prověřit kabeláž portů 5 a 7 — port 7: 4650× link down + rx/tx errors; port 5: 165k TX errors při 10M linku. Pravděpodobně vadný kabel/konektor v dílně. Nález watchdogu doc_gen_unifi.py 2026-06-12.
  • [ ] [monitoring][M] InfluxDB 1.8 → 2.x — zahodit stará data, nastavit znovu; upravit HA integraci
  • [ ] [monitoring][S] Uptime Kuma — domigrovat health checks — Uptime Kuma nasazený (nahradil CheckMK, ten odstraněn 2026-06-11). Ověřit, že všechny klíčové hosty/služby tam jsou (vč. unifi-os 192.168.20.5, viz níže). CheckMK skripty smazány.
  • [ ] [ha][S] AppDaemon — projít appdaemon/apps/ a rozhodnout: zachovat a zdokumentovat use case, nebo eliminovat
  • [ ] [ha][S] Závlaha — smazat orphaned SI automatizaciautomation.sensor_smart_irrigation_travnik_2 („bucket < -25", stav unavailable) je v .storage (UI), ne v repu → smazat ručně přes UI/MCP. Volitelně odebrat i SI integraci + sensor.smart_irrigation_travnik_2. Viz decision_log.md 2026-06-21.
  • [ ] [ha][S] Závlaha — doladit prahy/dávky bilance po sezóně — kc (0,8/1,0), skip práh (−5 mm), strop (+20 mm), forecast práh (5 mm) jsou natvrdo v zavlaha_vyhodnoceni_bilance/zavlaha_rano. Kotva dávek ~10 min. První 1–2 týdny sledovat kaluže/podmáčení a četnost, doladit. Až výsadba zakoření (2027+), zvážit zvednutí prahu → řidší hlubší intervaly.
  • [ ] [ha][M] Závlaha — fyzický dešťový senzor — Open-Meteo past_days je model/reanalýza, ne lokální srážkoměr → hyperlokální bouřková buňka může být pod/nadhodnocená. Fyzický senzor zavře tu díru (ground truth) + umožní okamžitý abort běžící sekvence. Až bude, přepojit bilanci na lokální data (sensor group beze změny automatizací). Viz decision_log.md 2026-06-21.
  • [x] [ha][S] HA dual-NIC default route — vyřešeno 2026-06-19 — recidiva (default route přehozená na IoT NIC → HA timeout na VLAN 60/doorbell) opravena odebráním gateway z enp0s19 přes CLI (ha network update enp0s19 --ipv4-gateway ""; UI to neumí). Perzistence potvrzena plným cold rebootem HAOS (gateway enp0s19 zůstala null, primary enp0s18, HA→zvonek 401). Nahrazuje plánovaný route-metric pinning — bez gateway je default route deterministická i bez metrik; pfSense fallback netřeba. Kontrola po HA OS upgrade je nadále součástí dokumentovaného Dual-NIC postupu v homeassistant.md. Viz decision_log.md 2026-06-19 a 2026-05-06.
  • [~] [infra][S] Kernel 7.x migrace — pmx2 hotový, zbývá pmx1 — 2026-07-24 zjištěno: pmx2 už běží 7.0.14-3-pve (přišel s ním jako nový node, pve-manager 9.2.4), takže „kanárek" fáze je de facto odbytá 2,5 týdne bez incidentu (původní pin byl obrana proti IPI/TLB race na Ryzen 5 7430U, viz decision_log 2026-05-10). pmx1 zůstal na pinnutém 6.17.13-7-pve. Zbývá: apt dist-upgrade na pmx1 (159 balíčků: pve-manager 9.1.9→9.2.5, ZFS 2.4.1→2.4.3, kernel 7.0.14-6, sesynchronizuje pmx1 s pmx2) → proxmox-boot-tool kernel unpin && refresh → reboot. Teď bezpečné (QDevice kryje kvórum, i kdyby pmx1 nenaběhl). Postup: pmx1 je odlehčený (Scrypted pryč), klenoty na pmx2. Viz decision_log.md 2026-05-10.
  • [ ] [infra][M] Audit NFS/CIFS mountů v ostatních VM/LXC — projít všechny VM/LXC v homelabu (Immich LXC 104, Scrypted LXC 106, Jellyfin LXC 110, případně další), zkontrolovat /etc/fstab pro networkové mounty, aplikovat _netdev,nofail + systemd dependency pattern. Bez tohoto auditu hrozí stejný "Docker startne s prázdným bind mountem" scénář jinde. Viz decision_log.md 2026-05-11.
  • [ ] [monitoring][S] Loki/Grafana alert: kernel soft lockup — alert pravidlo na pattern soft lockup / hung_task v Loki napříč pmx1+pmx2 (job=syslog, syslog_identifier=kernel), notifikace přes Telegram. Včasné varování, kdyby se IPI/TLB race vrátil i po upgradu. Viz decision_log.md 2026-05-10.
  • [x] [infra][S] Proxmox qdevice (3. arbiter) — DOKONČENO 2026-07-24 — (duplicitní se „QDevice na TrueNAS") arbiter qnetd na TrueNAS .23, expected votes 2→3. Detaily viz výše + decision_log.md 2026-07-24.
  • [ ] [infra][S] Kernel panic tuning na pmx1+pmx2 — zkrátit zombie window při soft lockupu: nastavit kernel.hung_task_panic=1, kernel.hung_task_timeout_secs=120 a kernel.panic=10 (přes /etc/sysctl.d/99-watchdog.conf). Trade-off: rychlejší reset výměnou za citlivost na legitimně dlouhé I/O operace — vyhodnotit po pozorovacím okně. Viz decision_log.md 2026-05-10.
  • [ ] [docs][S] proxmox.md: kernel pin policy + upgrade postupdocs/infrastruktura/servery/proxmox.md (manual page) doplnit sekci o proxmox-boot-tool pinování a postup dist-upgrade (zejména po vstupu PVE 9.x s kernel 7.0.x). Viz decision_log.md 2026-05-10.
  • [ ] [infra][S] pfSense rule "Block MEDIA to Internal Networks" — source je 192.168.50.1 (gateway) místo <OPT3__NETWORK> → no-op. Rozhodnout: buď opravit source na celý subnet (pokud blok je záměr), nebo pravidlo odstranit. Viz decision_log.md 2026-05-06.
  • [x] [monitoring][S] pfSense filterlog — vypnout remote logging — hotovo 2026-06-12: pfSense remote syslog přepnut z logall na kategorie system/auth/dhcp/dpinger/resolver/vpn/routing (bez firewall events). Objem unlabeled streamu spadl z ~5 900 na ~240 řádků/5 min. Drop eventy lokálně přes clog. Viz decision_log.md 2026-06-12.
  • [x] [ha][S] Z2M syslog output — vypnout (duplicita) — hotovo 2026-06-16: z zigbee2mqtt/configuration.yaml advanced.log_output odebrán syslog (nechán console + file), deploy + restart Z2M addonu. Ověřeno: Z2M syslog duplicita ustala (0/1m, byl to celý empty-hostname stream), Z2M dál loguje přes journal. Pozadí: po ⑧ (Alloy na debian:5514) začal Z2M syslog na 192.168.20.20:5514 dorážet a duplikovat journal logy s prázdným hostname.
  • [ ] [ha][S] Z2M addon přepisuje configuration.yaml — při startu rozbalí !secret mqtt_password na plain text v /config/zigbee2mqtt/configuration.yaml a občas i přepisuje serial: sekci (zjištěno 2026-05-08 při migraci). Vede k git divergenci a leak hesla na disk. Investigate: jak donutit addon, aby !secret nechal v souboru, nebo přesunout config pryč ze sledovaného repu.

Monitoring Stack (přestavba)

Výsledky revize 2026-03-11 — viz docs/decision_log.md.

  • [x] [monitoring][S] Grafana MCP — hotovo, viz Current Focus
  • [ ] [monitoring][M] InfluxDB 1.8 → 2.x — viz Current Focus
  • [x] [monitoring][S] Pinout verzí — hotovo, viz Current Focus
  • [x] [monitoring][S] rsyslog relay — hotovo: nativní rsyslog relay na debian-services (514/udp → HA:5514 RFC5424). RFC3164 zdroje (UniFi/switche/SLZB/TrueNAS) + pfSense přes relay; pmx/PBS přímo s [%HOSTNAME%] template. Všechny syslog zdroje mají hostname (2026-06-14, viz decision_log.md).
  • [x] [monitoring][M] Grafana provisioning — datasources, dashboardy i alerting (contact points / policies / rules) provisionované z grafana/provisioning/, verzované v repu.
  • [~] [monitoring][M] Grafana Alerting → Telegram — alerting pipeline živá od 2026-06-14: provisioned Telegram contact point + notification policy (root → Telegram) + log-freshness rules, vše verzované v grafana/provisioning/alerting/. Zbývá rozšířit o další pravidla (kernel soft lockup, auth failures, ZFS/disk — viz samostatné todos).
  • [ ] [monitoring][M] Dashboardy — vytvořit: Energy/FTV (Victron), HA Overview (teploty, přítomnost), Infrastructure Logs, Network
  • [x] [monitoring][S] Loki label hygiena (logging review ⑦) — hotovo 2026-06-16: v debian Alloy loki.process přidány dvě stage.template — collapse session-\d+\.scopesession.scope (bylo ~110 jednorázových app hodnot/h → stream churn) a strip .marada.(lan|name) z hostname (pfSense.marada.lanpfSense). Ověřeno canary. Duplicitní AP hostnames (U7-Pro-Outdoor vs U7ProOutdoor) jsou historické/neaktivní → self-heal s 90d retencí, neřešeno.
  • [x] [monitoring][L] Alloy syslog ingest na debian-services (logging review ⑧) — hotovo 2026-06-15: standalone Alloy (grafana/alloy:v1.16.3, docker) na debian-services sbírá veškerý syslog (5514/5601) → Loki; relay forward přesměrován na lokální Alloy; pmx/PBS repointed; HA addon osekán na journal-only. SPOF i round-trip pryč, ověřeno (100 % job=syslogservername=debian-services). Relay zůstal (bracket hack neretired — native extrakci nechat na pozdější optimalizaci). Viz decision_log.md 2026-06-15.
  • [x] [monitoring][S] follow-up: native __syslog_message_hostname — NEJDE — ověřeno 2026-06-16 ephemerálním probe (relabel __syslog_message_* → test label, RFC5424 zpráva bez bracketu): __syslog_message_hostname ani __syslog_message_severity se v tomto Alloy buildu (v1.16.3) nepopulují vůbec (level label je taky dlouhodobě prázdný). Bracket [hostname] workaround i rsyslog relay jsou tedy nutné, nejdou retirovat. Uzavřeno.
  • [x] [monitoring][S] Loki retention — hotovo 2026-06-12: compactor retence 90d (retention_enabled: true, delete_request_store: filesystem), config verzován v docs/files/docker/debian-services/loki/config.yaml, Loki bump 3.0.0 → 3.7.2 (ověřeno ready + oba joby tečou). Deprecated table_manager blok odstraněn.

AI Stack

  • [x] [ai][S] Grafana MCP — hotovo, viz Current Focus
  • [ ] [ai][M] Home context design — strukturovaný YAML s rutinami, preferencemi a kontextem rodiny; základ pro AI agenty
  • [ ] [ai][L] Lokální LLM — Mac Mini M4 Pro (24-48 GB RAM) + Ollama; prerequisita pro privacy-safe agenty offline
  • [ ] [ai][M] Telegram chatbot — rozšíření log monitoru o interaktivní chatbota s home kontextem (viz log_monitor.py na Debianu)
  • [ ] [ai][M] n8n MCP integrace — n8n flow s přístupem k MCP serverům (homeassistant, grafana, github, pfsense, truenas, unifi) jako kontextová vrstva pro Telegram bota
  • [ ] [ai][M] n8n vs Python — rozhodnout jednu automation vrstvu; dnes koexistují Python skripty + n8n + log_monitor.py bez jasného rozdělení rolí

Home Assistant

  • [ ] [ha][S] AppDaemon — viz Current Focus
  • [x] [ha][M] Scrypted HA integrace — HACS ha_scrypted nainstalována; NVR sidebar + karty fungují; camera entity přes HomeKit Controller (TBD)
  • [x] [ha][M] Scrypted NVR — placený plugin aktivní; 24/7 nahrávání, smart detekce, timeline
  • [ ] [ha][M] Doorbell → HomeKit — FW upgrade doorbelllu na V3.7.0 + @vityevato/hikvision-doorbell plugin; ring notifikace + gate unlock v Apple Home; viz docs/infrastruktura/kamery/doorbell_gate.md
  • [ ] [ha][L] Automatizace: přítomnost + světla — chytré světelné scény podle přítomnosti, denní doby a oblasti; největší mezera pro misi "spolehlivý dům"
  • [ ] [ha][L] Automatizace: topení/VZT — propojit přítomnost + plány + EcoGeo + Atrea do uceleného řízení
  • [ ] [ha][M] HA architektura — sepsat konvence pro entity, balíčky a automatizace; viz todos položka v sekci Chytrý Dům
  • [ ] [ha][M] DALI Config — sjednotit mapování tlačítek a skupin v DaliConfig
  • [ ] [ha][S] UniFi Network integrace — přidat do HA (UniFi OS Server 192.168.20.5:11443, API key v .env jako UNIFI_MCP_API_KEY); device trackery, přítomnost
  • [ ] [ha][S] Ubiquiti airOS integrace — LiteBeam WAN CPE monitoring (192.168.4.1)
  • [ ] [ha][M] Dashboardy HA — nástěnné panely pro ovládání domu (tablet/iPad)
  • [ ] [ha][S] Review Add-ons — AirCast, Music Assistant, ~~Frigate~~ — zhodnotit přínos; Frigate zamítnut ve prospěch Scrypted NVR
  • [ ] [ha][M] Velux gateway migrace — nahradit KLF200 (chronický TCP socket problém); ověřit tilt u Velux CZ pro KIG300, jinak Somfy TaHoma Switch; viz docs/chytry_dum/technologie/velux.md sekce "Plán migrace"
  • [ ] [ha][S] Meteo: Ecowitt WS90 Powered by Shelly (Zigbee) — ✅ trigger splněn, nákup odblokován (ověřeno 2026-06-18). Náš stack je Z2M (SLZB-MR3), ne ZHA. Z2M WS90 device page má plnou podporu — dekóduje vítr (speed/dir/gust), UV, srážky, teplotu/vlhkost, osvit, baterii. Z2M #31070 closed: „hodnoty se neaktualizují" nebyl z2m bug, ale firmware — řeší se aktualizací firmwaru WS90 přes Bluetooth/Shelly app před párováním, pak reporting stabilní (pozor: stížnosti na stabilitu u fw 1.1.6 → po nákupu ověřit/nahrát nejnovější fw). (Pozn.: ZHA #4558 merged v HA 2026.4.0 — relevantní jen kdyby se přešlo na ZHA.) Pak: koupit WS90 Shelly variantu (~4 500 Kč) + 12 V/1 A power adapter + extension cord (~700 Kč) pro vyhřívání anemometru v zimě. Umístění: zahradní domek — předem nachystat průchodku stěnou pro 12 V DC napájecí kabel (adaptér uvnitř, ven jen nízké napětí; data bezdrátově Zigbee, žádný datový kabel), dimenzovat na rezervu + vodotěsnost. Spárovat do Z2M, bez gateway. Viz decision_log.md 2026-06-01.

AppDaemon auto-reload

  • [x] [ha][S] Restart AppDaemon addonu při změně Python souborů — vyřešeno 2026-06-15: skill ha-deploy má samostatnou třídu addon_restart pro appdaemon/hassio.addon_restart (addon a0d7b954_appdaemon), nezávisle na HA-core reload/restart. AppDaemon watcher to spolehlivě nedělá (potvrzeno 2026-05-25 při refactoru daikin_modbus.py).

Climate orchestrace (léto 2026)

  • [ ] [ha][S] Interlock okno ↔ klima (nízko visící ovoce, předstupeň orchestrátoru) — dvě jednoduché automatizace, které nepotřebují celý orchestrátor níže: ① okno otevřené > 5 min & klima v té zóně běží → jednotku vypnout + push (motorizovaná okna patra cover.*_okno mapují 1:1 na pokoje: cover.betka_oknoclimate.daikin_1_06, lucka1_05, belka1_04, tomas1_07, telocvicna1_08; přízemní okruh binary_sensor.dum_zavreny_prizemi → skupina klima_off); ② minimální večerní režim: po západu slunce & běží klima → script.klima_off + připomínka „vyvětrej" (cover.hala_okno_schodiste + cover.galerie_okno pro komínový efekt). Celá provozní strategie je teď 100% manuální — tohle je první krok k automatizaci bez čekání na plný [L] orchestrátor.
  • [ ] [ha][L] Orchestrátor okna ↔ klima — řízení s vědomím PV, předpovědi a stavu otvírání. Vstupy: weather.forecast_home daily max, PV přebytek, binary_sensor.dilna_sensor_3 (okruh okna přízemí), cover.*_okno (motorizovaná okna patra), termostaty + climate entity per zóna. Akce: skupinové scripty klima_* + ovládání motorizovaných oken. Závislost: dodat seznam oken pro komínový efekt (kdo nahoře/dole). Nadstavba nad jednoduchým interlockem výše.
  • [ ] [ha][S] Pojmenovat dilna_sensor_4/5/6 — fyzicky zjistit, co je na vstupech 4–6 Modbus relé v dílně (192.168.40.23). Přejmenovat v modbus/rele_dilna.yaml. Diagnostika: otevřít/zavřít po jednom a sledovat live stav.
  • [ ] [ha][M] Ecogeo room sensor — obývák — Ecoforest integrace neexponuje vnitřní pokojové čidlo (jen outdoor + dhw). Možnosti: a) ověřit Modbus registr pro pokojové čidlo na řídicí desce Ecogea a doplnit do modbus/ecoforest.yaml; b) zigbee teploměr v obýváku jako náhradu.
  • [ ] [ha][M] Integrace VZT bazénu — bazénová VZT nemá v HA žádnou HVAC entitu. Najít typ jednotky (pravděpodobně Atrea — má Modbus, viz modbus/waveshare_vzt.yaml?) a integrovat teploty + ovládání.

Bazén Aseko (zprovozněno 2026-05-27)

  • [ ] [ha][S] Dashboard karta — Bazén — sekce na hlavním přehledu (nebo samostatná view Bazén): pH, teplota, požadované hodnoty, stav filtrace + dávkovacích čerpadel (algicide, OXY Pure, pH-, flocculant), spotřeby kanystrů od posledního refillu + total, stav water-flow k sondám, connection_status. Refill tlačítka (button.bazen_*_refill) jako akce. Entity prefix sensor.bazen_* / binary_sensor.bazen_*.
  • [x] [ha][S] Notifikace — pH out of range — hotovo 2026-06-11: automatizace bazen_ph_out_of_range (pH mimo 6,8–7,4 > 1 h při běžící filtraci → push iPhone).
  • [x] [ha][S] Notifikace — no flow alarm — hotovo 2026-06-11: automatizace bazen_no_flow_to_probes.
  • [x] [ha][S] Notifikace — Aseko offline — hotovo 2026-06-11: automatizace bazen_aseko_offline (connection_status ≠ online 15 min NEBO stale last_data_update > 15 min).
  • [x] [ha][S] Notifikace — nízká hladina kanystrů — hotovo 2026-06-11: automatizace bazen_chemie_dochazi, práh 17 l z 20l kanystru pro všechny 4 chemie. Po prvním reálném refillu ověřit, že práh sedí (kanystr se nesmí vyprázdnit dřív, než přijde notifikace).
  • [x] [ha][S] Kalibrace pH sondy — checklist — vyřešeno: sonda vyměněna za novou a nakalibrována (2026-06). Běžná rekalibrace 1× za 3–6 měsíců je v docs/technologie_domu/voda/bazen.md → Údržba.
  • [ ] [ha][S] Audit oken přízemí — projít fyzicky a ověřit, zda okruh oken (Modbus dilna sensor 3) pokrývá VŠECHNA otevíratelná okna v přízemí včetně HS portálu na terasu. Pokud ne, dotáhnout / přidat zigbee kontakty na to, co chybí.

Kamery & Scrypted (detekce, obraz, archivace)

Stav 2026-05-28: Advanced Notifier plugin je nasazený a připojený do HA (Scrypted 192.168.20.21), switch...notifications_enabled = on, ale exportuje jen plugin diagnostiku — žádné camera.* entity ani per-kamera detekční senzory (camera.* v HA prázdné). Root blocker pro detekci do HA je konfigurace ve Scrypted, ne v HA.

  • [ ] [ha][M] Detekce postav → HA — ve Scrypted Advanced Notifier pluginu zapnout export 6 kamer + detekční pravidlo person (předpoklad: per-kamera zapnutý object detection plugin — OpenVINO/CoreML, na AMD iGPU poběží detekce spíš na CPU). Cíl: per-kamera person binary_sensor v HA. Poté navázat HA automatizace (kontextové notifikace „pošťák/auto" — jsem doma? je noc?). Bez tohoto kroku „chytrá notifikační vrstva" z docs/infrastruktura/kamery.md neexistuje.
  • [ ] [ha][S] Cleanup duplicitní AN config — v HA jsou duplicitní mrtvé Scrypted AN entity (..._2, stav unavailable) — pozůstatek po dvojím nastavení/přepojení integrace. Odstranit mrtvý config entry. Také zvážit nevyužitý WebRTC Camera card (nemá co zobrazovat, dokud nejsou camera entity).
  • [ ] [infra][S] Noční obraz kamer — Hikvision DS-2CD2746G2-IZS, noční obraz hodně špatný. Projít web UI každé kamery: shutter/expozice (rozmazání pohybu), Smart IR (přepal blízkých objektů), IR odraz od stěny/okapu/krytu dome, WDR, Supplement Light mode (IR vs bílé světlo), Day/Night přepínání. Fyzicky zkontrolovat kondenzaci/špínu na dome krytu.
  • [ ] [infra][S] iCloud HKSV nahrávání — per kamera ve Scrypted HomeKit pluginu zapnout HomeKit Secure Video; v Apple Home přiřadit „Record" + oprávnění kdo vidí. Ověřit retenci 10 dní (iCloud+). Viz tabulka archivace v docs/infrastruktura/kamery.md.
  • [ ] [infra][M] StorJ archiv kamer (rclone sync) — Scrypted neumí nativní push do S3. Postavit rclone sync job: TrueNAS NVR recordings → StorJ (S3) + cron/systemd timer. Potřeba: cesta k nahrávkám na TrueNAS + StorJ S3 credentials (přes rclone config / .env, ne plaintext). Nahrazuje „manuální export" z docs/infrastruktura/kamery.md. Souvisí s rozhodnutím retence (Infrastruktura → „Zálohy Kamer").

Infrastruktura

  • [ ] [infra][S] site/ adresář — vyčistit; pravděpodobně artefakt z MkDocs pokusu; duplikuje docs/files/
  • [ ] [infra][M] PBS Permissions — vyčistit: odstranit homepage-monitor@pbs!homepage, ponechat jen root@pam!doc-root-token
  • [ ] [infra][L] PBS na TrueNAS — zvážit přesun PBS z pmx2 VM na TrueNAS (eliminace chicken-egg při obnově)
  • [ ] [infra][L] WAN Bridge Mode + IPv6 — převod z router mode; ověřit dopad na pfSense, monitoring, firewall; rollback plán nutný
  • [ ] [infra][M] IPv6 Audit — DHCPv6/SLAAC na VLANách, Privacy Extensions, firewall pravidla
  • [x] [infra][M] Kamery Firmware — 6 kamer aktualizováno na V5.7.23 (2026-03-18) ✅; doorbell V2.2.65 → V3.7.0 selhal, čeká se na odpověď HikVision podpory
  • [ ] [infra][M] USW-48-PoE migrace — přechod z 2× Aruba HPE 1830 na UniFi USW-48-PoE (adoptován, DHCP .10); jedna Aruba jako cold standby; failover plán v docs/infrastruktura/sit/plan.md
  • [ ] [infra][S] USW-48-PoE statická IP — přiřadit statickou IP (pfSense DHCP reservation nebo přímo na switchi); aktuálně DHCP .10
  • [ ] [infra][S] Aruba failover konfigurace — nastavit záložní Arubu podle failover plánu (porty, VLANy); zálohovat konfiguraci
  • [ ] [infra][M] Inventory sync skript — Python skript: pfSense DHCP + UniFi klienti → inventory_generated.md + pojmenování klientů v UniFi
  • [ ] [infra][M] UniFi skripty na nový OS Server — migrovat scripts/backup_unifi.py, doc_gen_unifi.py, sync_pfsense_unifi.py z legacy 192.168.20.6:8443 (user/pass) na UniFi OS Server 192.168.20.5:11443 (API key, endpoint /proxy/network/integration/v1/). Aktuálně zálohují prázdný legacy controller — silent backup loss.
  • [x] [infra][S] Nginx wifi.marada.name přepnoutwifi.conf na 192.168.20.5:11443, deploynuto do /mnt/data/homelab-stack/nginx/conf.d/, nginx reload OK, smoke test vrací UniFi OS UI (2026-04-27).
  • [ ] [infra][S] Monitoring host pro UniFi OS Server — přidat unifi-os (192.168.20.5) do Uptime Kuma. (Legacy 192.168.20.6 controller dekomisován.)
  • [ ] [infra][M] Dekomise LXC 101 (unifi) — po validaci, že vše funguje na OS Serveru a po migraci skriptů + nginx: smazat z Proxmox inventory (Destroy včetně unreferenced disks), odstranit DNS/DHCP záznamy. PBS zálohy ponechat retenčně. Aktualizovat inventory.md, proxmox.md, plan.md (mermaid). LXC stopnut 2026-04-27.
  • [ ] [infra][S] ZFS replikace VM 109 (unifi-os) na pmx2 — UniFi OS Server je teď SPOF na pmx1, ostatní VM/LXC mají ZFS replikaci přes pvesr. Stojí za přidání kvůli faster failover (10s replikační RPO vs ~10 min PBS restore).
  • [ ] [infra][S] LXC 110 (stash) doplnit dokumentaci — chybí v inventory.md a v proxmox.md má placeholder. Doplnit specifikaci (CPU/RAM/disk/IP), účel, port mapping, případně nginx záznam (docs/files/docker/debian-services/nginx/conf.d/stash.conf existuje, ale netracknutý v gitu).
  • [ ] [infra][M] Zálohy Kamer — rozhodnout retenci NVR záznamů (Storj nebo jen lokální HDD); implementace sync jobu viz Home Assistant → „Kamery & Scrypted" → StorJ archiv kamer
  • [ ] [infra][S] Rack dokumentace — vyfotit a popsat patch panel a zapojení switchů
  • [x] [infra][M] pfSense API — pfSense-pkg-RESTAPI v2.7.3 nainstalován na pfSense CE 2.8.1; API Key auth (SHA-512); MCP server gensecaihq/pfsense-mcp-server v .mcp.json
  • [x] [infra][S] pfSense MCP ověření — hotovo 2026-06-11: system_status vrací živá data (pfSense CE, uptime 31 dní).
  • [ ] [infra][L] pfSense Failover — záložní konektivita (LTE/WiFi) pro výpadek optiky

Služby & Docker

  • [ ] [services][M] Immich NFS migrace — přesunout /opt/immich/upload na TrueNAS NFS share (archive/immich)
  • [ ] [services][M] Immich Backup — PostgreSQL dump + media files do PBS
  • [ ] [services][L] Nextcloud — rodinné sdílení souborů, kalendáře, kontakty; privacy-first alternativa k iCloud
  • [ ] [services][M] Calibre-web — e-book knihovna; Send-to-Kindle, OPDS feed
  • [ ] [services][M] Úkoly & Poznámky — self-hosted task manager (Vikunja?) + notes (Obsidian LiveSync?); sync s iPhone, offline

Audio & Video

  • [ ] [ha][L] Multiroom Audio — Bang & Olufsen integrace + HomePody do každé místnosti
  • [ ] [ha][M] AirCast — integrace Google Nest Audio do Apple AirPlay (hassio-addons/app-aircast)
  • [ ] [ha][M] Apple TV — integrace jako mediální hub + Matter border router (čekáme na nový model)
  • [ ] [ha][S] Lokální hlasové ovládání — HA Assist (Whisper/Piper) pro soukromí
  • [ ] [ha][L] Pokojový Multisenzor — vlastní PCB (ESP32-S3 + nRF52840): mmWave, CO2, temp, voice, displej+encoder, Thread/Matter, 24V napájení z rozvaděče, Jung LS 990 design; viz docs/projekty/room_multisensor.md

Projekty / DIY

  • [ ] [diy][S] Zahradní domek: soklová lišta — vybrat a nakoupit. Kandidát: Likov LO-PER 80 (hliník, perforovaný, šířka 80 mm odpovídá hloubce skladby OSB 18 + lať 40 + plotovka 21 ≈ 79 mm). Alternativy: Baumit Sokl-profil, případně Z-profil okapnice RAL 7016 (bez perforace — horší, neodvětrá rastr odspoda). Termín: před první zimou po zaplášťování, dokud rainscreen mezera není ze spodu chráněna proti hmyzu/myším a folie není mechanicky fixovaná. Detail viz docs/projekty/zahradni_domek.md sekce "Detail spodní hrany OSB (nad EPDM)".

Dokumentace

  • [ ] [docs][M] Aktualizace příkladů — projít docs, změnit "Reolink" → "HikVision", "Shelly" → reálný HW
  • [ ] [docs][L] MkDocs publikace — kompilace do Cloudflare Pages (docs.marada.name), přístup přes Cloudflare Zero Trust

Dokončeno (archiv)

  • [x] [ha][S] TČ Modbus — zprovoznit HP24 mapu — vyřešeno 2026-05-28. BMS port přepnut z MB Slave na MB Extended (instalatér měl základní mód místo rozšířeného), BUS selektor už byl na BUS_HP24. Po power-cyclu TČ data tečou živě — sensor.ecoforest_* čtou reálné hodnoty.
  • [x] [monitoring][S] Grafana MCP — hotovo (zjištěno 2026-06-11, TODO byl stale): mcp-grafana už je v .mcp.json a funguje.
  • [x] [ha][S] HA notifikace: tiskárna — všechny kazety + dostupnost — hotovo 2026-06-11: automatizace printer_cartridge_low hlídá všech 5 kazet (PGBK/C/M/Y + MC) pod 11 % a 24h nedostupnost tiskárny; push na iPhone (ne Telegram — ten v HA není).
  • [x] [monitoring][S] Pinout verzí — hotovo (ověřeno 2026-06-11): grafana/loki:3.0.0 a grafana/grafana:12.3.3 pinnuté v compose. Jediný zbývající latest je olbat/cupsd.
  • [x] [infra][M] pmx1 kernel + ZFS upgrade — provedeno 2026-05-11 (kernel 6.17.13-7-pve, ZFS 2.4.1, pve-manager 9.1.9, pin OK, ~4 min downtime pro pfSense reboot).
  • [x] [infra][S] Reboot-test NFS mount fix na debian-services — provedeno 2026-05-11 ~11:03, LXC 107 rebootnut z pmx1 přes pct reboot 107. Boot timeline: remote-fs.targetmnt-data.mount (úspěch) → docker.service (čekal). Všech 7 kontejnerů startlo čistě, ha.marada.name / wifi.marada.name / data.marada.name po ~60 s vrátily 200/302. Fix potvrzen funkční.

  • [x] Switche — reset, lokální správa, IP do plan.md

  • [x] DNS Jména — Nginx reverse proxy *.marada.name
  • [x] Network Policy Audit — IP adresace sjednocena
  • [x] Statická IP — pfSense, Proxmox, switche, HA, TrueNAS, PBS, TP-Link dílna
  • [x] WiFi Roaming (Apple Fast Return) — 802.11r + fyzické přepojení AP na jeden switch
  • [x] ZFS Migration — oba nody ZFS, replication pmx1↔pmx2
  • [x] Config Backupsscripts/backup_configs.py (pfSense XML, UniFi JSON, Aruba config)
  • [x] AI Log Monitorlog_monitor.py na Debianu, Loki → Gemini Flash → Telegram, 2× denně
  • [x] FTV dokumentace — Victron záloha celého domu otestována
  • [x] HA MCP server — nasazen, funkční, v .mcp.json