【GoogleHome】Google Home + IFTTT + IRKit로 에어컨을 조작한다
6015 단어 iftttsmartspeakerGoogleHomeIRKit
또 오랜만의 블로그가 되어 버렸습니다.
이번은, 타이틀대로입니다만 Google Home + IFTTT + IRKit 로 에어컨을 조작해 보고 싶습니다.
각 설명은 위의 링크를 따르십시오.
대략적인 흐름적으로는 다음과 같이 됩니다.
※Google Home 등의 초기 설정은 생략합니다.
그럼 가자!
IRKit의 deviceid, clientkey 얻기
여기의 절차는 다음과 같습니다.
1. instancename 얻기
2. IRKit의 IPAddress 얻기
3. clienttoken 취득
4. deviceid, clientkey 취득
1. instancename 얻기
요청
$ dns-sd -B _irkit._tcp
Response
Browsing for _irkit._tcp
DATE: ---Sun 10 Dec 2017---
13:14:45.638 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
13:14:45.937 Add 2 4 local. _irkit._tcp. [INSTANCE_NAME]
2. IRKit의 IPAddress 얻기
요청
$ dns-sd -G v4 [INSTANCE_NAME].local
Response
DATE: ---Sun 10 Dec 2017---
13:15:37.795 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
13:15:37.796 Add 2 4 [INSTANCE_NAME].local. [IP_ADDRESS] 10
3. clienttoken 취득
요청
$ curl -i "http://[IP_ADDRESS]/keys" -d '' -H "X-Requested-With: curl"
Response
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.0.0.g13da7b9
Content-Type: text/plain
{"clienttoken":"[CLIENT_TOKEN]"}
4. deviceid, clientkey 취득
요청
$ curl -i -d "clienttoken=[CLIENT_TOKEN]" "https://api.getirkit.com/1/keys"
Response
HTTP/1.1 200 OK
Server: openresty
Date: Sun, 10 Dec 2017 04:17:54 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 94
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
X-Content-Type-Options: nosniff
{"deviceid":"[DEVICE_ID]","clientkey":"[CLIENT_KEY]"}
2. clientkey를 바탕으로 적외선 정보 획득
먼저 4. 에서 얻은 [CLIENT_KEY]를 바탕으로 아래와 같은 요청을 합니다.
요청
$ curl -i "https://api.getirkit.com/1/messages?clientkey=[CLIENT_KEY]&clear=1"
그러면 적외선 대기 상태가 됩니다.
여기서 IRKit에 리모컨으로 명령을 내리면 아래와 같은 응답을 반환합니다.
Response
HTTP/1.1 200 OK
Server: openresty
Date: Sun, 10 Dec 2017 04:19:16 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1183
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
ETag: "-599963595"
X-Content-Type-Options: nosniff
{"message":[INFRARED_INFO],"hostname":"[INSTANCE_NAME]","deviceid":"[DEVICE_ID]"}
3. deviceid, 적외선 정보에서 REST API 만들기
이전 섹션에서 얻은 [INFRARED_INFO], [DEVICE_ID]에서 REST API를 만듭니다.
REST
https://api.getirkit.com/1/messages?clientkey=[CLIENT_KEY]&deviceid=[DEVICE_ID]&message=[INFRARED_INFO]
필요한 경우 여기에서 curl에서 작동하는지 확인할 수 있습니다.
요청
curl -i 'https://api.getirkit.com/1/messages?clientkey=[CLIENT_KEY]&deviceid=[DEVICE_ID]&message=[INFRARED_INFO]'
하지만 내 환경에서는
curl: (3) [globbing] nested brace in column 163
라고 나오고, 확인할 수 없었습니다.※이 상태에서도 문제없이 성공합니다.
4. IFTTT의 this에 Google Assistant, that에 Webhooks를 지정해 REST API를 두드리게 한다
여기에서 IFTTT 설정이됩니다.
this에는 Google Assistant를 아래 그림과 같이 설정합니다.
that에는 Webhooks로서 아래 그림과 같이 설정합니다.
조금만 요령이라고 할까 주의점이 있어서.
this쪽으로 공조로 하고 있습니다만, 이것을 에어컨으로 하면 스마트 홈쪽의 설정이 씹어 버려, 「서모스탯의 설정이, 되어 있지 않습니다.」라고 분노해 버립니다.
이것으로 에어컨의 조작을 목소리로 할 수 있게 되었습니다.
OFF 쪽도 같은 순서로 등록하면, 외출처에서도 ON/OFF를 할 수 있게 되므로,
· 30 분 후에 돌아 가기 때문에 에어 컨디셔너
·아, 에어컨 지우는 것을 잊었다! 집에 돌아가지 않고 지우고 싶다. . .
같은 것을 할 수 있게 됩니다.
누군가의 도움이 되면.
Reference
이 문제에 관하여(【GoogleHome】Google Home + IFTTT + IRKit로 에어컨을 조작한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ashdik/items/bb4a94f4d4d77f1dbbed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)