Wprowadzono wydanie EdgeX 2.0, otwartej, modułowej platformy umożliwiającej interoperacyjność pomiędzy urządzeniami, aplikacjami i usługami IoT. Platforma nie jest powiązana ze sprzętem i systemami operacyjnymi konkretnego dostawcy i jest rozwijana przez niezależną grupę roboczą pod auspicjami Linux Foundation. Komponenty platformy są napisane w Go i dystrybuowane na licencji Apache 2.0.
EdgeX umożliwia tworzenie bramek łączących istniejące urządzenia IoT i zbierających dane z różnych czujników. Bramka organizuje interakcję z urządzeniami oraz wykonuje podstawowe przetwarzanie, agregację i analizę informacji, pełniąc rolę pośredniego łącza pomiędzy siecią urządzeń IoT a lokalnym centrum kontroli lub infrastrukturą zarządzania chmurą. Bramy mogą również uruchamiać programy obsługi spakowane jako mikrousługi. Interakcję z urządzeniami IoT można zorganizować za pośrednictwem sieci przewodowej lub bezprzewodowej, korzystając z sieci TCP/IP i określonych protokołów (innych niż IP).
Bramy o różnym przeznaczeniu można łączyć w łańcuchy, np. bramka pierwszego łącza może rozwiązywać problemy związane z zarządzaniem urządzeniami (zarządzanie systemem) i bezpieczeństwem, a bramka drugiego łącza (serwer mgły) może przechowywać przychodzące dane, przeprowadzać analizy i świadczyć usługi. System jest modułowy, więc funkcjonalność jest podzielona na poszczególne węzły w zależności od obciążenia: w prostych przypadkach wystarczy jedna bramka, ale w przypadku dużych sieci IoT można wdrożyć cały klaster.
EdgeX opiera się na otwartym stosie Fuse IoT, który jest używany w Dell Edge Gateways dla urządzeń IoT. Platformę można zainstalować na dowolnym sprzęcie, w tym na serwerach opartych na procesorach x86 i ARM z systemem Linux, Windows lub macOS. Projekt obejmuje wybór gotowych mikroserwisów do analizy danych, bezpieczeństwa, zarządzania i rozwiązywania różnorodnych problemów. Do tworzenia własnych mikroserwisów można wykorzystać języki Java, Javascript, Python, Go i C/C++. Oferowany jest pakiet SDK do opracowywania sterowników dla urządzeń i czujników IoT.
Główne zmiany:
- Zaimplementowano nowy interfejs webowy, stworzony w oparciu o framework Angular JS. Do zalet nowego GUI można zaliczyć łatwość konserwacji i rozszerzania funkcjonalności, obecność kreatora podłączania nowych urządzeń, narzędzi do wizualizacji danych, znacznie ulepszony interfejs do zarządzania metadanymi oraz możliwość monitorowania stanu usług (pamięć zużycie energii, obciążenie procesora itp.).
- Całkowicie przepisano API do współpracy z mikroserwisami, które jest teraz niezależne od protokołu komunikacyjnego, bezpieczniejsze, lepiej zorganizowane (wykorzystuje JSON) i lepiej śledzi dane przetwarzane przez usługę.
- Zwiększona wydajność i możliwość tworzenia lekkich konfiguracji. Komponent Core Data, który odpowiada za zapisywanie danych, jest teraz opcjonalny (można go np. wyłączyć, gdy potrzebne jest jedynie przetwarzanie danych z czujników bez konieczności ich zapisywania).
- Zwiększono niezawodność i rozszerzono narzędzia zapewniające jakość usług (QoS). Przesyłając dane z usług urządzeń (Device Services, odpowiedzialnych za zbieranie danych z czujników i urządzeń) do usług przetwarzania i gromadzenia danych (Application Services), możesz teraz korzystać z magistrali komunikatów (Redis Pub/Sub, 0MQ lub MQTT) bez wiązania na HTTP - protokół REST i dostosowanie priorytetów QoS na poziomie brokera komunikatów. Obejmuje bezpośrednie przesyłanie danych z Usługi Urządzenia do Usługi Aplikacji z opcjonalną duplikacją do usługi Core Data. Obsługa przesyłania danych poprzez protokół REST została zachowana, ale nie jest domyślnie używana.
- Zaimplementowano uniwersalny moduł (tajny dostawca) do odzyskiwania tajnych danych (hasła, klucze itp.) z bezpiecznych magazynów, takich jak Vault.
- Narzędzia Consul służą do prowadzenia rejestru usług i ustawień, a także do zarządzania dostępem i uwierzytelnianiem. API Gateway zapewnia obsługę wywoływania interfejsu API Consul.
- Zminimalizowano liczbę procesów i usług wymagających uprawnień roota w kontenerach Docker. Dodano ochronę przed używaniem Redis w trybie niebezpiecznym.
- Uproszczona konfiguracja API Gateway (Kong).
- Uproszczone profile urządzeń, które definiują parametry czujnika i urządzenia oraz informacje o zebranych danych. Profile można definiować w formatach YAML i JSON.
- Dodano nowe usługi urządzenia:
- CoAP (napisany w C) z implementacją protokołu Constrained Application Protocol.
- GPIO (napisane w Go) do podłączenia do mikrokontrolerów i innych urządzeń, w tym płyt Raspberry Pi, poprzez porty GPIO (General Pin Wejście/Wyjście).
- LLRP (napisany w Go) z implementacją protokołu LLRP (Low Level Reader Protocol) do łączenia się z czytnikami tagów RFID.
- UART (napisany w Go) z obsługą UART (uniwersalny asynchroniczny odbiornik/nadajnik).
- Rozszerzono możliwości Usług Aplikacyjnych, które odpowiadają za przygotowanie i eksport danych w celu ich późniejszego przetwarzania w systemach i aplikacjach chmurowych. Dodano obsługę filtrowania danych z czujników według nazwy profilu urządzenia i typu zasobu. Zaimplementowano możliwość wysyłania danych do kilku odbiorców w ramach jednej usługi oraz subskrybowania kilku szyn komunikatów. Zaproponowano szablon do szybkiego tworzenia własnych usług aplikacyjnych.
- Wybrane numery portów dla mikrousług są zgodne z zakresami zalecanymi przez Internet Assigned Numbers Authority (IANA) do użytku prywatnego, co pozwoli uniknąć konfliktów z istniejącymi systemami.
Źródło: opennet.ru