Gondolkoztam rajta, hogy hogyan lehetne belépni az IoT világába, de hát eredeti ötletem nem nagyon volt, főleg olyan nem ami valódi problémát old meg. Viszont a kábelszolgáltató volt olyan kedves lecserélni a TV set top boxát egy olyanra amiből az általam leggyakrabban használt funkció, a ledes óra kimaradt. Így lett egy probléma amit meg lehet oldani.
Az ötlet nagy vonalakban annyi volt, hogy kéne valami amin lehet látni az időt kb headless módban. Csak bedugod és működik. Hardware platformnak pedig a Wemos D1 Mini-t választottam. Ennek van több iterációja és vannak hozzá shieldek mint pl az Arduinohoz. És ami mégjobb, hogy Arduino IDEvel lehet rá sketcheket írni és feltölteni rá. Hardware szempontból elég erős, van benne wifi és 4mb flash amibe azért elég sok dolog belefér. A sok hely ott lehet érdekes, ha fontokat kell betölteni vagy grafikát megjeleníteni.
Első körben áttanulmányoztam az Arduino IDE egyik példáját ami az ntp protokolt használva tudja az időt lekérdezi, megjeleníteni a példa egyszerűsége okán nem tudja. Az időt először wemos shieldeken probáltam megjeleníteni. Első körben egy 0.96″-est próbáltam, olvashatatlan volt messziről, bármilyen font került rá. Aztán egy 1.44″-es jött, de hát ez sem volt a legjobb. El is engedtem a TFT shieldeket és a jó öreg szegmens kijelzőket kezdtem átnézni. Ezzel a megoldással elég sok helyen lehet találkozni, pl a sütőnkön is ilyen van, úgyhogy itt tudtam mire lehet számítani láthatóság szempontjából. Vettem egy ilyet. Azért mielőtt belementem volna ezekbe mindig gondosan megnéztem, hogy milyen vezérlők vannak rajtuk és hogy vajon van-e hozzájuk valami lib amit be lehet húzni Arduino IDE-be. Egyébként mindegyik működött, de a szegmens kijelző a legjobban olvasható.
Ezt a megoldást egy nagyon ízléses papírdobozba telepítettem bele, és nem is foglalkoztam vele egy ideig. A nappaliban nem került be a set top box mellé, mindenki a sütő óráját nézegeti vagy a telefonját. Az íróasztalomon pihent, és mielőtt valaki megjegyezné, hogy a számítógépen is ott az óra, annak elmondom, hogy játszás közben nincs.
Viszont egy idő után meguntam a papírdobozt és gondoltam nézek valami kisebbet, szebbet, meg valami olyat amibe az alkatrészeket rendesen lehet rögzíteni. Az usb tápot pl nem lehetett kihúzni az órából csak nagyon óvatosan a dobozt kinyitva. A szegmens kijelző nyákján van néhány furat amivel lehet rögzíteni a kijelzőt, viszont a Wemos D1 Mini 1-es verzióján nincs semmi ilyesmi. 3D nyomtatóm nincs szóval a piacról kellett megoldani ezeket a problémákat. A 4-es verzión már vannak furatok, úgyhogy rendeltem néhányat belőlük, annyira filléres alkatrész ez, hogy tényleg kb 2 buszjegy ára (DKV, helyi, 2023 elején). Hogy milyen legyen a doboz azt nem sikerült elsőre teljesen jól eltalálni. Annyit tudok mondani, hogy ennél nagyobb kell: https://www.hestore.hu/prod_10032323.html, főleg a magassága nem megfelelő. De azért még így is kisebb junk feeling mint a papírdoboz.
És akkor még néhány szó a sketchről amit csináltam. Az alap ugye a ntpclient. Ennek lehet adni ntpservert, időzónát és még azt is, hogy milye sűrűn kérdezzen rá, hogy hány óra. Van egy másik rész ami megpróbálja kitalálni az időzónát. Vannak a neten ilyen servicek, hogy megadod, hogy hol vagy ő pedig egy ad egy választ, hogy szerinte mennyi az offseted az UTC képest jelenleg. Nekem ez a link mondja meg. Játszani kell még a kijelzővel. Itt nem találtam túl szofisztikált megoldásokat. Lehet vele bohóckodni, de ha nem számokat akarsz kiírni akkor vannak kihívások.
A legtöbb időt felemésztő kihívás a wifi konfigurálása volt. Az egyik feladat bekonfigolni a wifi hálózatot, úgy hogy be kell lépnie minden segítség nélkül. Én a wps-re szavaztam és így ki is derült számomra, hogy miért veszélyes üzem. A lényeg, hogy a wps kliens valahogy tényleg megtudja a wifi jelszót anélkül, hogy bárhova beírnád. Gondolom ha neki sikerül akkor másnak is sikerülhet. Egyébként ha egyszer sikerül az AP-re csatlakoznia, akkor emlékszik reset után is a credentialokra. A másik megoldás amit kipróbáltam, bár nem akartam, az a wifimanageres megoldás. Ez úgy történik, hogy ha nem tud csatlakozni azzal a jelszóval és ssid-del amire emlékszik, akkor elindít egy AP-t, amire be tudsz jelentkezni bármilyen wifi eszközzel. Utána egy böngésző segítségével tudsz választani az eszközön SSID-et és be tudod írni a jelszót. Lenne egy harmadik megoldás a smartconfig. Itt arra számítottam volna, hogy valami hivatalosabb forrás osztja meg a mobilos appot amivel be lehet lőni a wifit a ESP-8266-okon, de nem találtam ilyen, úgyhogy nem kísérleteztem.
És hát hogy honnan tudom ezeket, mert miért kellet utánanéznem? Az történt, hogy a szokásos wps megoldás nem működött a v4 wemos-on. Beírtam kézzel a sketchbe az ssid jelszó párost, akkor sem akart kapcsolódni. Feltettem a wifimanagert, amíg AP módban volt a wemos addig jó volt, de utána nem ment fel az otthoni wifire. Elővettem a másik v4 wemos-t, az viszont működött alapban. Először örültem, hogy milyen okosan kettőt vettem, de csak zavart, hogy miért nem működik station módban a rossznak gondolt wemos. Eddigre ugye megvolt wifimanager, wps és a kézzel beírás és egyik sem működött. Meg kellett ismerkedni olyan dolgokkal is amivel annyira nem terveztem, hogy foglalkozni kell. A projekthez nem sokat tenne hozzá, de mégiscsak izgatott, hogy mi lehet gond. Nézegettem, hogy lehet-e valahogy debuggolni az wemost, az ESP8266-ot, a telepített libeket vagy bármit. Szerencsére a konkrét debuggolásig nem kellett elmenni. Az ESP8266-on van két beállítás amit simán be lehet pipálni Arduino IDE-ben. Az egyik az, hogy Debug Port. Itt a Serial-t kell választani. A másik a debug level, ott pedig azt, hogy WIFI. A serial monitor úgyis nyitva van általában, ott fognak megjelenni a debug üzenetek. És hát ott kiderült, hogy a wifi csatlakozás sikeres ellenben a dhcp kérésre nem érkezik válasz. Tehát nem lesz bekonfigolva az ip, a gateway, a dns és a subnet. Aztán jött az olvasgatás, hogy hogy van olyan, hogy egyeseknek nem válaszol a dhcp server, ami elvileg a router alapszolgáltatása szokott lenni. Mindenesetre beállítottam kézzel fix ip-et meg mindent ami kell és feléledt a hibásnak gondolt wemos. De a dhcp ügyre még mindig nem volt válasz. Fórumokban és hibajegyekben az emberek célozgattak arra, hogy egyes Asus routerekben van ilyen hiba, de csináltak valami és elmúlt. Sőt voltak olyanok is akiknek az volt a workaroundjuk, hogy restartolták a routert. Ez viszonylag olcsó megoldás én is kipróbáltam és működik, megjegyzem a routert a kábelszolgáltató adta és nem Asus. A kérdés persze még mindig ott van, hogy előtte miért nem volt soha semmivel ilyen gondom, de a lényeg hogy működik.