Tämä lienee söpöin, vajaan tuuman kokoinen dashboard ikinä! Tässä artikkelissa katsotaan miten Azuren App Insights-monitoridataa näyttävä kojelauta rakennetaan Raspberry Pi:n, pikkuruisen OLED näytön sekä pienen python-sovelluksen avulla.
Tavoite
Halusin rakentaa pienen, aina päällä olevan näytön joka näyttäisi Retrocket-verkkokauppani viimeisen vuorokauden sivukäynnit sekä tilausten lukumäärän. Nykyisin joudun avaamaan verkkoselaimen, kirjautumaan Azure portaaliin, valitsemaan oikean dashboardin aina kun haluan nähdä verkkokaupan tuoreen tilanteen. Ei kovin kätevää.
Ratkaisu?
Voisin toki jättää App Insights – kojelaudan auki selaimeen ja antaa sen päivittää itseensä jatkuvasti tuoreet lukemat, mutta en oikeastaan haluaisi uhrata oikeaa tietokonetta näyttöineen mokomaa tehtävää varten. Kuulostaa erinomaiselta tekosyyltä hankkia raspi jo aikaisemmin Arduinoa varten tilatun OLED näytön kaveriksi!
Tietokoneen virkaa harjoituksessa päätyi toimittamaan juuri postista saapunut Raspberry Pi 4B 8 gigan muistilla ja wifi-yhteydellä. Olin jo aikaisemmin tilannut OLED näytön Aliexpressista (~2 euroa), joka liitettiin raspiin neljällä johdolla. Softapuolella tarvittiin vielä pieni python-sovellus, joka hakee lukemat App Insightsista Rest API kutsuilla, ja leipoo ne ruudulle käyttäen pythoniin valmiina löytyvää Adafruitin näytönkäsittelykirjastoa.
Arkkitehtuuri on siis seuraavanlainen:
Kuva: Pikkuisen dashboardin arkkitehtuuri
Raspberry ja näyttö
Using an I2C OLED Display Module with the Raspberry Pi
Arvelinkin, etten ole ensimmäinen joka aikoo kytkeä tämänkaltaisen näytön raspiin. Yllä oleva erinomainen artikkeli näytti miten I2C-näyttö näyttö kytketään neljällä johdolla raspin GPIO-pinneihin. Kaapeloinnin lisäksi raspin konfiguraatiosta täytyi vielä erikseen kytkeä I2C päälle.
Python Adafruit SSD1306 – kirjasto
Artikkelissa kerrottiin myös mistä löytyy Adafruit-kirjasto tämän kaltaisten I2C-näyttöjen ohjaamiseen. Kirjaston mukana tuli kasa esimerkkejä, joiden avulla pääsi erinomaisesti liikkeelle. Kirjasto oli deprecated-tilassa, mutta toimi kuin unelma heti ensi yrittämällä. Kiitokset Adafruit, tämä kirjasto teki sovelluksen toteutuksesta todella yksinkertaista!
Lukemien haku App Insightista
Retrocket käyttää Azuren App Insightsia sovelluksen tuottaman mittausdatan tallennukseen ja analysointiin. Jäljellä oli siis vain haluttujen numeroiden kaivaminen App Insightsin sisuksista.
Parhaaksi vaihtoehdoksi osoittautui App Insightsin REST API. Rajapintakutsun tekeminen python-ohjelmasta on varsin yksinkertaista, ja edellä mainittu sivu sisältää täydelliset ohjeet miten APIa tulee käyttää. Käytännössä tein siis kaksi App Insightsin kusto-kyselyä Api-rajapinnan kautta: Ensimmäinen hakee pageViews-osuudesta sivuvierailut, toinen tilausten lukumäärän customEventeistä. Koodaamisen loppuosuus olikin tämän jälkeen valita kiva fontti, ja leipoa tavarat esimerkkisovellusten antamien ohjeiden mukaan näytölle.
Opittua
Kuvittelin että tämän rakentaminen olisi ollut työläämpää. Kiitokset kuuluvat erinomaisia ohjeita tuottaville raspin näpertelijöille, Adafruitille, sekä yksinkertaiselle App Insightsin REST API-rajapinnalle. Näiden ansiosta tämä oli noin työpäivän mittainen harjoitus.
“Aivan liian helppoa”
-Darth Vader, Imperiumin vastaisku
Leave A Comment