Kategorie
Zrób to sam

Jak śledzić statystyki bloga kątem oka czyli sterujemy kolorowymi LED-ami

Jak każdy początkujący bloger, codziennie długie godziny spędzam na obserwowaniu licznika odwiedzających. W myślach witam każdego z was, obserwuję co czytacie, śledzę kliknięcia i ze smutkiem odnotowuję wyjścia ze strony. Niestety, ciężko pogodzić tę aktywność z pracą na pełny etat i wychowaniem dzieci w wieku szkolnym. Nie miałem więc wyjścia – musiałem uciec się do pomocy akcesoriów.

Podobno w pierwszych tygodniach funkcjonowania internetowej księgarni Amazon w magazynie zainstalowany był dzwonek, który sygnalizował nadejście nowego zamówienia. Trzeba było go wyłączyć, gdy zaczął dzwonić bez przerwy. W moim systemie powiadomień postawiłem więc na mniej dokuczliwą sygnalizację optyczną.

Diody LED dla każdego!

Za chwilę zobaczysz fragment kodu napisanego w języku C# ale niech to Cię nie zniechęca! Umiejętność programowania nie jest konieczna by użyć kolorowych LED-ów do sygnalizowania zdarzeń – szczegóły znajdziesz w przykładzie drugim.

Przykład pierwszy – wizyty na blogu pokazane na drabince LED-ów

Być może w sezonie zimowym miałeś/aś okazję zobaczyć sznury lampek choinkowych mieniących się kolorami tęczy – prawdopodobnie były kontrolowane przez sterownik WS2812, pozwalający na indywidualne sterowanie kolorem każdej diody LED. Co ważniejsze, cały zestaw lampek jest sterowany za pomocą raptem trzech kabelków, dzięki czemu cała konstrukcja jest lekka i niezawodna.

Najprostszą metodą podłączenia takiej taśmy do komputera jest kupno gotowca. Ja wybrałem sklepik BlinkStick i sprzedawany tam model Strip, który łączy 8 kolorowych diod LED, kontroler i najzwyklejsze gniazdko micro-USB. Na stronie producenta dostępna jest aplikacja do sterowania diodami i – co ważniejsze – zestaw interfejsów (API) do różnych języków programowania, dzięki którym jasność i kolor każdego elementu można ustawiać w napisanym przez siebie programie.

Skąd wziąć dane o aktualnej liczbie gości na stronie? Oczywiście z systemów do analizy ruchu. Gdy piszę te słowa, informatykzakladowy.pl jest śledzony jednocześnie przez Google Analytics i moją własną instalację Matomo, docelowo planuję korzystać jedynie z tego drugiego narzędzia. Ponieważ Matomo udostępnia swój własny interfejs programistyczny, do bieżących statystyk mogę się dostać wywołując zapytanie

https://matomo.informatykzakladowy.pl/?module=API&method=Live.getCounters&idSite=1&lastMinutes=3&format=Tsv&token_auth=ABCDEF

W przykładzie powyżej token jest błędny, natomiast użycie prawidłowego będzie skutkowało następującą odpowiedzią zwróconą przez serwer:

visits    actions    visitors    visitsConverted
10        23         10          0

Mnie interesuje trzecia wartość czyli liczba unikalnych czytelników w ostatnich minutach.

Mam więc sposób na pobranie liczby odwiedzających i interfejs programistyczny do sterowania diodami. Oto bardzo prosty kod w języku C#, który w nieskończonej pętli pobiera bieżącą liczbę odwiedzających i zapala odpowiednią liczbę diod LED na zielono. 

C#

W powyższym przykładzie wartości powyżej siedmiu jednoczesnych gości będą nieodróżnialne, spowodują zaświecenie całej drabinki. Możemy wówczas sięgnąć po BlinkSticka Flex lub Pro i kontrolować do 32 lub 192 diodek, to jednak byłoby mało praktyczne. Możemy przecież użyć kolorów do kodowania większych liczb, na przykład tak:

Przy większych liczbach tracimy nieco na precyzji, ale nadal jeden rzut oka wystarczy by odczytać liczbę odwiedzających odbiegającą od rzeczywistej o nie więcej niż kilkanaście procent.

Przykład drugi – jedna dioda i zero programowania

Kilka lat temu wraz z kolegami napisałem w ramach treningu prostą grę logiczną. Trafiła ona do dystrybucji w sklepie Google Play a my chcieliśmy wiedzieć, kiedy instaluje ją nowy gracz i kiedy którykolwiek z graczy rozpoczyna nową partię. Spięliśmy więc tę grę z powieszonym w widocznym miejscu gadżetem USB blink(1) i cieszyliśmy się za każdym razem, gdy kolorowa sekwencja zasygnalizowała, że ktoś na świecie właśnie zaczął lub skończył rozgrywkę.

Blink(1) możemy jednak zintegrować z innymi serwisami bez pisania ani jednej linijki kodu. Użyjemy w tym celu serwisu IFTTT (ifttt.com) którego rozwinięta nazwa oznacza mniej więcej “Gdy Cośtam To Cośtam”. 

Po założeniu konta klikamy ikonkę użytkownika, tam wybieramy pozycję Create. Otwiera się kreator receptury “IF THIS THEN THAT”. Najpierw zdefiniujemy zdarzenie wyzwalające: klikamy plusik przy “IF”, w pierwszym z sześciu kroków wybieramy pozycję “Email”. Ponieważ ten komponent musi związać się z konkretnym e-mailem nadawcy, podajemy go i potwierdzamy czterocyfrowym kodem wysłanym na ten adres. W kroku drugim wybieramy “Send IFTTT any email” aby serwis reagował na każdy e-mail wysłany na adres trigger@applet.ifttt.com (uwaga – koniecznie z adresu który uwierzytelniliśmy przed chwilą). Połowa roboty za nami, wyzwalacz mamy zdefiniowany.

Czas na definicję akcji – klikamy plusik przy “THEN”, odnajdujemy opcję “blink(1)”, zatwierdzamy, otwiera się okienko wpisania naszego unikalnego kodu z aplikacji Blink1Control2 obsługującej diodę. W kroku piątym nadajemy prostą do zapamiętania i wpisania nazwę zdarzenia, która będzie przesyłana do naszego komputera wraz z notyfikacją. Krok szósty to zatwierdzenie całej reguły. W aplikacji Blink1Control2 musimy jeszcze dodać IFTTT jako źródło, wpisać nazwę zdarzenia i wskazać sekwencję kolorów do wyświetlenia.

Powyższy przykład nie jest może nazbyt użyteczny, ale pokazuje łatwość, z jaką można spiąć wyzwalacz i akcję. IFTTT integruje setki serwisów, które można łączyć na dziesiątki tysięcy sposobów. Na użycie czeka też wiele gotowych kombinacji – integracja WordPressa, Twittera, Slacka, Telegrama czy Facebooka jest w zasięgu kilku kliknięć.

Do czego jeszcze można użyć adresowalnych LED-ów?

Ambilight display

Zegar z piłeczek od ping-ponga

Lampa z efektami specjalnymi

Sześcian 3D

Ozdabianie wnętrza komputera



O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *