JUŠTIK, M. Modul chytrého ovládání žaluzií v nástroji Home Assistant [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.
Student se zdatně zhostil úkolu vytvoření komponenty pro Home Assistant a získal pozitivní zpětnou vazbu od komunity uživatelů. Práce má vysokou praktickou hodnotu a je příkladem excelentního studentského projektu. Práci doporučuji hodnotit stupněm A jako výbornou.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Informace k zadání | Práce si klade za cíl vytvořit komponentu pro domácí automatizační nástroj Home Assistant, která umožní pokročilé ovládání okenních žaluzií nejenom nastavením pozice zatažení, ale také náklonu pomocí jednoduchých pokynů nahoru a dolů. Jedná se o unikátní a inovativní řešení, které bylo komunitou uživatelů dlouhodobě poptáváno. | ||
Práce s literaturou | Student samostatně nalezl relevantní literární prameny. | ||
Aktivita během řešení, konzultace, komunikace | Student byl aktivní během zimního i letního semestru. Konzultace probíhaly pravidelně s minimálně měsíční frekvencí. Student byl vždy velmi dobře připraven. | ||
Aktivita při dokončování | Praktická implementace byla dokončena s předstihem a autor ji nabídl k otestování komunitě uživatelů, kde získal zpětnou vazbu, o kterou implementaci dále rozšířil. | ||
Publikační činnost, ocenění | Práce byla prezentována komunitě uživatelů na oficiálním diskusním fóru nástroje Home Assistant, na platformě Reddit a na konferenci Excel@FIT. |
Výsledek práce je široce použitelný a funkční . Implementační řešní ovšem nedosahuje kvalit, kterých by mohlo i přes relativně nízkou složitost, malý rozsah vlastního řešení (<700 řádků aplikační logiky) a vysokou dostupnost kvalitní dokumentace použitých nástrojů a knihoven. Práci tedy sumárně hodnotím 74 body a stupněm C, dobře.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Náročnost zadání | Autor práce musí nastudovat možnosti ovládání pohyblivých okenních rolet na základě časování jejich posuvu a následně způsob implementace rozšíření do velmi populární a kvalitně zdokumentované automatizační platformy Home Assistant (dále "HA") v jazyce Python. Autor má k dispozici značné množství online materiálů a tuto část nepovažuji za příliš stěžejní. Středobodem práce by měla být implementace a testování samotného rozšíření a zvýšení možností jeho konfigurovatelnosti, ovladatelnosti a automatizovatelnosti oproti existujícím řešením. Toto autor pokryl relativně kvalitně integrací do HA s množstvím uživatelského nastavení. Autor implementaci ověřuje i na skutečném hardware, který musí nejdříve být přeflashován, nastaven a integrován do HA. Práci sumárně hodnotím jako možná lehce jednodušší, ale i přes to průměrně obtížnou. | ||
Rozsah splnění požadavků zadání | Všechny body zadání byly autorem práce v plné míře splněny. | ||
Rozsah technické zprávy | Dle hodnocení fakultní aplikace pro analýzu závěrečných prací ( https://app.fit.vut.cz/normostrany ), je práce v rozsahu zhruba 50 normostran. S 20 obrázky v hlavním textu práce a dalšími 10 v přílohách. Rozsah vypracované práce považuji v obvyklém rozmezí. | ||
Prezentační úroveň technické zprávy | 70 | Kapitoly na sebe obsahově logicky navazují, jsou povětšinou čtivé i relevantní a pro čtenáře lehce vstřebatelné a pochopitelné. Práce je ve vhodné míře doplněna ilustrativními obrázky. Autor v určitých místech v textu uvádí termíny, se kterými čtenáře ještě neseznámil a nebo v daných místech chybí reference prostřednictvím odkazu v poznámce pod čarou, příkladem jsou: kriticky důležitá knihovna XKNX travelcalculator.py je při první zmínce v sekci 3.7.1 bez reference config a option flow, poprvé zmíněné v kapitole 3.7.4 bez další reference či vysvětlení o co se jedná zmínka o knihovně voluptuous v kapitole 4, opět bez reference či zdůvodnění jejího výběru zmínka zkratky WMO v kontextu meteorologického API bez vysvětlení jejího významu či další reference Další poznámky: text v sekci 4.3 by si zasloužil sekvenční diagram, než se snažit popsat nějaký postup chování programu v několika odstavcích | |
Formální úprava technické zprávy | 62 | Úprava technické zprávy je všeobecně kvalitní. Autor korektně používá standardizovanou šablonu pro závěrečné práce a nedopouští se při tom výrazných typografických chyb. Autor vhodně využívá prostředků, které mu prostředí pro sázení dokumentu poskytuje. Text je sice vhodně doplněn ilustrativními obrázky, nicméně některé z nich jsou v dokumentu vloženy jako rastry, což u vlastních diagramů a skic uživatelského rozhraní považuji za hrubou chybu. Kapitola 1 a 2 jsou psány v trpném rodě a zbytek práce od kapitoly 3 je často psán v rodě činném. To je pro technickou práci zcela nevhodné a formulace vět zároveň působí, jakoby na řešení autor s někým aktivně spolupracoval. Mimo to pak práce obsahuje několik faktických nepřesností a nevhodných formulací, jako jsou například: "Funguje nad upravenym protokolom TCP, ktory zabezpecuje spolahlivu a bezpecnu komunikaciu [...]" (kapitola 2.2.3), není fakticky správné stanovisko v kontextu bezpečnosti přenosu, "LED dióde" (kapitola 2.3.2), LED (light-emitting diode) je zkratka, která již slovo dioda obsahuje, "[...] RF nevyuziva svetelne signaly, ale radiove vlny s frekvenciou od 3 kHz do 300 GHz. [...] RF moze dosiahnut aj viac ako 100 metrov." (kapitola 2.3.3), frekvence 3kHz spadá do pásma VLF a dosahem dalece překračuje stovky metrů, jedná se spíše o vyšší desítky kilometrů, "Mikrokontroler ESP8266, vid obrazok 2.5, podporuje 3,3 V a 5 V [...]" (kapitola 2.4.2), je zavádějící stanovisko - GPIO mikrokontroleru ESP8266 není tolerantní na 5V a tedy se nedá tvrdit, že by v celé míře 5V podporoval, a jiné. Jazykovou kvalitu práce ve slovenské jazyce nejsem schopen v plném rozsahu ohodnotit. | |
Práce s literaturou | 70 | Autor v práci cituje 17 různých zdrojů, 2 z toho knižní a 15 online. Tento poměr se u práce tohoto charakteru dá očekávat a je opodstatněný, protože student pracuje převážně s online dokumentacemi moderních (open-source) systémů. Citace jsou v dokumentu uvedeny a používány v souladu s platnou, fakultou uznávanou, normou. Bohužel některé informace uvedené v práci nejsou pod uvedenými citacemi k dohledání (u citací není uvedena jejich přesné umístění a reference vede na úvodní webovou stránku) a nebo jsou uvedené citace nekvalitní, jedná se například o: citace v sekci 2.2.3 k Native API (citace na úvodní stranu ESP Home), citace v sekci 2.2.4 k Pythonu (citace na úvodní stranu dokumentace) a spoustu různých jinak nepodložených tvrzení, citace ke zkratce "WiFi" odkazující se na populárně naučný článek z roku 2023, a jiné. | |
Realizační výstup | 80 | Vytvořené řešení je funkční a použitelné. Zároveň je veřejně k dispozici a je již používané některými z uživatelů platformy Home Assistant. Rozšíření je vytvořené v souladu s pravidly a zásadami platformy a obsahuje všechny očekávané náležitosti (soubor s licencí, readme, atd.) To, že je výsledek práce funkční, má potenciálně velký dosah a je volně k užití považuji za značné a nepopiratelné plus. Samotné zdrojové kódy už ovšem tak kvalitní nejsou a některá návrhová/implementační rozhodnutí zůstávají ze strany oponenta bez pochopení: změna konfigurace vyžaduje čekání 1-30 min. na to aby integrace stav korektně reflektovala, v některých případech je programem vyžadovaná vazba na diskrétní události v čase, které proběhnou znovu až další den (východ/západ slunce) - správný stav systému tedy potenciálně až do 24h, nemožnost nakonfigurovat časové konstanty ovlivňující chování systému, a pochopitelně počítadlo minut zmíněné níže. Ačkoliv autor popisuje, že používá knihovnu voluptuous pro validaci vstupních dat uživatele, nepoužívá ovšem už možnost v konfiguračním uživatelském formuláři nastavit konkrétní formulářové prvky z knihovny platformy (homeassistant.helpers.selector). Toto by umožňilo snazší práci s konfigurací integrace pro všechny uživatele. Vzhledem k tomu, že toto je jediné rozhraní, přes které uživatel s integrací "komunikuje," považuji toto za významné opomenutí. Dekompozice a úprava zdrojových kódů z odevzdaného řešení je slabá a vzhledem ke svému rozsahu (méně než 700 řádků vlastní logiky) by měla být autorem naprosto bez problému zvládnuta. Důležité konfigurační proměnné ovládající hlavní běh chování integrace jsou "na tvrdo" zakomponované do zdrojového kódu a nejsou tedy jednoduše nastavitelné. Často se opakující hodnoty či identifikátory (skutečně statické a neměnné) opět nejsou deklarovány jako programové konstanty a ve zdrojovém kódu se opakují. Vytvořené řešení má dále problém korektně pracovat s časem v aktuální časové zóně systému a tedy vytvořenou integraci je i přes systémem uváděný čas v CEST nutné konfigurovat pomocí časů v UTC. Na tento fakt není uživatel integrace nijak upozorněn. Interní řízení chování je založeno na počítadle, které je inkrementováno v periodicky (každou minutu) volané funkci a v případě dosažení vyžádaného počtu uplynulých minut (počítadlo == 10), dochází k nějaké plánované akci a resetování počítadla. Řešení tohoto ražení by mělo být pod úroveň na kterou autor titulem aspiruje, především kdy existuje systémem nativně podporované a mnohem lepší řešení založené na správně nastavených událostech ( https://developers.home-assistant.io/docs/integration_listen_events , async_track_point_in_time). | |
Využitelnost výsledků | Použitelnost výsledků je vyšší, než by se dle kvality kódu dalo očekávat. autor navrhl a úspěšně implementoval použitelné rozšíření do open-source platformy Home Assistant, není sice revoluční ovšem vylepšuje slabé části již existujících řešení řešení je uživatelům automatizační platformy volně k dispozici, někteří uživatelé jej již používají a veřejně jej hodnotí kladně |
eVSKP id 153141