Software Development

Mozilla IoT

Czerwiec 20, 2018 0
Podziel się:

Jednym z najgorętszych tematów ostatnich lat w świecie IT, poza blockchainem i sztuczną inteligencją, jest zdecydowanie Internet Rzeczy czyli IoT (Internet of Things). W tym artykule opiszę pokrótce propozycję standardowego protokołu komunikacji i definicji urządzeń IoT stworzonego przez W3C i proponowaną implementację tego standardu stworzoną przez Mozilla Foundation.

Things Framework by Mozilla

Szybki rozwój rynku IoT spowodował sporą fragmentację technologii, jako że każdy producent tworzył własne protokoły komunikacyjne i rozwiązania. Fragmentacja ta utrudniała dalszy rozwój, stąd dość szybko pojawiły się inicjatywy standaryzacji protokołów komunikacji między urządzeniami IoT. Jeden z tych standardów został zaproponowany przez W3C (World Wide Web Consortium). Nosi on nazwę Web of Things (WoT). Standard ten jest nadal w trakcie opracowywania, ale znane już są podstawowe założenia. Istnieją też propozycje specyfikacji API. WoT nie tworzy nowych protokołów czy technologii, a jedynie zbiera istniejące już rozwiązania w spójną całość. I tak każda Rzecz (Thing) wchodząca w skład WoT powinna wystawiać po HTTP RESTowe API, które umożliwia wywoływanie funkcji owej Rzeczy, a także zbieranie z niej danych. Językiem wymiany danych jest oczywiście JSON. Podstawowa komunikacja z urządzeniem powinna odbywać się według klasycznego wzorca zapytanie-odpowiedź (request-response), ale można też wykorzystywać mechanizm subskrypcji poprzez WebSockets.

Pojęcie Rzeczy jest dość elastyczne – może być to cokolwiek czym można jakoś sterować poprzez ustawianie właściwości lub wywoływanie akcji i co udostępnia jakieś informacje o swoim stanie. I tu na scenę wchodzi Mozilla Foundation ze swoim projektem – Project Things. Projekt ten to próba stworzenia implementacji standardu WoT ze szczególnym naciskiem na obszar inteligentnych domów. W jego skład wchodzą trzy części:

  • Things Gateway: Bramka do WoT pozwalająca zarządzać Rzeczami w lokalnej sieci i udostępniająca je przez internet
  • Things Cloud: Kolekcja usług IoT w chmurze
  • Things Framework: Zbiór bibliotek, dzięki którym można podłączyć Rzecz do sieci WoT, czyli stworzyć dla niej webowe API zgodne z Web Things API

Schemat relacji między głównymi elementami projektu Things

Sercem całego rozwiązania jest Bramka (Gateway). Od strony oprogramowania ma ona postać serwera NodeJS ze specjalną aplikacją webową, ale zamiast instalować ten serwer na zwykłym komputerze, Mozilla proponuje wykorzystanie Raspbery Pi. Na stronie projektu dostępny jest obraz specjalnej wersji Raspbiana z oprogramowaniem Bramki. Wystarczy pobrać ten obraz, zapisać go na karcie microSD i uruchomić „Malinkę”. Oficjalnie, wymagana jest wersja trzecia RPi, ale możliwe jest uruchomienie Bramki na starszych wersjach, a także na Raspberry Pi Zero. Podczas pierwszego uruchomienia niezbędna będzie konfiguracja, dzięki której nasza Bramka będzie dostępna nie tylko w sieci lokalnej, ale także globalnie w domenie mozilla-iot.org (poprzez tunel SSL). Dla każdej Bramki można zdefiniować nazwę subdomeny, pod którą będzie publicznie widoczna. Dzięki temu nawet jeśli nie mamy publicznego adresu IP, nasza Bramka będzie dostępna przez internet. Oczywiście dostęp do niej będzie chroniony hasłem. Po zalogowaniu, wejdziemy do aplikacji webowej pozwalającej na zarządzanie podłączonymi do naszej Bramki urządzeniami. Interfejs jest prosty, przejrzysty i nieźle działa na smartfonach. Pozwala przeglądać podłączone Rzeczy, sterować nimi, wyszukiwać nowe Rzeczy w sieci lokalnej, a także projektować proste automaty sterujące podłączonymi urządzeniami. Wszystko wizualnie. Można też instalować wtyczki (Add-on), które umożliwiają dodawanie urządzeń niezgodnych ze standardem Web Things API. Np. dzięki takiej wtyczce możemy sterować przez Bramkę urządzeniem podłączonym do naszego RPi przez GPIO. Wtyczki można pisać w JavaScripcie i Pythonie. Things Framework, czyli biblioteka ułatwiająca pisanie serwerów wystawiających do sieci pojedyncze Rzeczy, dostępna jest w pięciu wersjach językowych. Mamy zatem JavaScript, Pythona, Rusta, Javę i Arduino (czyli C++). Do niedawna wersja na Arduino działała właściwie tylko na urządzeniach ESP8266 ale obecnie wspiera także ESP32 oraz urządzenia kompatybilne z biblioteką WiFi101 (Np taki Adafruit Feather M0 z modułem ATWINC1500).

Na GitHubie dostępnych jest sporo przykładów zarówno wtyczek, jak i API dla konkretnych urządzeń. Projekt jest obecnie w wersji 0.7 i jest już całkiem dojrzały. Posiada nawet wsparcie dla kamer IP (choć eksperymentalne) i inteligentnego asystenta, któremu można wydawać komendy językiem (jakby) naturalnym.

W tym miejscu warto zaznaczyć, że Things Gateway jest dedykowana dla inteligentnego domu – UI pozawala nawet stworzyć schemat własnego mieszkania i porozmieszczać na nim ikony różnych Rzeczy podłączonych do Bramki. Jednak już Things Framework (a także samo Web of Things) nie ogranicza się do zastosowań domowych i może być wykorzystywany jako uniwersalny mechanizm wystawiania RESTowego API dla dowolnego urządzenia nawet niekoniecznie podłączonego do internetu. Możliwości jest wiele…

Jeśli interesuje Was temat IoT albo chcecie uzyskać możliwość kontroli przez internet własnego urządzenia, to Project Things może być wart Waszej uwagi.

Linki:

 

 

4.4 / 5
Grzegorz Hołdys
Autor: Grzegorz Hołdys
Programista-majsterkowicz. Za dnia koduję w Javie dla wielkich korporacji, po godzinach buduję mniej lub bardziej przydatne elektroniczne gadżety i udzielam się w projektach Open Source. Jak nie siedzę przy biurku to jeżdżę rowerem albo fotografuję.

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

Zostaw komentarz