sobota, 24 czerwca 2017

BLYNK ? po jakie licho kolejny program IoT

Jak nie wiadomo o co chodzi...


Współczesna wojna ekonomiczna o najlepsze miejsce na rynku przybiera na sile. Niby Ameryka (czytaj USA) i EU (Niemcy) wciąż jeszcze dominują w gospodarce ustalając standardy i przewodząc w innowacyjności. Ale Chiny ze swoją stopą wzrostu i nadwyżką handlową za chwilę zechcą ten stan zmienić (świetny wykład Jacka Bartosiaka). Z naszego podwórka - Arduino to pomysł europejski ale gros (jeśli nie wszystkie) moduły do niego produkuje się w Chinach i zalewa się nimi rynek w śmiesznych cenach. Szokiem było pojawienie się ESP8266 i co do funkcjonalności (160MHz RISC z WiFi) i ceny (1-2$) Pierwszy produkt całkowicie azjatycki wywracający świat mikroprocesorów do góry nogami. Początkowe lekceważenie (chiński chłam dla biedoty, zawodny i bez certyfikatów) zamienił się błyskawicznie w panikę, kiedy ESPy zalały rynek a większość z nich ma już wszystkie potrzebne pieczątki - w tym FCC CE RoHS. Czy w tej globalnej wojnie o rynek jest jeszcze miejsce dla wolnych strzelców pragnących zadziwić świat swoimi pomysłami i to  bez pieniędzy? Moim zdaniem tak - np. produkując zamknięty, wybitnie ekskluzywny i bardzo drogi wyrób lub wręcz przeciwnie - tworząc produkt praktycznie darmowy szeroko dostępny i znakomicie wpasowujący się w masowy rynek. W obu przypadkach liczy się pomysł, jakość i tempo wdrożenia tak by szybko ugryźć swój kawałek tortu.
BLYNK to otwarty system bazujący na superpopularnym Arduino i błyskawicznie implementujący najatrakcyjniejsze i powszechnie dostępne technologie (np.Android, ESP). Pomysłodawcy od początku wykorzystują ogromny potencjał społeczności open source i DIY łącznie z finansowaniem (Kickstarter). BLYNK to znakomity przykład próby wejścia na rynek z końca kolejki. Aplikacja bazująca na  wciąż rosnącym potencjale rynku IoT ma w sobie zaszyte spore możliwości integracji i współpracy z różnymi technologiami Smart Home. Już niedługo będzie wiadome czy te możliwości zostaną rynkowo zdyskontowane.
A my popatrzmy bliżej co takiego już dziś oferuje nam BLYNK

Możemy dowolnie wybierać w licznych aplikacjach do zarządzania IoT -  BLYNK, Domoticz, MajorDomo, openHB, Home Assistant, Home Bridge, Cayenne czy polska Supla  To tylko nieliczne z wielu dostępnych. W internecie można znaleźć sporo porównań tych systemów.  Niestety nie dowiemy się z nich jaki system jest lepszy - raczej mówi się o ich odmiennościach i specyfikach zastosowań. Choć oczywiście każdy komentujący ma jakieś swoje preferencje ostateczna decyzja należy do użytkownika. W moim przypadku na początku był to raczej wybór przypadkowy.
BLYNK chwalony jest za różne cechy - otwartość kodu, świetną implementację na różne platformy, możliwość pracy w prywatnej chmurze, wielość typów kanałów transmisji, mnogość widgetów, znakomitą komunikację społecznościową z autorami aplikacji. I są to rzeczy bezsporne.
O tym, że BLYNKa to system otwarty świadczy ponad 400 typów modułów obsługiwanych przez aplikację. Otwarty jest również kod - dostępne są źródła i bibliotek dla mikroprocesorów i serwera. Ale jeden istotny element nie jest publicznie dostępny - to aplikacja na telefon/tablet choć jej pobranie i użytkowanie na Androidzie i IOS może być praktycznie darmowe. Jak korzystać z aplikacji całkowicie za free w własnej chmurze pisałem wcześniej i o mnogości widgetów również. Blynk obsługuje też praktycznie wszystkie typy "indywidualnej" komunikacji z Internetem: Ethernet, WiFi, USB, Bluetooth, GSM - ten temat opiszę szerzej w przyszłości bo jest rzeczywiście imponujący. A komunikacja i wymiana doświadczeń z użytkownikami BLYNKa na forum, w której aktywnie uczestniczą jego twórcy to modelowy przykład dbania o obecnych i przyszłych klientów i użytkowników produktu.

