piątek, 8 marca 2019

Widgety BLYNK - profesjonalna aplikacja IoT na telefon w 5 minut


Kupujemy oczami.
I choć siła i możliwości BLYNKa ukryte są w jego wnętrzu tj. w mikroprocesorowych bibliotekach i kodzie serwera to na jego atrakcyjność dominujący wpływ ma wygląd telefonicznej aplikacji. Ta zaś,  podobnie jak starszy brat bliźniak - Arduino, jest zbiorem dowolnie układanych puzzli.

Co z tego potrafimy wyczarować zależy w większości od naszej wyobraźni i tylko trochę od umiejętności.  Na wyobraźnię nie ma mocnych ale odrobinę wiedzy da się załatwić. Choć zajmie to dobrych kilkadziesiąt odcinków by wszystkie te klocki szczegółowo opisać. Na początek trochę wiedzy ogólnej.







Widgety - bo o nich mowa - to graficzne funkcje systemu BLYNK ze sporymi możliwościami konfiguracji zarówno od strony aplikacji jak i mikroprocesorowego kodu. Twórcy BLYNKa podzielili je na kilka grup

  • sterujące - wysyłające dane z aplikacji do urządzenia
  • wyświetlające - odwrotnie
  • komunikacyjne - wysyłające dane poza system BLYNK
  • konfiguracyjne - zmieniające wygląd aplikacji
  • inne - po prostu inne
 Podział jest mocno umowny. Większość bowiem widgetów jest DWUKIERUNKOWA. To bardzo ważna cecha dająca nieprawdopodobne pole manewru w tworzeniu własnych ekranów aplikacji i przy pisaniu programu dla mikroprocesora. Nawet elementy ewidentnie jednokierunkowe ( LEDy ) są dwukierunkowe dzięki dwukierunkowości pinów wirtualnych jakie możemy do nich podpiąć.
Nie da się przesłać sygnału z/ do aplikacji bez dowiązania do widgetu jakiegoś pinu. A raczej zmiennej mającej swój odpowiednik w kodzie programu. Ta zmienna to numer poru  mikroprocesora lub numer zmiennej programowej nazywanej tutaj pinem wirtualnym. Pinów rzeczywistych jest tyle ile porów w wybranym mikroprocesorze. Pinów wirtualnych mamy dużo więcej - 128.

Typy danych związanych z widgetami


Rodzaj widgetu teoretycznie determinuje typ danych wysyłanych / odbieranych przez widget. Teoretycznie. BLYNK daje nam ogromną swobodę w przesyłaniu dowolnych typów danych za pomocą widgetów i powiązanych do nich pinów. Niewiele możemy zdziałać gdy podepniemy widget do rzeczywistego pinu analogowego lub cyfrowego. W takim przypadku przesyłana zmienna ma ściśle określony format - bit dla pinów cyfrowych i kilka, kilkanaście  bitów dla sygnału analogowego. Ale dla pinów wirtualnych nie ma już takich ograniczeń. I tak przycisk to klasyczny element dwustanowy a może wysyłać  i odbierać dane typu integer lub string! Toteż podział na elementy cyfrowe, analogowe czy tekstowe w przypadku widgetów z pinami wirtualnymi praktycznie nie istnieje - większość widgetów jest omnipotentna (co za wyszukane slowo) i może obsłużyć różne typy zmiennych. Stąd uwaga: należy mieć baczenie co przesyłamy od/do widgetu by nie zostać zaskoczonym efektami działań aplikacji.
Wysyłanie danych przez widget
Widgety wysyłające informacje robią to tylko w przypadku zmiany stanu/wartości.  Jeśli z elementem nic się dzieje w aplikacji jest on niemy. Wysłana wartość zanim dotrze do mikroprocesora  jest zapamiętywana w serwerze.  To ważne cechy mające wpływ na sposób obsługi widgetów w kodzie modułu. Z powyższego wynika, że jeśli aplikacja jest zamknięta to nie istnieje w systemie BLYNK (nic nie wysyła nic nie odbiera). Cała komunikacja odbywa się jedynie w układzie serwer-mikroprocesor. Jeśli aktywujemy aplikację w telefonie pierwszym jej zadaniem jest synchronizacja wszystkich stanów widgetów z wartościami zapamiętanymi na serwerze.

Odbiór danych przez widget


Widgety odbierają dane w dwojaki sposób.
  •  Okresowo same pobierają dane bezpośrednio z urządzenia.  Częstotliwość pobierania ustawiana jest w widgecie w granicach 1sek - 24 h. Dane pobierane są bezpośrednio z mikroprocesora i nie są zapamiętywane na serwerze. Serwer jest przezroczysty i pełni jedynie rolę pośrednika. Piny rzeczywiste są dowiązane do widgetu tylko w tym trybie co oznacza że nie można zapamiętać bezpośrednio stanu portu procesora na serwerze. Nie ma potrzeby dodatkowego definiowania funkcji w kodzie by pobrać wartość pinu procesora - biblioteka BLYNK robi to sama ustawiając jednocześnie port we właściwy stan (wej/wyj, cyfra/analog). Natomiast piny wirtualne muszą być osadzone w kodzie procedurą BLYNK_READ(Vxxx){Blynk.virtualWrite(Vxxx)} by mogły być automatycznie pobierane przez widget. Ten sposób minimalizuje ruch w sieci (dane są przesyłane jedynie gdy aplikacja jest aktywna) ale bardzo dużym minusem jest brak zapisu danych na serwerze.
  • Dane do widgetu wysyłane są przez mikroprocesor procedurą Blynk.virtualWrite(Vxxx). W tym przypadku to mikrokontroler decyduje o częstotliwości wysyłania danych. Dane są wysyłane niezależnie czy aplikacja jest aktywna czy nie. Każda wysłana wartość jest zapamiętana na serwerze i to z historią!. Są widgety które tą historię umieją pobrać i pokazać. Dane wysyła się procedurą  Blynk.virtualWrite(Vxxx) a widget musi być ustawiany na funkcję PUSH.

