Kiedy myślimy o wirtualnych urządzeniach w systemie SmartThings, jako pierwsze na myśl przychodzą nam gotowe generatory, takie jak vEdge Creator lub Virtual Things autorstwa użytkowników społeczności. Pozwalają one tworzyć różnego rodzaju sensory czy proste urządzenia, jednak często zdarza się, że brakuje nam konkretnej opcji lub specyficznego typu urządzenia. Tak było w moim przypadku, dlatego postanowiłem zgłębić temat. W tym artykule przyjrzymy się dwóm innym opcjom tworzenia wirtualnych urządzeń w ekosystemie Samsunga. Zapraszamy do przeczytania pierwszego wpisu z serii „SmartThings dla zaawansowanych”
Do czego służą wirtualne urządzenia?
Wirtualne urządzenia mają bardzo szerokie zastosowanie od omijania ograniczeń SmartThings przez integracje z asystentami głosowymi, po zaawansowane procedury z logiką warunkową, np. wirtualny czujnik obecności. Może on w łatwy sposób informować o obecności domownika. Jak to zrobić opisywaliśmy już tutaj. Albo gdy wirtualny przełącznik się włącza to Google Home rozpoczyna swoją rutynę. W swoim inteligentnym domu wykorzystuje wirtualne urządzania do łatwiejszego sterowania oficjalnie niekompatybilnymi urządzeniami połączonymi przez np. sceny z systemu Tuya.
Opcja 1 – SmartThings Advanced Web App
Wchodząc na stronę my.smartthings.com i logując się na konto Samsung, uzyskujemy dostęp do internetowego panelu sterowania inteligentnym domem.
- Klikamy trzy kropki i wybieramy opcję Advanced Users, aby przejść do zaawansowanego panelu zarządzania.
- Przechodzimy do zakładki Devices (Urządzenia) i nad listą naszych urządzeń klikamy na Add Device.
- W tym momencie zostaliśmy przeniesieni do prostego kreatora urządzeń. Wpisujemy nazwę, wybieramy lokalizacje, pomieszczenie. W polu Execution Location decydujemy czy nasz wirtualny przełącznik będzie wykonywał polecenia w chmurze, czy lokalnie.
Niestety opcja lokalna znacznie ogranicza dostępne rodzaje urządzeń do przełącznika i ściemniacza, a nawet po wyborze chmury nie mamy dostępu do wszystkich rodzajów urządzeń, bo lista zawiera: przycisk, kamerę, kolorową żarówkę, sensor kontaktowy, ściemniacz, ściemniacz z przełącznikiem, napęd bramy garażowej, sensor wilgotności, gniazdko z pomiarem zużycia, czujnik ruchu, czujnik wielofunkcyjny, czujnik obecności, lodówka, żarówka RGBW, syrena, przełącznik, sensor temperatury, termostat, czujnik wycieku wody i zawór.
Należy pamiętać, że w przypadku wszelkiego rodzaju sensorów nie można zmienić ich stanu lub wartości. Do tego celu nadal lepiej użyć gotowych sterowników.

Panel główny interfejsu 
Strona główna 
Panel „Urządzenia” 
Panel tworzenia urządzenia 
Panel stworzonego urządzenia 
Wirtualne urządzenie w aplikacji na telefonie
Opcja 2 – SmartThings CLI + pliki YAML
Na początku może się to wydawać skomplikowane jednak, gdy opanujemy już strukturę pliku YAML możemy tworzyć urządzenia każdego rodzaju z dowolnie wybranymi przez siebie możliwościami. Na początek potrzebujemy aplikacje odpowiedzialną za wiersz poleceń dla SmartThings. Pobieramy ją z GitHuba wybierająć plik smartthings-windows-x64.zip. Rozpakowujemy go, a smartthings.exe wrzucamy do folderu, gdzie będziemy tworzyć nasze urządzenia. W jednym folderze może być wiele plików YAML dla różnych wirtualnych urządzeń. Teraz przechodzimy do stworzenia profilu urządzenia i tu zaczyna się ta trudniejsza część: Na początek tworzymy plik o wybranej przez siebie nazwie i rozszerzeniu .yaml. Otwieramy go w wybranym edytorze (ja używam Visual Studio Code) i zaczynamy tworzyć od zera profil urządzenia. Podstawą jest „szkielet” pliku. Ten jest niezmienny od typu urządzenia jaki chcemy stworzyć. Poniżej znajdziecie przykład z objaśnieniami.
name: Przyklad_v1 # Unikalna nazwa profilucomponents: - id: main label: test capabilities: - id: switch # Identyfikator funkcji (np. przełącznik) version: 1 - id: audioMute # Dodatkowa funkcja (np.wyciszenie audio) version: 1 categories: - name: SmartPlug # Rodzaj urządzeniametadata: deviceType: SmartPlug ocfDeviceType: oic.d.smartplug # (zawsze z małych liter)
Oczywiście nic nie stoi na przeszkodzie, aby dodać kilka różnych komponentów. Należy pamiętać, że np. Switch może wystąpić tylko raz w urządzeniu. W ten sposób możemy tworzyć dowolne urządzenie o dowolnych opcjach. Podobnie jak w poprzednim sposobie w przypadku wszelkiego rodzaju sensorów nie można (w prosty sposób) zmienić ich stanu lub wartości. Część opcji wymaga dodatkowej logiki stworzonej w osobnym pliku, jednak jest to bardziej zawansowany temat, który nie jest tak łatwy do wytłumaczenia. 🙂
Aktualną listę rodzajów urządzeń znajdziemy w oficjalnej dokumentacji: https://developer.smartthings.com/docs/devices/device-profiles/
Aktualną listę funkcji z identyfikatorami, również znajdziemy na tej stronie lub po wywołaniu polecenia smartthings capabilities –-standard.
[Wskazówka]: Najlepiej używać komponentów o opisie Live lub Proposed, aby uniknąć problemów z kompatybilnością.
Teraz przechodzimy do procesu instalacji. Ogranicza się on tylko do dwóch poleceń. Zaczynamy od otworzenia terminala w folderze z profilem urządzenia i plikiem smartthings.exe. Można to zrobić klikając prawy przycisk myszy w oknie folderu i wybierając opcje Otwórz w Terminalu.
Po otworzeniu wpisujemy: smartthings deviceprofiles:create -i nazwa_pliku.yaml (może się otworzyć okno logowania do konta Samsung w przeglądarce).
W kolejnym kroku uruchamiamy interaktywny kreator urządzenia na podstawie załadowanego przed chwilą profilu, przez wydanie polecenia: smartthings virtualdevices:create. Kreator pyta o profil (wybieramy ten przez nas stworzony), nazwę urządzenia lokalizacje, pomieszczenie. Jak można zauważyć nie pyta on o koncentrator co oznacza, że przetwarza polecenia w chmurze. Po chwili urządzenie pojawi się aplikacji SmartThings.

Proces dodawania w CLI cz.1 
Proces dodawania w CLI cz.2 
Gotowe urządzenie w SmartThings
Wskazówka: Aby usunąć nieużywany profil wydajemy polecenie smartthings deviceprofiles:delete i wskazujemy profil do usunięcie (musi być on nieużywany).
Podsumowanie
W ten o to sposób „przebrnęliśmy” przez dwa różne sposoby tworzenia wirtualnych urządzeń w SmartThings. Jeden prosty i przyjemny o małych możliwościach, drugi trudniejszy, ale z ogromnymi opcjami personalizacji. Każdy z nich ma wady i zalety, jednak to którego użyjemy zależy tylko od naszych potrzeb i chęci.
