나는 거의 매일 아침 폰을 열어 날씨를 확인하고 필요한 경우 음성으로 알람을 설정하고 (음성으로 설정해야만 일회용 알람이 만들어진다) 아무튼 구글 나우를 굉장히 좋아한다. 하지만 여기에도 단점이 있는데 음악 재생을 원할 경우 “Google Play Music”이라는 앱 이외에는 동작을 안 한다는 것이다. 난 라즈베리 파이에 MPD를 설치해서 쓰고 있는데 안드로이드용 클라이언트인 MPDroid를 구글 나우에서 어떻게 건드릴 방법이 없었다. 그래서 다들 유용하게 쓴다는 Tasker를 받아봤다.
Play Store에 들어가면 4444원 하는 유료 버전만 있고 체험판이 없는데 공식 홈페이지에 가면 체험판 APK를 받을 수 있다.
일단 나는 밤에 침대에 누웠는데 다시 폰을 열어서 MPDroid를 열고 음악을 끄는 게 귀찮았기에 이것부터 해결하기로 했다.
사실 MPDroid도 Tasker와 연동을 할 수 있는데 난 이걸 몰라서 약간 삽질을 했다. 폰을 좌우로 흔드는 이벤트를 트리거로 해서 Task를 만들었는데 시스템 셸 명령을 실행하게 했고 명령은 다음과 같다.
echo 'password <password>
pause
' | busybox nc <hostname> 6600
아주 변태스럽게 MPD 프로토콜 명세를 읽고 그걸 netcat을 이용해 전달할 뿐이다.
나는 잠 자기 전에 항상 Sleep이라는 플레이리스트를 틀어두고 밤이니까 볼륨을 줄이고 잔다. 그래서 앞의 코드를 응용해 다음과 같이 만들었다.
echo 'password <password>
clear
load Sleep
random 0
consume 1
setvol 70
play
' | busybox nc <hostname> 6600
아까 MPDroid에서도 Tasker를 지원한다고 했는데 기능이 너무 적어서 이런 복잡한 건 못 한다. 그래서 그냥 이렇게 했다. 하지만 이래서는 구글 나우를 대체하지 못 한다. Commandr for Google Now라는 앱을 받아서 “I’m going to sleep”이라는 음성을 받으면 저게 실행되게 했다.
조금만 삽질을 해 보면 음성으로 MPD의 재생을 멈추고 시작하고 하는 것도 쉽게 가능하다.
하는 김에 내가 집에 오면 (폰이 집의 Wi-Fi에 연결 되면) 음악을 틀어주는 것도 해 봤다.
echo 'password <password>
clear
load Streaming
random 1
play
' | busybox nc <hostname> 6600
밤이 되면 내 방 불도 꺼주고 하고 싶은데 이건 스위치 앞에 서보모터를 달거나 릴레이스위치를 달아야 하는 거라 일단 보류해 두고 두 대나 있는 노트북 화면이나 끄게 해봐야겠다. 우분투는 명령어로 화면보호기를 들어갈 수 있으니 어떻게든 될 것 같고 OSX는 아직 모르겠다.
아침에 “Good morning”하고 말을 걸면 오늘의 날씨 등을 알려주는 것도 만들어 봤는데 이건 Tasker 내장의 HTTP GET을 이용해서 야후 날씨를 얻어오고 이걸 다시 셸 스크립트 마법을 이용해 파싱해서 최고/최저 기온, 날씨 등을 얻어 온 뒤 다시 Tasker에서 Google TTS를 이용해 요일과 함께 읽어주게 했다.
이 정도면 충분히 Jarvis 느낌이 나는 것 같기도 하고.
날씨는 http://weather.yahooapis.com/forecastrss?w=< 지역 코드>&u=c 에서 받아 오면 되고
echo '%HTTPD' |
grep yweather:forecast |
head -1
이렇게 오늘에 관한 정보를 얻어 와서 이걸 다시 sed를 이용해 하나하나 분리해서 변수에 저장하면 된다.
echo '%today' |
sed -n 's/.*text="([^"])".*/1/p'
이런 식으로 사용하면 된다.