Automatizace domu jako dlouhodobý sen
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 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).
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.
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.
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 :).