SmartThings의 짜임새

개발을 시작하기 전에 SmartThings 플랫폼의 기본 원리를 아는 것이 중요합니다. 여기서는 플랫폼의 몇 가지 주요 컴포넌트, 또는 밑바탕이 되는 개발의 요소를 살펴보겠습니다.

## SmartThings 플랫폼

SmartThings 플랫폼에는 SmartThings 생태계의 기능(Capabilities)을 쓰는 데에 있어야 하는 모든 것들이 있습니다. 여기에는 유저의 요청을 따르는 것, 기기와 클라우드 사이의 통신을 이뤄내는 것, 자동화를 켜고 돌리는 것, 유저의 집과 SmartThings Cloud에서 벌어지는 일을 모니터링 하는 것, 그리고 더 많은 게 있습니다.

## SmartThings Cloud

SmartThings Cloud는 복잡한 자동화가 잘 돌아 갈 수 있게 하고, 기기가 잘 돌아가는 지 살피고, SmartThings에 온보딩된 기기의 판올림을 돕고, 유저가 SmartThings 앱과 같은 SmartThings 클라이언트로 기기와 자동화를 원격으로 들어 가서 볼 수 있도록 하는 플랫폼의 일부입니다. SmartThings Cloud는 집, 자동차, 생활을 위한 API와 받아보기(subscriptions)를 써서 만들어졌습니다. 기기와 연결 서비스는 이러한 API들을 써서 데이터를 보여주는 일, 이벤트를 찾는 일, 자동화를 켜는 일, 그리고 더 많은 여러 일을 합니다.

## 유저와 계정

SmartThings 플랫폼에 들어가려면 삼성 계정이 필요합니다. 여러 유저나 멤버가 공유 장소에 들어갈 수 있지만 한 명의 유저만 장소의 소유자로 여겨집니다. 지정된 장소의 모든 멤버는 일반적으로 장소에 대한 모든 속성과 연동(예: 자동화, 스마트앱스(SmartApps), 기기, 방, 모드(Scene))에 다가갈 수 있습니다.

장소
--

장소는 SmartThings 앱과 같은 SmartThings의 클라이언트에서 유저가 만들고 허브, 기기, 자동화를 논리적으로 묶어서 그룹화합니다. 장소는 일반적으로 지리적 위치로 태그가 붙습니다. 장소에는 다음과 같은 것이 있을 수 있습니다.

* 방
* 기기와 허브
* 자동화
* 모드(Scene)

그리고 다음과 같은 것과 연관이 있습니다.

* 장소 소유자
* 추가 SmartThings 유저의 계정("멤버 등")
* 모드(Modes)

LocationID를 써서 장소를 찾고 관리할 수 있습니다. 유저와 연결된 장소를 10개까지 가질 수 있습니다.

모드는 항상 장소와 연동됩니다. 모드는 자리 비움, 집 또는 야간과 같은 장소를 유저가 지정한 상태입니다. 모드는 자동화에 통합하는 데 유용합니다(나중에 자세히 설명하겠습니다).

방

방은 SmartThings 앱과 같은 SmartThings의 클라이언트에서 유저가 만들고, 장소의 안에 있는 하위 그룹입니다. 방은 다음을 그룹화하는 데 쓰입니다.

* 기기 와 허브

Room API를 써서 방을 관리할 수도 있습니다. 자세한 것은 SmartThings API 문서에서 알아 보세요.

## 기기와 허브

기기는 SmartThings 플랫폼에 연결되는 물리적 제품입니다. 기기 유형은 다음과 같습니다.

* **클라우드 연결 기기** - 서드파티 클라우드를 통해 SmartThings Cloud와 통신하는 기기입니다. 여기에는 SmartThings Schema 나 스마트앱스(SmartApp)를 써서 연결하는 일부 제품이 들어가 있습니다.
* **직접 연결 기기** - WiFi를 통해 SmartThings Cloud에 직접 연결하는 기기입니다. 여기에는 Samsung의 제품, OCF 및 MQTT와 같은 프로토콜을 쓰는 서드파티 OEM의 제품 등이 포함됩니다.
* **모바일 연결 기기** - 모바일 기기를 통해 SmartThings 플랫폼과 통신하는 기기입니다. 여기에는 일반적으로 웨어러블 및 헤드폰과 같은 모바일 기기를 통해 연결되는 Bluetooth 제품이 포함됩니다.
* **허브 연결 기기** - SmartThings 플랫폼과 통신하기 위해 SmartThings Hub에 직접 연결하는 기기입니다. 여기에는 일반적으로 Zigbee, Z-Wave, LAN(SmartThings Edge 드라이버를 통해) 및 Bluetooth 제품이 포함됩니다.
* **허브** - 허브는 SmartThings Cloud에 연결하고 허브 연결 기기에 대한 플랫폼 연결을 제공합니다.

## 자동화

자동화는 SmartThings 플랫폼에 있는 기기와 연결 서비스를 자동화하는 데 쓰입니다. 예를 들어 유저의 장소가 바뀔 때 조명을 끄거나 모션 센서가 반응할 때 알림을 보내는 것이 있습니다.

SmartThings 플랫폼에는 두 가지 유형의 자동화가 있습니다.

* **루틴(Rules)**을 쓰면 SmartThings 플랫폼에 연결하는 기기 및 서비스를 자동화할 수 있습니다.
* **모드(Scene)**를 쓰면 기기 그룹을 동시에 특정 상태로 설정할 수 있습니다.

자동화는 SmartThings 앱의 자동화 탭에 나타납니다. 개별 유저의 계정이 아닌 장소와 연결됩니다. 따라서 위치에 대한 액세스 권한이 있는 모든 유저는 장소에 대해 생성된 모든 자동화에 다가갈 수 있습니다.

## 연결 서비스

기기를 제어하고 자동화하는 두 번째 방법은 연결 서비스를 구축하는 것입니다. 연결 서비스를 써서 이벤트를 구독하고 서버에서 자동화 로직을 실행하고 자동화하려는 기기로 이벤트를 다시 보낼 수 있습니다.

자동화와 연결 서비스는 몇 가지 비슷한 점이 있지만 연결 서비스는 일반적으로 SmartThings 플랫폼 외부에서 연결을 구축하는 데 쓰입니다. 연결 서비스는 서드파티 앱, 서비스, 통합을 통해 유저의 스마트 홈을 더 넓은 세계에 연결할 수 있습니다.

## 눈으로 보는 플랫폼

SmartThings 플랫폼에서 이러한 개념이 어떻게 함께 작동하는지 살펴보겠습니다. 아래의 개략적인 다이어그램은 유저의 스마트 홈 설정을 끝낸 후 만들어진 플랫폼의 노드와 생김새를 보여줍니다.

이 그림에서 보여지는 유저의 삼성 계정에는 두 개의 방(Room 1, Room 2)과 두 개의 방이 있는 한 개의 장소(Location 1)가 있습니다. 유저의 계정에는 두 개보다 많은 장소가 있을 수 있고, 여러 유저는 같은 하나의 장소에 있을 수 있습니다.

또한 이 다이어그램은 두 개의 다른 방에 연결된 기기가 있는 단일 허브를 보여줍니다. 일반적으로 SmartThings는 장소에 1개의 허브가 있는 것이 좋습니다. 그러나 경우에 따라 유저는 하나의 장소에 여러 개의 허브를 가질 수 있습니다. 같은 장소에 있는 두 개의 서로 다른 허브에 연결된 기기는 서로 통신할 수 있으며 기기가 하나의 허브에 연결되었을 때와 다르지 않게 SmartThings 앱에 보여집니다.