Nie to jednak zadecydowało o moim dłuższym romansie z BLYNKiem. Istotnym jest POTENCJAŁ jaki dostrzegam w tej aplikacji. W/w cechy tylko potwierdzają ów potencjał lub znakomicie ułatwiają jego wykorzystanie.
Nie jest łatwo zdefiniować czym naprawdę jest BLYNK (mam nadzieję, że wiedzą to jego twórcy). W nawet tak prostej sprawie jak stwierdzenie czy jest to system otwarty czy zamknięty nie ma jednoznacznej odpowiedzi. Raczej należy zapytać a jakiego systemu potrzebujesz? Jaki rodzaj systemu będzie przydatny dla twojego biznesu, projektu czy tylko zabawy z elektroniką. Ważne jest to, że każdy z modeli można w prosty sposób zrealizować z wykorzystaniem tej aplikacji. We współpracy z twórcami BLYNKa lub całkowicie od nich niezależnie.
Zna li kto drugi taki projekt? Chętnie posłucham.

Jeszcze do niedawna cały BLYNK to było coś takiego:


Pojedynczy moduł z dostępem do Internetu połączony via serwer BLYNK do aplikacji w telefonie. Taka programistyczna fanaberia Pawła Bajborodina do zdalnego podlewania kwiatków. Ale już na wstępie dzięki Kickstarterowi przyciągnęła ona uwagę tysięcy osób i 50 tys. $ na dokończenie projektu. Na głównej programu wciąż wisi ten sam obrazek ale obszar jaki jest w stanie objąć swoim działaniem aplikacja rozrósł się w przeciągu ostatnich dwu lat imponująco.

Dziś BLYNK to już dwa osobne światy:
- ten darmowy choć nieco ograniczony w swoich funkcjach  dla społeczności hobbystów i miłośników DIY pod adresem community.blynk.cc i blynk.cc
- oraz  świat biznesu i interesów www.blynk.io pełen ułatwień i wsparcia ale gdzie stawki zaczynają się od 200$/msc 

Modeli biznesowych nie będę opisywał. To sprawa mocno indywidualna a ogólnych wskazówek jest  już naprawdę sporo na blynk.io. Dość powiedzieć, że tworzenie komercyjnych mobilnych projektów programowo-sprzętowych stało się równie proste i szybkie jak uruchomienie Blink BLYNK . No może nie w 5 minut. Ale już po kilku, kilkunastu godzinach mamy możliwość oferowania swojego własnego produktu łącznie z udostępnieniem naszych aplikacji w sklepie Google Play.
Warto natomiast przeanalizować BLYNKa w realizacji prywatnych projektów IoT czy szerzej - domowej lub dedykowanej elektroniki użytkowej ściśle powiązanej z internetowymi funkcjami.
Trzy warstwy systemu BLYNK - aplikacja w telefonie, serwer, układy mikroprocesorowe z biblioteką BLYNKa -  są dostępne w wielu konfiguracjach. Kombinacje, permutacje czy wariacje tych konfiguracji tworzą nam wielce rozległą sieć możliwości przy konstruowaniu własnych projektów.

A więc krótka analiza BLYNKa

Warstwa APP - aplikacji użytkownika

