SmartThings wybrał język Lua dla sterowników SmartThings Edge

W zeszłym miesiącu SmartThings ogłosił uruchomienie SmartThings Edge. Tym samym zapewnił kilka różnych sposobów integracji urządzeń z platformą. W przypadku urządzeń Hub Connected zawsze używaliśmy obsługi typu urządzenia (DTH). Zostały one napisane w Groovy i działały w środowisku chmury SmartThings Cloud. Chociaż Groovy DTH pomogły nam uruchomić SmartThings, sprawiły prawdziwe wyzwanie dla lokalnego wykonania automatyzacji.

W związku z trwającymi pracami nad modernizacją platformy i odejściem od starszych systemów, SmartThings chce zapewnić lepszy sposób obsługi urządzeń. Podobnie jak w przypadku DTH, staraliśmy się zapewnić programistom (zarówno pracownikom wewnętrznym, jak i partnerom) możliwość zdefiniowania zachowania urządzenia Hub Connected za pomocą kombinacji danych i kodu . Biorąc pod uwagę, że jednym z naszych głównych celów jest wspieranie ich wykonywania na koncentratorach — które postrzegamy jako krawędź platformy SmartThings — postanowiliśmy nazwać te „sterownikami Edge”.

Postanowiliśmy opracować rozwiązanie, które będzie w stanie zapewnić programistom i użytkownikom wrażenia, których szukaliśmy. Jak można się domyślić z tytułu, sterowniki brzegowe są oparte na Lua jako języku programowania … Więc dlaczego postawiono na Lua?

Prostota

Hub to środowisko o ograniczonych zasobach. Ponieważ użytkownicy mogli potencjalnie uruchamiać wiele sterowników Edge naraz, szukaliśmy czegoś lekkiego.

Lua ma mały zestaw podstawowych struktur i funkcjonalności. Prowadzi to do niewielkich rozmiarów, co dobrze sprawdza się w przypadku wykonywania na koncentratorach. Ponieważ język podstawowy jest dość mały, programiści mogą się łatwo nauczyć. Dodatkowo, jako język interpretowany, programiści tworzący sterowniki Edge Drivers nie muszą martwić się kompilacją swojego kodu.

Możliwość osadzania

Nie powinno dziwić, że oprogramowanie platformy koncentratora SmartThings jest złożonym problemem. Odpowiada za zarządzanie wieloma aspektami łączenia i wykonywania urządzeń w ramach platformy SmartThings. Większość tego oprogramowania jest napisana w języku Rust i C (czekaj na więcej informacji w przyszłości!) i potrzebowaliśmy czegoś, co działałoby dobrze w tym środowisku.

Poszukując rozwiązań, zaczęliśmy od zbadania „wcześniejszego stanu techniki”, aby odpowiedzieć na pytanie: czy istnieją inne złożone systemy, które wymagały rozwiązania podobnego problemu, a jeśli tak, to co one zrobiły? Mamy zestaw podstawowych funkcji, które muszą być wykonywane w sposób wydajny (HubCore), ale chcemy zezwolić na rozszerzenia, które dają programistom narzędzia do tworzenia unikalnych przypadków użycia (Sterowniki urządzeń).

Odkryliśmy, że Lua była szeroko wykorzystywana w branży gier wideo (wraz z innym oprogramowaniem do gier innych niż wideo) jako sposób na umożliwienie programistom rozszerzenia istniejącej funkcjonalności — dokładnie tego, czego szukaliśmy! Oznacza to, że Lua może dobrze współpracować z C i Rustem, umożliwiając hubowi uruchamianie rozszerzeń z minimalnym wpływem na istniejące oprogramowanie huba.

Bezpieczeństwo

Historycznie, wszystkie lokalnie działające DTH były napisane lub sprawdzone przez nasze zespoły inżynierów. Umożliwienie użytkownikom uruchamiania kodu lokalnie w ich centrum, którego nie pisaliśmy, nie przeglądaliśmy i nie testowaliśmy, rodzi złożone pytania dotyczące granic i barier ochronnych. W rezultacie ważne było zidentyfikowanie rozwiązania, które możemy piaskować, czyli zablokować niezaufany kod w pomieszczeniu, w którym nie może on nikomu skrzywdzić.

Sama Lua daje możliwość dostrojenia i ograniczenia czasu działania. Oprócz tego wszystkie sterowniki urządzeń otaczamy drugą, bezpieczniejszą warstwą piaskownicy ze spójnym interfejsem API, aby jeszcze bardziej chronić koncentratory w przypadkach, w których nie wierzyliśmy, że wbudowane opcje są wystarczające.

Ucz się więcej

Możesz odwiedzić społeczność SmartThings, aby dowiedzieć się więcej o integracji urządzeń Zigbee, Z-Wave i LAN z SmartThings Edge. Lua jest wolnym oprogramowaniem rozpowszechnianym na warunkach licencji MIT . Jeśli chcesz dowiedzieć się więcej o programowaniu z Lua, zalecamy zaangażowanie się w społeczność Lua.

Źródło: SmartThings Blog

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s