A tak jsem se rozhodl, ačkoliv nejsem žádný bastlíř, že se do toho vrhnu. A jelikož s tím nemám vůbec žádné zkušenosti a ani si o tom nemám s kým promluvit a poradit se, tak jsem se obrátil na AI Gemini, co ona na to. Gemini mě má ráda, a tak mi poradila, že prej žádný problém a že se do toho můžeme směle pustit. Popsal jsem jí požadavky, které mám, a ona na to, že je to easy.
Co chci, aby to umělo
Dá se říct, že chci mít doma rámeček s e-ink displejem, který bude zobrazovat následující informace a panely:
- datum
- počasí na dnešní den + výhled na 5 dní dopředu
- kalendář s rodinnými událostmi pro aktuální den + výhled na den, dva dopředu, podle místa
- info o dni (jmeniny, státní svátky, fáze měsíce, východ a západ slunce)
- denní domácí povinnosti
- fotorámeček
Inspiroval jsem se hodně na Twitteru, u @VaclavManena a @ljezny. Druhý jmenovaný vyvíjí vlastní řešení a má svou nabídku na https://www.solar-station.cz/, kde nabízí monitorovací stanice, ale v nabídce má i Event Station, což vypadá dobře, ale mně se prostě nelíbí ten design zobrazení. Přijde mi to jako nevyužitý potenciál prostoru a možností e-ink displeje.
Plán
Původní plán byl ten, že použiju doma nepoužívaný Amazon Kindle. To se ale nakonec neosvědčilo a sáhl jsem po jiné čtečce, kterou jsem si pořídil místo Kindlu. Jde o čtečku KOBO. Mělo to několik výhod. Hlavně větší displej. Je opravdu rozdíl mezi 6 a 7 palci. Dále bylo v plánu, že to bude tzv. vše v jednom. Tedy že vyrobím nějaký rámeček, kde bude jak KOBO (zobrazovač), tak i mozek systému.
Probíral jsem tyto možnosti s AI. Došli jsme k závěru, že Kindle bohužel s aktuálním SW není schopen toho, co chci, zkrátka je zamčený a nelze tam nic jiného dělat. KOBO má více možností. Větší displej navíc znamenal vyšší rozlišení. Oproti 1440 x 1080 pixelů, co měl Kindle, má Kobo 1920 x 1440, což je skoro dvojnásobek. Takže mohu počítat s lepší grafikou. Dalším krokem byla volba mozku dashboardu. Zvolili jsme Raspberry Pi Zero 2 W. Je to minipočítač za cca 400 Kč, s nízkou spotřebou, ale plně dostatečným výkonem pro tento projekt. Jednoúčelové zařízení.
Moje představa byla taková, že čtečku i Raspberry schovám do rámečku a vymyslím konektory pro napájení. Napájení mělo být dvojí, jedno trvalé do Raspberry a jedno na spínač, pro napájení čtečky. Společně jsme vybrali součástky, objednal jsem je a zatím jsme se dali do vývoje samotného dashboardu, zobrazovače.
Dashboard měl fungovat tak, že vytvoříme jednoduchou webovou stránku, která bude obsahovat požadované informace, které chci zobrazovat. Na Raspberry poběží server, který tuto stránku sestaví a dovede ji zobrazit v prohlížeči. Na Raspberry dále poběží program či skript, který v určitých nastavitelných intervalech tuto stránku „vyfotí“, vytvoří z ní obrázek a uloží ho. KOBO si pak v intervalu jedné hodiny pro tento obrázek sáhne a zobrazí ho na displeji.
Toto řešení mi vyhovuje. Není potřeba mít tento dashboard nějak interaktivní. Má prostě jednoduše zobrazovat informace. O detaily nejde.
Návrh dashboardu
Pustil jsem se tedy prozatím do návrhu vzhledu dashboardu. Věděl jsem, jaký mám pro to prostor, a vytvořil jsem si několik náčrtků ve Photoshopu.
Samozřejmě jsem si s tím vzhledem hrál. Navrhl jsem si webovou stránku, jednotlivé prvky a hrál jsem si na úrovni jednotlivých pixelů, aby se mi to líbilo. Na zobrazení mi záleželo. Zvolil jsem oblíbený font – Roboto Slab, který je krásně čitelný. V průběhu dalšího vývoje jsem do toho návrhu samozřejmě ještě mnohokrát zasahoval.
Zprovoznění
Následovalo oživení. I o toto se postarala AI. Ke zprovoznění využila Python. Navrhla mi a já postahoval a instaloval do sandboxu různé potřebné knihovny. Postupně jsme zprovoznili tyto moduly:
Počasí
- ukazuje aktuální den, velká ikona aktuálního počasí, teplotu, sílu větru, srážky, pocitovou teplotu,
- následující 3 tříhodinové úseky (ikona + teplota)
- počasí na zítra – stručně na ráno, odpoledne a večer, ikona + teplota
- počasí na následujících 5 dní – velmi stručně, malé bločky počasí v řádku vedle sebe
Kalendář
- záhlaví – ukazuje jmeniny, fázi měsíce, východ a západ slunce
- Aktuální den – zvýrazněné události na aktuální den. Využíváme Google kalendáře (každý člen rodiny má svůj). Dashboard si kalendáře přelouská, zobrazí vlastníka události a zobrazí jeho avatar. Je-li nějaká událost stejná pro více členů, dovede to spojit, včetně zobrazení více avatarů – to se myslím povedlo moc pěkně
- Následující události – ukáže události z dalších dní, počet tak, aby se vešlo do rámečku. Opět je zde seskupení stejných událostí. Místo avatara je zde jen jméno
Přehledový kalendářík
- jen malá utilitka, která zobrazuje měsíční kalendář s vyznačením aktuálního dne. Nic víc
Povinnosti
- zobrazuje střídání povinností v domácnosti. Rotace několika povinností, které jsou zastoupeny ikonou. Vedle ikony je pak avatar, kdo má tu kterou povinnost na starosti. Toto je ovládáno z administrace
Nadcházející události
- toto zobrazuje dlouhodobé události, na které se těšíme. Nehodí se to mít v kalendáři, nezobrazovalo by se to. Zobrazuje počet dní do této události. Jde tedy o odpočet. V pozdější fázi jsem toto upravil tak, že se zobrazuje pouze jedna, nejbližší událost – kvůli úspoře místa.
Fotogalerie
- jen taková vycpávka prostoru. Zde se při každém upgradu dashboardu zobrazí nějaký obrázek ze složky. Mám zde cca 350 obrázků od Macomixe. Pro osobní použití, věřím, že mu to vadit nebude.
- pro obrázky mám vyvinutý skript, který kontroluje složku – hotfolder, kterou mám na ploše notebooku. Do této složky mohu uložit vždy nový obrázek, skript si pro něj sáhne, zmenší ho, odbarví a přesune ho do složky, odkud jej pak dashboard čerpá pro zobrazení. Šikovné.
Později, po několika zavržených nápadech a hledání nových inspirací, jsem přidal ještě jeden modul:
Rozvrh hodin
- zobrazuje rozvrh hodin dětí. V Administraci je tabulka pro rozvrh obou dětí a také je zde volba, zda rozvrh zobrazovat, či nikoliv (období prázdnin atd.). Taktéž je zde nastavení, kdy se přepíná zobrazení aktuálního a následujícího dne. Takže ráno je vidět rozvrh hodin na dnešní den, odpoledne pak již na následující.
Trochu jsem se pral s tím, čemu dát přednost. Nechtěl jsem to mít přeplácané, ale vzdušné. Sekci pro počasí je věnován největší blok. Ale tak to asi má být. Na druhou stranu informací je tam nyní již celkem dost, a tak jsem hledal kompromisy. Nakonec jsem to snad vyřešil celkem elegantně, vše je dobře čitelné. Prostor pro ladění a úpravy ale vždy nějaký bude.
Pro tuto chvíli finální vzhled vypadá takto.
Administrace
Součástí projektu je i administrační část dashboardu. Ta mi umožňuje spravovat zobrazené události. Mohu zde definovat GPS pro počasí, kalendáře, jména osob, povinnosti, dlouhodobé události (odpočet) a nakonec i frekvenci obnovování obrazu dashboardu.
AI tedy vše připravila a čekal jsem na HW.
Problémy a zase problémy
Veškerý HW přišel. Vlastně jen Raspberry. Zapomněl jsem samozřejmě objednat paměťovou kartu, kterou k běhu potřebujete. Naštěstí to nebyl problém, něco jsem našel. Pár kabelů, konektory, vše jsem měl připravené. Dali jsme se do instalace mozku.
Na Raspberry jsem nainstaloval operační systém klasicky přes utilitku od Raspberry. Toto vše proběhlo v pohodě. Pak začaly potíže. Doma mám Wifi od T-Mobile. A jejich modem. Ale Raspberry si prostě s tím modemem nerozumělo a nebyl jsem schopen se za žádnou cenu k tomu modemu připojit. Když jsem testoval připojení, zda vůbec Raspberry funguje, tak jsem to testoval přes mobilní HotSpot. Vše v pohodě. Ale modem Raspberry prostě neviděl. Řešil jsem to skoro tři večery, ale nakonec jsem kapituloval, doobjednal jsem kabel MicroUSB -> RJ45 a Raspberry jsem prostě jednoduše připojil k modemu kabelem. V tu chvíli byla tato část vyřešena.
Zprovoznili jsme na Raspberry server, Dashboard a dali se do komunikace s KOBO.
A další problémy. AI předpokládala, že do KOBO nainstalujeme dva programy. NickelMenu, který umožňuje a rozšiřuje možnosti samotného KOBO o další aplikace či skripty, a program FBINK, který dokáže zobrazovat obrázky tak, jak jsme chtěli.
Dopadlo to velice špatně. NickelMenu jsme nainstalovali a v pohodě. Ale FBINK ne a ne vůbec stáhnout. AI mě neustále odkazovala na neexistující soubory, a furt dokola. Opět jsem to řešil dva dny. Nakonec jsme také kapitulovali. Program FBINK se dal nějak obejít a donutili jsme KOBO, aby přes to NickelMenu prostě a jednoduše zobrazilo obrázky. AI mi k tomu poslala nějaký skript, který jsem nahrál do KOBO, a bylo to.
Ladění
Po několika slepých uličkách se nám nakonec povedlo přimět KOBO zobrazovat dashboard tak, jak chceme. Nahráli jsme skript, který KOBO "zabije", tedy: vyřadí vlastní menu a nechá jen zapnutý obrázek. KOBO tímto však neustále běží. Bude tedy nutné neustálé nabíjení, respektive nabíjení v nějakých cyklech. Bohužel jsme se po mnoha pokusech k lepšímu výsledku nedostali. Spotřeba ale není velká a časovač nabíjení by měl i nějakým způsobem ochránit baterii, jestliže bude neustále na nabíječce. A až odejde – tak prostě KOBO rozeberu, vyndám baterii a nějak přidělám napájení přímo. Zatím to ale takto ponechám.
KOBO si nyní tedy každou hodinu stahuje aktuální obrázek. V zásadě to funguje tak, jak má. KOBO je "zabité", jen přehraje obrázek, ale nic jiného nyní neumí. Do módu čtečky knížek ho dostanu jen resetem, dashboard můžu pak zase spustit, takže je to v pohodě.
Tím, že Raspberry funguje jako server a dashboard zpracovává jako webovou stránku, tak si mohu dashboard prohlížet v prohlížeči a ladit jej. Což je velice praktické a rychlé.
Finální ladění
Samozřejmě, že mě ta situace trápila. KOBO neustále pod proudem, to prostě není ono. A tak jsem se obrátil na jinou AI – ChatGPT. Seznámil jsem ho se situací a začali jsme ladit trochu jinou cestou. I nadále využijeme NickelMenu, ale situace se zlepšila. CPU je využito zhruba na 5 procent. Vypínání Wi-Fi se neosvědčilo, nedovedlo se probudit, a tak holt bude zapnuté. Po několika testech jsem se dostal na výdrž nějakých 18 - 20 hodin, přičemž nyní se KOBO probouzí každou hodinu a dashboard se aktualizuje. Je otázka, zda je nutné tak časté probouzení, zda by nestačilo například jednou za 3-4 hodiny a co to udělá s baterií. V plánu rozhodně je do rámečku přidat HW časovač napájení (Aliexpress, 44 Kč), který by mohl KOBO například 1x za 16 hodin na dvě hodiny nabíjet.
Konstrukce
Hodně jsem přemýšlel nad tím, jak to pak bude fyzicky vypadat. Uvažoval jsem nad nějakým vytištěným rámečkem z 3D tiskárny nebo o dřevěném stojánku, kam bych KOBO zapíchl. Nakonec jsem se rozhodl pro jednoduchý rámeček na obrázek. Vypadá to elegantně, je to za sklem (stejně dotyk nefunguje) a není to drahé. V Actionu jsem koupil levný rámeček s paspartou za 70 Kč. Líbí se mi to, ale bude to vyžadovat určité úpravy.
KOBO má bohužel divný tvar. Pro čtení je to dobré, ale pro vložení do rámečku se to moc nehodí. Zakřivení neumožňuje displej "nalepit" přímo na sklo, a tak musím počítat s nějakou distancí. Zakřivení vystupuje cca 4 mm nad displej. Nechtělo se mi KOBO rozebírat a nějak upravovat.
A tak jsem se vrhnul na 3D modelování vlastní pasparty, která by s tímto zakřivením počítala. Jednoduchá plochá destička s otvorem pro displej. Přední strana bude úplně hladká, zadní pak bude mít kolem displeje offset, 4 mm vysoký.
Displej tak je s plexisklem rovnoběžný, ale je trochu utopený. Myslím, že to ničemu nevadí, zbytek KOBO je schovaný za tou paspartou. Dřevěný rámeček je celkem hluboký. Oproti originálu jej otočím, abych tu hloubku využil pro KOBO, časovač napájení a kabely. Ve Fusion360 jsem si musel navrhnout ještě úplně jednoduchý lem, který bude držet plexi na místě (rámeček je otočený a uchycení plexi tak musím řešit jinak). Vnitřní vytištěnou paspartu s límcem jednoduše přilepím oboustrannou páskou přímo ke KOBO, aby neodstával. Páska vidět není.
Když jsem měl u sebe 3D tisky, tak jsem začal kompletovat. Lem kolem rámečku byl o cca 1 mm užší (limit tiskárny), ale to jsem vyřešil oboustrannou páskou, která je cca 0,5 mm tlustá. Tím jsem vyplnil prostor kolem (vidět to není) a zároveň s tím jsem i plexisklo uchytil k rámečku napevno.
Na vnitřní paspartu, na offset, jsem pak dal tenkou oboustrannou pásku. Je dostatečně pevná (3M kvalita). Není vidět a krásně drží KOBO na místě. Uchycení pasparty k rámečku je pak provedeno šroubky z boku, pro které jsem si vymodeloval úchytky. Kobo je tedy k rámečku uchycené na pár místech oboustrannou páskou, zároveň s tím je přístupné resetovací tlačítko, které je bohužel nutné. Kobo pak bude aretováno zezadu původní zadní stěnou rámečku, na kterou přilepím kousek pěny.
Když dorazil časovač a potřebná kabeláž, vše jsem sestavil dohromady. Nešlo vše samozřejmě jednoduše, ale nakonec se zadařilo.
Finále
Pro tuto chvíli mám hotovo.
Dashboard běží. Ukazuje, co chci a já jsem spokojený. Dashboard muí tedy být neustále na kabelu, ale to se dá přežít. Odběr je minimální a časovač zajistí chod bez jakéhokoliv zásahu a je to šetrnější k baterii.
Co se tedy povedlo
- dokončit vlastní projekt
- zobrazovat informace, které jsem chtěl, aby zobrazoval
- docílit finálního vzhledu, jak po stránce zobrazených informací, tak i fyzického vzhledu dashboardu
- načerpat zkušenosti a znalosti (Python, Raspberry, sítě...)
A co se nepovedlo
- mít vše v jednom (tedy jeden kus HW se vším všudy) – je možné, že se to s případnou změnou modemu změní
- mít hodně úsporný dashboard (s nabíjecím cyklem po cca měsíci) – to mi asi vadí nejvíc
Náklady
Když odmyslím samotnou čtečku, kterou jsem kdysi koupil na Aukru za pár stovek:
- Raspberry Pi Zero 2 W – 400 Kč
- Paměťová karta – 150 Kč
- Konektory, kabeláž – cca 200 Kč
- Dřevěný rámeček – 70 Kč
- 3D tisk pasparty – 100 Kč
- HW časovač – 44 Kč
Co dál?
Momentálně čekám na další dodávku z Aliexpressu. Objednal jsem malé teploměry Xiaomi, které umí pomocí bluetooth sdělit informaci o teplotě interiéru. Objednal jsem nějakou sadu více kusů, uvidíme, kolik jich použiju. Raspberry si stáhne údaje a v dashboardu mi tak ukáže teplotu a vlhkost v různých částech bytu.
Informaci přidám někam nahoru k počasí, ať je vše pěkně u sebe. Už to mám v hlavě.
Jo, baví mě to. Nyní přemýšlím nad tím, že bych doma spojil dvě záležitosti do jedné. Mám doma NAS od QNAP. Ale práce s tím je fakt peklo. Je to pomalé, často to vypadává a nepracuje se mi s tím dobře. Uvažuju nad tím, že bych si pořídil Raspberry Pi 5 a zbastlil si vlastní NAS. Navíc bych mohl stávající Dashboard přenést do tohoto řešení. Mělo by to jít. Bude to větší investice, ale srovnatelná s cenou samotného boxu QNAP. Disky mám.
Uvidíme, co dál.
Update
Dorazily mi teploměry. Po chvilce bádání se mi podařilo zjistit jejich adresy, získávat data a ty pak zobrazovat v Dashboardu. Stačí mi jen tak orientačně tři měření, ale lze přidat i další teploměry.
Pro tuto chvíli je to tedy vše.