Do dyspozycji mamy dwa elementy - aplikacja na Androida i IOS. Nie ma osobnej aplikacji na komputer ale możemy użyć jednego z wielu emulatorów Androida na PC. Aplikacje możemy stosować do własnego użytku i w celach komercyjnych. W przypadku korzystania z publicznego serwera BLYNK rozbudowa aplikacji powyżej 4000 pkt wymaga zakupu dodatkowych punktów za ok 4-5 zł/ 1000pkt.  Mając własny serwer BLYNK możemy bezpłatnie realizować dowolną ilość projektów o nieograniczonej wielkości. Aplikacja na IOSa jest zawsze nieco "spóźniona" w stosunku do androidowej wersji. Nowe wersje aplikacji pojawiają się często - co kilka tygodni. Dostępnych jest około 40 widgetów do budowy ekranu. Aplikacje mogą być klonowane i udostępniane nieograniczonej liczbie użytkowników. W wersji niekomercyjnej brak automatu do logowania i przydzielania kodu dla klonowanych projektów - trzeba tę funkcję dodać do programu w mikroprocesorze. Od strony graficznej i użytkowej uważam BLYNKa za jedną z "ładniejszych" i bardziej przyjaznych aplikacji. Jest to coś pomiędzy typowymi dla wielu aplikacji IoT prostymi ekranowymi klockami a trójwymiarowymi bajerami Fibaro. Natomiast konfiguracja, indywidualne kształtowanie wyglądu ekranu i obsługa jest jak wszystko w BLYNKu - błyskawiczne i intuicyjne.

Warstwa serwera


