시놀로지 NAS 를 사용하면서 24시간 사용이 필요치 않기에 필요시마다 WOL 을 이용하여 부팅을 하고 있다. 구글 홈 미니와 Sonoff 를 연동해서 조명을 켜고 끄는데 컴퓨터도 켤 수 있지 않을까? 해서 생각을 해보니 다음과 같은 방법으로 사용이 가능하다. 1. 준비물 - 구글 홈 또는 구글 홈 미니 기기 - 라즈베리 파이 (Web 요청을 받으면 자신의 네트워크에서 WOL 매직 패킷을 전달하기 위함) - WOL 이 작동 하는 컴퓨터 2. 설계 작동 방식 구성은 다음 처럼.. - 구글 홈에게 컴퓨터 켜 라고 말하면 IFTTT 에서 구글 홈 명령을 해석하여 특정 URL 을 호출 - 라즈베리파이 웹 서버에서 해당 요청을 받으면 WOL 매직 패킷 보내기 3. 방법 3-1. 구글 홈 앱에서 루틴 설정 하기. 다음을 말하면 조건에 "컴퓨터 켜", "컴퓨터 켜 줘" 문장을 등록 한다. 필요 하다면 다른 문장을 추가 해도 좋다. "Google 어시스턴트가 할 행동" 에는 IFTTT 가 알아 들어야 할 문장을 등록해야 하는데 영어만 지원 되기 때문에 작업 추가를 클릭 -> "my desktop on" 이라고 등록 한다. 한번 더 작업 추가를 눌러-> 인기 있는 작업을 누르고 가장 아래에 말하기 기능에 톱니 모양을 누른다. "내 컴퓨터를 켭니다" 라고 등록한다. (문장을 각자 알아서 수정) 3-2. 라즈베리파이에 Web 요청 처리 만들기 라즈베리파이는 WOL 로 켤 컴퓨터와 같은 네트워크상에 존재 해야 한다. 그리고 ngnix 또는 apache 와 같이 WAS 가 설치되어 있고 php 가 연동이 되어 있는 상태여야 한다. (was 및 php 구성은 구글 검색으로 설치) 필자는 nginx 와 php 7.0 이 연동되어 작동 중이므로 해당 환경으로 설명한다. /var/www/html 경로에 wol 이라는 디렉토리를 생성하여 wol.php 코드를 작성 한다. 전체 경로 (/var/www/html/wol/wol.php)
위 코드 중$WOL_KEY 에 있는 값은 적당하게 긴 문자열로 만들어 준다. (WOL Url 에 최소한의 보안을 위함) // PC Type is NAS or PC 주석 아래에 WOL 컴퓨터의 IP 와 MAC 주소 값을 입력해 준다. 필요한 컴퓨터가 많다면 $PC_TYPE 의 문자열과 else if 부분을 복사/붙여넣기 하여 추가 하면 된다. php 가 작성이 완료 되었다면 라즈베리 파이에서 다음 명령으로 시험을 해본다. curl "http://127.0.0.1/wol/wol.php?wolkey=RANDOMKEY&wolpc=NAS" RANDOMKEY 와 NAS 는 각자 세팅에 맞게 변경 한다. 위 테스트로 WOL 이 작동 하면 이제 외부에서 url 호출만으로 WOL 을 사용 할수 있게 된다. ※ IFTTT 와 연동 해야 하므로 공유기를 사용 한다면 라즈베리파이의 WAS 포트를 포트 포워딩 해야 한다. 라즈베리파이의 WAS 포트는 80 이고 포트 포워딩은 외부 포트는 8080 , 내부 포트는 80으로 포트 포워딩을 설정 하였다면 WOL 작동 주소는 다음과 같이 된다. http://공인IP:8080/wol/wol.php?wolkey=RANDOMKEY&wolpc=NAS 3-3. IFTTT 에서 구글 홈 문장을 분석하는 애플릿 만들기 IFTTT 에 접속하여 Explore 를 클릭 + 버튼을 눌러 애플릿 생성으로 들어 간다. + This 를 클릭한다. google 을 검색하여 Google Assistant 를 클릭 (Google Assistant 가 나오지 않거나 say a simple phrase 항목이 나오지 않는 다면 IFTTT 와 구글 계정 연동이 먼저 되어 있야 나오게 된다.) Say a simple phrase 를 클릭 What do you want to say? 항목에 루틴에서 설정 하였던 "my desktop on" 을 입력 What do you want the Assistant to say in response? 항목에는 해당 애플릿 수행 후 구글 홈에서 말 할 TTS 문장을 입력한다. (TTS 재생이 필요 없다면 굳이 하지 않아도 되며 한국어는 지원하지 않는다.) 아래로 내려서 "Create trigger" 버튼을 클릭 + That 을 클릭 webhook 을 검색하여 Webhooks 선택 Make a web request 선택 URL 항목에 라즈베리파이의 WOL URL 을 작성하고 Create Action 버튼을 눌러 애플릿 작성을 완료 한다. 구글 홈에서 "컴퓨터 켜" 라고 명령 하게 되면 다음과 같은 순서로 작동을 한다. 구글 홈 -> IFTTT -> 라즈베리 파이 PHP 호출 -> WOL 패킷 송신. 잘 되지 않는 경우 IFTTT 의 로그에서 구글 홈 명령이 전달이 되었는지, 라즈베리파이의 URL 은 정상적으로 호출 되는지 등을 확인 하면 된다. |