tomasz.codes

Automatizace domu jako dlouhodobý sen

publikováno 19.02.20225 min čtení
logo pro domácí automatizaci

Malá nenápadná myšlenka/sen

Automatizace je strašně obecný pojem a posunula se hodně dopředu ve všech odvětvích. Jak jsem byl ještě dítě, to teprve pomalu začínaly mobily a elektronika nebyla všude kolem. Lidi se ještě normálně potkávali a své hejty filtrovali maximálně v hospodě u piva. Jak jsem rostl, přibývaly samé nové věci a mě strašně bavilo všechno rozebírat. Ze začátku se mi to zpátky poskládat často nepodařilo, ale někdy v pubertě jsem si poskládal primitivní Hi-Fi, která fungovala!

Primitivní proto, že použitý zesilovač byl z rozebraného PC reproduktoru. K němu jsem připojil pomocí drátků dva reproduktory a jako chlazení jsem tam přidal svítící ventilátor z PC. V té době jsem pájku ještě nepoužíval a drátky jsem pouze stočil dohromady a obalil izolační páskou. Na to, jak jsem to udělal, tak drží dodnes (už 15 let). Přežily i rekonstrukci, kdy jsem je používal na stavbě.

V takovém duchu rozebírání a skládání zpátky dohromady to šlo dál a prolínalo se to s programováním webů a aplikací. U všeho, co jsem dělal do práce nebo ve volném čase mě napadaly "futuristické" myšlenky co bych chtěl naprogramovat, automatizovat a vytvořit. Pro příklad, byly to myšlenky typu:

  • chytré zrcadlo (smart mirror)
  • programovací IDE ve virtuální realitě
  • tvorba hry k učení programování (pořád chci)
  • mobilní aplikace k ovládání domácnosti
  • auto-generovaný backend s API a UI
  • a další miliarda věcí...

V té době mi můj skill, dostupné technologie a finance neumožňovaly realizovat skoro nic. Jak se teď na to zpětně dívám, tak jsem se posledních 15 let nonstop učil a zlepšoval (učení nejspíš nikdy nepřestane, zlepšování snad taky né :), až jsem dospěl do momentu, kdy se mi některé nápady zdají jednodušší, dostupnější a některé se mi už i částečně povedly realizovat.

Proč vůbec tohle vše?

Rozhodl jsem se založit blog, protože toho v hlavě už nosím strašně moc a potřebuji si trochu uspořádat myšlenky. Také si myslím, že informace/návody co budu sdílet mohou být dost užitečné a ušetří hodně času a chyb dalším lidem co řeší to samé. Budu popisovat na co vše jsem použil automatizaci a jak vše dal dohromady.

S myšlenkou automatizace celého domu jsem si začal hrát někdy v roce 2017/2018, kdy začaly vznikat první pokusy a projekty. První z nich bylo tzv.: "BHE" (Best home ever).

BHE aplikace v1 dashboard

BHE v1 začátky

BHE byla taková první vlaštovka v headless CMS, ale to jsem ještě ani nevěděl, že takový pojem existuje. Jednalo (ano minulý čas, v1 už je deprecated) se o aplikaci postavenou na Node.js s frontendem v Reactu. Výhoda a úspora práce byla v tom, že se napsaly pouze configy a databázové modely ($ Sequelize$ ) pro moduly a celý admin se vygeneroval automaticky. Modulem se rozumí jedna sekce, např. Články, Trasy, Uživatelská práva atd. Pokud jsem do složky dopsal i config pro formulář, vygenerovaly se i formuláře pro přidání a editaci. Takto jsem byl schopný postavit celý admin včetně API za nízké desítky hodin (zaleželo na velikosti).

BHE v1 list
BHE v1 formulář

Oblíbil jsem si to natolik, že jsme to začali používat v práci i když první myšlenka byla pro automatizaci domu. Nevypadalo to nijak hezky, ale účel to plnilo. My jsme se věnovali tvorbě mobilní aplikace a API jsme měli hned hotové. Časem jsem vytvořil knihovny, které obsahovaly přepoužitelné moduly, aby se nemusely kopírovat, a tak při inicializaci, jsme hned měli pořešené uživatele, práva, logy atd.

BHE v2 a vše kolem

Po první verzi jsem zkoušel několik aplikací na mobil a připravoval si různé vzhledy pro ovládání světel, tlačítek a zobrazování teploty, ale všechny zůstaly zatím nedodělané. Vždy se našlo něco víc důležité. Aplikace jsem psal v React Native a zkoušel jsem v nich několik UI knihoven, kde jsem často zjistil, že mi v nich něco chybí.

Jak šel čas, tak jsem psal různé knihovny až jsem se dostal k předělávce BHE, protože mě tam několik věcí štvalo. Modulový systém zůstal, ale předělal jsem architekturu. Rozdělil jsem admin (UI část) a API, v UI jsem přepracoval vzhled a použil $ Fluent UI od Microsoftu$ . Ten byl ještě docela dost neodladěný a některé komponenty napsané tak, že bych se za ně i styděl. Dohromady to ale vypadalo hezky a dalo se na tom i něco postavit.

BHE v2 navigace
BHE v2 list
BHE v2 formulář

Hodně věcí se vylepšilo, formuláře jde configem rozdělit do různých gridů, nahrávání modulu je možné z X knihoven a další. Aktuálně vše nasazujeme na Kubernetes, takže se dá jednoduše API naškálovat na více podů a práce s celým už skoro "frameworkem" je jednodušší.

Konečně automatizace

Mezi tím vším programováním jsme konečně dokončili rekonstrukci a nastěhovali se do rodinného domu a já mohl reálně začít aplikovat to co jsem posledních několik let zkoušel na prototypech, papíře a v hlavě. Toto je téma, co chci více rozepsat v této části blogu, tak jen navnadím aktuálním dashboardem.

aktuální verze dashboardu automatizace

Pro info tady u nás mluvíme nářečím česko-polským s troškou němčiny, tak se to může různě objevovat na obrázcích :).