아마존 대시 버튼 해킹 사용기(1) - WOL 스위치

Updated:

이전 포스트 아마존 대시 버튼 해킹해서 라즈베리파이에서 사용하기글에서 아마존 대시 버튼을 해킹(?)해서 IOT 기기로 사용하는 방법을 살펴보았습니다. 대시 버튼의 사용처를 정하게 되면 업데이트하겠다고 하였는데..이제서야 업데이트 글을 올립니다.

1. 아마존 대시 버튼, 어디에 쓸까요?

아마존 대시 버튼을 어디에 쓸까 생각하다가 홈서버인 N54L을 신발장 옆 창고에 넣어버리고, N54L 스위치 용도로 사용해보기로 했습니다.

N54L은 한때 주력으로 사용했던 우리집 홈서버입니다. 라즈베리파이가 들어오면서 사용빈도가 확실히 줄 긴 했지만 그래도 현역이긴 합니다. 두 기기간의 용도를 확실하게 지정해주면서 각자 본인들의 위치를 자리잡았습니다. 라즈베리파이는 SSD를 달고 TV와 연결해서 미디어 플레이어/토렌트 등으로 24시간 운용하고, N54L은 HDD가 달려있어서 대용량 파일 백업 용도로만 사용하고 있습니다. N54L의 정체가 더 궁금하신 분은 라즈베리파이3 B+와 HP 마이크로 서버 N54L의 비교사용기를 참고하세요.

N54L은 어차피 디스플레이 연결도 없고, 더 이상 방에 있을 이유가 없어서 통신단자함을 품고 있는 펜트리로 보내버리기로 합니다. 그리고 대시 버튼을 ON/OFF 스위치로 사용하기로 합니다.

2. 대시 버튼 구매을 WOL 스위치로~

먼저 N54L을 통신담자함이 있는 펜트리로 옮겨줍니다. N54L이 앞으로 지낼 새 집입니다. 통신단자함에서 랜선과 파워선을 빼내서 N54L에 연결해주었습니다.

대시 버튼을 N54L의 ON/OFF 스위치로 사용하기 위해서는 대시 버튼의 클릭을 모니터링 해야하는 포인트가 두 곳입니다. 한 곳은 ON 동작, 다른 한곳은 OFF 동작입니다.

그래서, 위와같이 스크립트를 2개로 만들어서 각기 ON 동작과 OFF 동작을 수행하게 구상하였습니다.

3. 스위치 설정 - ON 동작

N54L의 ON 동작 수행은 라즈베리파이가 합니다. 라즈베리파이는 24시간 구동하기 때문에 python scapy를 사용해서 패킷 모니터링(24시간)으로 대시 버튼 클릭을 잡아냅니다. python scapy 설정은 이전 포스트 아마존 대시 버튼 해킹해서 라즈베리파이에서 사용하기에서 확인 가능합니다.

scapy가 대시 버튼 클릭을 잡아내면, wakeonlan 명령어로 N54L에 ON 커맨드를 보냅니다. Wake-on-LAN(WOL)은 네트워크 메시지로 컴퓨터의 전원을 켜는 이더넷 컴퓨터 네트워킹 인터페이스입니다. 리눅스 wakeonlan 명령어는 Wake-on-LAN(WOL)를 사용하기 쉽게 만들어 둔 툴입니다. 아래와같이 간단히 설치 가능합니다.

#!/bin/bash
pi@raspberrypi:~ $ sudo apt-get install wakeonlan

ON 동작 스크립트는 GitHub repodash_button_redbull_wakeup.py 파일을 참고하세요. 스크립트에서 대시 버튼 MAC주소와 N54L(홈서버) MAC주소는 꼭 본인의 기기의 MAC주소로 변경해주어야 합니다.

그리고, python 스크립트는 scapy 동작 때문에 sudo 권한으로 실행시켜야 함을 잊지마세요. 이제 스크립트를 sudo 권한으로 실행시키고, 대시 버튼을 눌러봅니다. 대시 버튼의 클릭을 감지하면, 라즈베리파이는 wakeonlan 명령어로 홈서버를 깨우게 됩니다.

4. 스위치 설정 - OFF 동작

이번에는 OFF 동작입니다. OFF 동작은 N54L(홈서버) 쪽에서 직접하게 합니다.

OFF 동작 스크립트는 GitHub repodash_button_redbull_shutdown.py 파일을 참고하세요. 이번에는 대시 버튼 MAC 주소만 본인 기기 것으로 변경하면 됩니다. 이제 스크립트를 sudo 권한으로 실행시키고, 대시 버튼을 눌러봅니다. 대시 버튼의 클릭을 감지하면, 홈서버는 스스로 shutdown 명령어로 파워오프를 실행합니다. 물론, 이때에도 라즈베리파이는 홈서버에게 ON 명령어를 보내지만 이미 홈서버가 파워온 상태라서 별 상관은 없습니다.

python 스크립트를 부팅 시에 자동으로 실행시키려면, 라즈베리파이와 N54L(홈서버)의 crontab에 각각 스크립트를 등록시켜 줍니다. 스크립트가 자동으로 실행되지 않는다면 대시 버튼 동작을 위해서 매번 스크립트를 실행시켜 주어야 하는데 그럼 더 귀찮은 일만 생기는 꼴이 되겠지요. crontab 사용방법은 설치가이드(13) cron 설정하기(예약 작업)를 참고합니다. crontab 등록은 부팅 시에 root 권한으로 실행되도록 설정합니다.

모든 설정이 완료되었습니다. 이제는 방에서 대시 버튼을 누르면 N54L이 켜지고, N54L이 부팅된 상태에서 대시 버튼을 누르면 꺼지게 됩니다. 원격 서버 ON/OFF 스위치가 생긴 셈입니다. 정확히 말하면 ssh를 통해서 wakeonlan 명령어를 수행할 수 있고, wakeonlan 관련한 휴대폰 어플리케이션도 많이 나와있어서 홈서버를 원격으로 ON/OFF하기 위해서 꼭 대시 버튼이 필요한 것은 아닙니다. 그래서 물리 버튼 스위치가 하나 있다는 것은 또 다른 즐거움이겠지요. 또 다른 대시 버튼 사용처를 찾으면 소개 글을 업데이트하도록 하겠습니다.


더 많은 라즈베리파이 이야기 Pi Guide 보러가기


Leave a Comment