Tak naprawdę są dwie możliwości - albo korzystamy z publicznego serwera BLYNKa albo tworzymy i utrzymujemy swój własny serwer.
Zalet publicznego serwera jest całe mnóstwo .... o nic nie trzeba się martwić, jest zawsze dostępny z każdego miejsca w świecie, aktualizowany na bieżąco itd.. Ma tylko jeden minus - jest płatny :(
tzn. ogranicza nam bezpłatny dostęp do widgetów do 4000 pkt.
Jeśli nie chcemy płacić za widgety - zakładamy swój prywatny serwer BLYNK.
Możemy to zrobić na wirtualnym serwerze w prywatnej chmurze o ile tylko posiada uruchomioną usługę serwera JAVA lub Docker container - ale tu zapłacimy za usługę hostingową i to z pewnością dużo więcej niż za ewentualne widgety.
Całkowicie za free uruchomimy serwer BLYNK na swoim komputerze z Windowsem lub MAC. Nie jest to trudne ale trzeba umieć prawidłowo skonfigurować na nim JAVA (o tym kiedyś w kolejnym poście).
Najłatwiej zainstalować serwer w kontenerze Docker jeśli mamy już jakiś NAS i jeśli on przypadkiem obsługuje Dockera.
Serwery prywatne instalowane wewnątrz domowej sieci są bardzo szybkie bez opóźnień, bezpieczne i w pełni pod naszą kontrolą ale... aby by móc używać aplikacji BLYNKa w telefonie lub tablecie z każdego miejsca w świecie trzeba umieć (bezpiecznie) otworzyć nasz serwer na świat. I mieć stały adres IP lub odpowiednio skonfigurować usługę DDNS. A i jeszcze musimy stale monitorować czy mamy zainstalowaną najnowszą wersję serwera. Jeśli nastąpi aktualizacja aplikacji w telefonie lub zainstalujemy nowszą bibliotekę w mikrokontrolerze niż tą obsługiwaną przez nas serwer  cały system może się wysypać. Uff .......... ktoś obiecywał że będzie łatwo?
Tak czy siak jakieś koszty poniesiemy - od nas zależy w kogo chcemy zainwestować - czy w siebie czy twórców BLYNKa.
Używam obu typów serwerów. Na serwerze publicznym mam zainstalowane systemy domowego IoT uruchomione, sprawdzone i pracujące na stałe. Prywatny serwer BLYNK jest znakomitym rozwiązaniem dla układów i systemów testowych oraz tych, z którymi nie zamierzam wychodzić poza obszar domu (np.  układy elektroniczne wykorzystujące BLYNKa jako wygodne i darmowe elementy sterujące i monitorujące).

Warstwa układów mikroprocesorowych z bibliotekami BLYNKa

No tu pewnie się posypię. W tym punkcie powinienem opisać możliwości jakie dają już przygotowane przez chłopaków (głównie przez Włodka Szymańskiego - Volodymyr Shymanskyy) biblioteki na ponad 400 rodzajów modułów plus biblioteki typu open możliwe do zastosowania na dowolnych platformach. Jeden warunek - trzeba być niezłym programistą i jeszcze b. dobrze rozeznawać się na mikroprocesorach i protokołach internetowych. To ciut za dużo jak dla mnie. Więc ten punkt proszę potraktować jako baaaardzo ogólną i mocno niedoskonałą próbę ogarnięcia tej trzeciej warstwy systemu BLYNK.

Najłatwiej opisać biblioteki przygotowane na konkretne platformy/ procesory

Dominują dwie - Arduino i ESP


  • Blynk obsługuje praktycznie wszystkie moduły Arduino i całą gamę dostępnych dla nich połączeń z Internetem - za pomocą Ethernetu, WiFi, Bluetootha, GSM, i po serialu lub USB - absolutnie wszystko co możemy wymyślić by włączyć nasz projekt do międzygalaktycznej sieci.
Obecność na liście danego modułu oznacza, że aplikacja w telefonie "rozpoznaje" charakterystyczne dla danego modułu porty i możemy nimi sterować bezpośrednio jako piny digital lub analog. Nie ma natomiast absolutnie żadnych przeszkód by podłączać inne kompatybilne do Arduino układy i moduły. Kompatybilne oznacza z tej samej rodziny procesorów. I tak możemy zaaplikować BLYNKa  małemu ATtiny85 i sterować nim swobodnie poprzez piny wirtualne. Możemy nawet spróbować użyć pinów rzeczywistych musimy tylko wiedzieć które piny np. UNO tz. ATMEGA328 odpowiadają programowo pinom ATtiny85.

  • Dzięki bibliotekom dla Arduino możemy bez przeszkód umieszczać pliki BLYNKa w następujących rodzinach procesorów i w modułach zawierających te procesory
- megaAVR czyli popularne ATmega
- ARM typu Cortex-M0+
- ARM typu Cortex M3
-  ARM Cortex M4
-  Intel Curie (rdzeń x86 Intel Quark) +32 bitowy ARC
- CC3000 CC3200
- PIC32MX320F128

Takim sposobem do obsługiwanych modułów w łatwy sposób trafił układ Particle bazujący na ARM Cortex M3 i wiele innych modułów.
Temat jest mocno rozwojowy i zapewne nie raz przyjdzie nam wracać do niego w przyszłości.

  • Jeszcze przyjemniejsza zabawa czeka nas przy procesorach i modułach z ESP. Tu wprost bez żadnych problemów możemy instalować BLYNKa na absolutnie każdym module czy urządzeniu zawierającym ESP8266, ESP8285 czy najnowszym ESP-32  


I znowu obecność w spisie gwarantuje jedynie kompatybilność numeracji rzeczywistych portów danego modułu z tym co widzimy w aplikacji w telefonie. Ale i bez tego programowanie i użytkowanie urządzeń z ESP jest dziecinnie łatwe. W następnych postach poeksperymentujemy z gotowymi urządzeniami opartymi na ESP przeprogramowując je dla własnej przyjemności na BLYNKa. Ot chociażby na takich przykładach:

  • Szalenie interesująca jest grupa modułów zawierająca Bluetooth do komunikacji z Internetem. Są to najczęściej moduły z ARM Cortex na pokładzie do zaprogramowania w Arduino IDE. BLYNK świetnie sobie radzi z obsługą Bluetooth 4.0 i BLE. To znakomita alternatywa dla prądożernego WiFi w modułach IoT. Warto się temu przyjrzeć bliżej przy konstruowaniu własnych elementów Smart Home. Na liście referencyjnej kompatybilnych z  BLYNKiem modułów widzimy





  • DFRobot Bluno
  • RedBear Duo (WiFi, BLE)
  • RedBearLab BLE Nano (v1 and v2)
  • Seeed Tiny BLE
  • Simblee BLE
  • RFduino BLE
  • The AirBoard (BLE-Link, RN-XV)
  • Feather 32u4 BLE
  • LightBlue Bean , soon


    • Najważniejszą przyszłościowo grupą modułów obsługiwanych przez BLYNKA są te linuxopodobne klony z najbardziej rozpoznawanym przedstawicielem - Raspberry Pi. Wszystko co zawiera Ubuntu, Debian (Raspian) OpenWRT czy inne linuxowe dziwolągi bez problemu daje się połączyć z serwerem BLYNK.
    Nie będę się mondżył, że wiem o co tu dokładnie chodzi. Generalnie trzeba mieć środowisko, w którym można uruchomić pliki Java Scrypt jak Node.js \ Espruino. A że na każdym większym mikrokontrolerze 32 bitowym coś takiego da się zainstalować dlatego lista możliwych do wykorzystania platform jest tu naprawdę spora.

    Należą do nich min.






  • Raspberry Pi
  • Banana Pi,
  • Orange Pi,
  • BeagleBone Black
  • Onion Omega
  • Intel Galileo
  • Intel Edison
  • Intel Joule
  • LeMaker Guitar
  • LeMaker Banana Pro
  • Samsung ARTIK 5
  • PandaBoard, CubieBoard, pcDuino, Tessel 2
  • VoCore (OpenWRT + Espruino package)
  • Espruino Pico
  • - a ponadto każdy komputer z Windowsem (tak tak) czy linuxem

    To prawdopodobnie najbardziej rozwojowy kierunek ekspansji BLYNKa - niestety programiści zdominowali obszar elektroniki bezapelacyjnie. Producenci sprzętu typu Raspberry Pi czy Banana Pi już dawno zauważyli, że większość potencjalnych klientów modułów developerskich umie raczej programować w Pythonie czy Java Script niż lutować. Skutkuje to tym ze do odczytu temperatury lub załączenia przekaźnika sugeruje się stosowanie modułów z czterordzeniowym  64-bitowym 1,2 GHz-owym ARM-8 Cortex-A53  z 1 GB pamięci RAM, WiFI  Bluetoothem i  USB (to specyfikacja RP 3). A tu i ATtiny85 byłoby za dużo tego celu. To już nie jest mikroskop do orzechów - to cała rakieta kosmiczna! Ale jeśli taki moduł kosztuje niewiele drożej niż oryginalna płytka Arduino UNO to pewnikiem tak będzie wyglądać elektronika IoT w najbliższej przyszłości.


    • Jest jeszcze jeden sposób na BLYNKa w większości systemów niedostępnych od wewnątrz - tj takich, których nie jesteśmy w stanie dowolnie przeprogramować. Pod dwoma warunkami - istnieje jakikolwiek kanał komunikacji z tym systemem (np RS 232)  i znany nam jest protokół lub lista komend dostępna w kanale. Przyłączenie tam naszego modułu z BLYNKiem otwiera nam możliwość przejęcia kontroli nad urządzeniem i włączeniem go do naszego systemu Smart Home. Ten temat też spróbuję opisać w niedalekiej przyszłości.


    A już wkrótce - jak z tego wszystkiego korzystać ku chwale ojczyzny i własnemu zadowoleniu. Spokojnie więc poczekajmy na cd.........
    87

    Brak komentarzy:

    Publikowanie komentarza