갤럭시 홈 미니 API로 말 시키기

난 아직 사용하지는 않지만, iot 홈의 자동화를 많이 구성한 유저들이 알림용으로 많이 사용하는 것이 스피커에서 음성 알림이다.

음성알림용으로 많이 사용하는 구글홈미니도 있지만 구글 홈은 다른 쓸 용도가 없어서 켜지도 않고, 갤럭시 홈 역시 별로 쓸모는 없지만 IR기능을 아주 가끔 사용할 일이 있어서 켜두고 있다.
다른 ST허브가 있다면 WebCore 등을 이용해서 음성알림을 설정할 수 있겠지만, ST도 없고 이제 왠만한 자동화는 Home Center3에서 처리되고 있기 때문에 처분했던 ST허브를 다시 들이기는 싫었다.

ST는 ST허브가 없어도 클라우드에서 충분히 동작한다는 것이고, 갤럭시 홈미니는 허브기능없이 클라우드 장비이기도 하다.

삼성이 기존의 클래식에서 존재하던 로컬 기능들을 대부분 정리하고, C2C API를 공개하고 개발을 장려(?)하는 분위기 때문에 찾아보았다.

참고)
https://smartthings.developer.samsung.com/docs/api-ref/st-api.html
https://smartthings.developer.samsung.com/docs/api-ref/capabilities.html

아직 Preview 버전인 것 같고 앞으로 또 어떻게 될 지 모르겠다.

https://account.smartthings.com/tokens 여기서 ST 이용 계정으로 로그인을 하고, Token을 생성한다.
Generate New Token을 선택하고 device에 명령만 내리면되기 때문에

이미지에서 보이는 "Devices" 부분을 전체 선택하고 생성하면된다. 버튼을 누르고 나면 나오는 토큰은 복사해두고 노출되지 않게 저장해둔다.

이제 갤럭시 홈 미니 device id만 알면 말을 시킬 수 있다. ide 접속을 통해서 id를 알아 낼 수 있겠지만, 없다면 API로 알아내어야 할 것이다.

curl https://api.smartthings.com/v1/devices -H 'Authorization: Bearer {발급한 access token}'

요청에 token을 header로 보내야하기 때문에 curl을 사용한다. 혹은 GUI 툴을 이용해서 하면 될 것이다.
이렇게 요청해서 응답한 내용에서 나의 갤럭시 홈 미니 device id를 찾아내면 된다.

curl -H 'Authorization: Bearer {발급한 access token}' -H 'Content-Type: application/json' 'https://api.smartthings.com/v1/devices/{갤럭시홈미니id}/commands' -d '{
  "commands": [
    {
      "component": "main",
      "capability": "speechSynthesis",
      "command": "speak",
      "arguments": [
        "안녕하세요? 저는 갤럭시 홈 미니입니다."
      ]
    }
  ]
}'

이런식으로 요청을 보내면 갤럭시 홈 미니가 말을 하기 시작한다.

Home Center의 lua에서 http request를 보낼 수 있기 때문에 이를 이용해서 QuickApp을 만들 수도, 간단히 ER에서 자동화 로직에도 추가가 가능할 것이다.

여름이 다가왔는데, 아직도 HC에서 미완성인 삼성가전 연동으로 인해 삼성에어컨을 직접 연동하기 위한 작업을 하다가 곁들어 작업한 내용이었다.

Show Comments