Widgety a pieniądze



NAJWAŻNIEJSZE: Widget to produkt komercyjny i jest podstawą biznesu pod tytułem BLYNK. Nie jedynym - drugim  jest serwer BLYNK umieszczony gdzieś w Internetowej chmurze zarządzany przez TEAM BLYNK. Ale widgety to towary w sklepie wystawione na półce każdy ze swoją ceną i opisem. Jedne dostaniemy za darmo za inne trzeba słono zapłacić, prawie 2000 tys. punktów. To sporo. I choć przeciętne ceny sklepie to 100 - 400 pkt. to jednak w tym wirtualnym świecie pojawia się bolesna konieczność wydania naszych rzeczywistych pieniędzy.


Ale gdyby to była cała prawda o BLYNKu ten blog nigdy by nie powstał. No chyba, że twórcy aplikacji hojną ręką zasilali by moje konto za każdy tekst pojawiający się tutaj. Na szczęście istnieje też inny wirtualny świat BLYNKa. Całkiem za darmochę. W sposób banalnie prosty na praktycznie każdym urządzeniu z systemem Linux czy Windows możemy sobie uruchomić swój własny serwer BLYNKa. I mieć wszystkie widgety w dowolnej ilości za free.

Pobierane ze sklepu (PLAY lub IOS) elementy wciąż kosztują tyle samo ale nasze konto w cudowny sposób możemy sobie zasilić dowolną sumą punktów jednym kliknięciem w ustawieniach naszego własnego serwera BLYNK. Robimy to co wszystkie banki na świecie - kreujemy wirtualne pieniądze z powietrza i kupujemy sobie za nie rzeczy, za które inny muszą płacić.
Czy istnieje ryzyko skasowanie tej darmowej odmiany BLYNKa w przyszłości. OCZYWIŚCIE TAK.
Twórcy systemu obiecują solennie, iż cały system będzie bezpłatny dla hobbystów w wersji z prywatnym serwerem ale w biznesie bywa różnie. Jeśli kupi ich ktoś większy, o co nietrudno w dzisiejszych czasach, ten stan może się zmienić. To znane zjawisko z rynku oprogramowania freeware gdzie aplikacja nagle znika z internetowych stron. Pozostaje nam tylko możliwość korzystania z ostatniej darmowej wersji. Tak samo może być  przypadku BLYNKa. Dlatego warto zachomikować gdzieś komplet plików systemu (dla aplikacji mobilnej, serwera i bibliotek mikroprocesora) by móc dalej bezpłatnie korzystać z oprogramowania w naszych projektach. Na razie nic nie zapowiada takiej zmiany.

Inne cechy widgetów


Większości widgetów można nadać swoiste nazwy (warto to robić) i je ładnie pokolorować. I nazwy i kolory są nie tylko wizualnymi ozdobnikami - to potężne narzędzia przemieniające skromne widgety w multifunkcyjne wyświetlacze informacji. A to za sprawą wprowadzonej nie tak dawno funkcji zmiany opisów i kolorów specjalnymi funkcjami w kodzie programu. Tą cechę lubię w widgetach chyba najbardziej.
Widgety maja możliwość zmiany wymiarów. Dla widgetów typu wyświetlacze pozwala to na dowolne kształtowanie wielkości prezentowanej informacji. Dodatkowym atutem jest dynamiczna zmiana wielkości czcionki dopasowującej się automatycznie do liczby wyświetlanych znaków. Maksymalnie możemy pokazać ich kilkadziesiąt choć czytelność nie będzie oszałamiająca.




Dużym udogodnieniem jest załączona do każdego widgetu informacja o sposobie jego użycia w aplikacji i w kodzie programu. Bez wertowania dokumentacji jesteśmy w stanie szybko skonfigurować i zaprogramować działanie każdego z elementów.




Widgety udostępniające sensory telefonu


Od niedawna twórcy BLYNKa udostępnili nowe widgety pozwalające włączyć do naszych projektów hardware telefonu/ tableta. Mówię tu o całej serii funkcji powiązanych z sensorami w naszym telefonie. Dzięki nim możemy sterować projektem np. potrząsaniem czy zbliżeniem do ręki do telefonu. GPS umożliwia np otwarcie bramy garażowej czy oświetlenie domu gdy zbliżamy się do posesji. Naprawdę warto spróbować tych funkcji, są niezwykle widowiskowe.




To na tyle ogólników o klockach do budowy własnej aplikacji sterującej w telefonie.


15


Brak komentarzy:

Prześlij komentarz