본문으로 바로가기
반응형

BOSE Soundtouch 10 이라는 괜찮은 블루투스 스피커(라고 쓰고 장난감이라 읽는다)를 구입했다.

휴대용이 아니라는 유일한 단점(사실 단점도 아닌데..) 빼고, 음질도 좋고 wifi, line-in, bluetooth 다 잘 되는게 장점이다.

심지어 얼마전 펌웨어 업데이트 이후에는 AirPlay도 지원된다! 겁나좋군?

 

블랙프라이데이 시즌에 싼 가격에 나와서 혹하기도 했지만, 그것보다도 API를 제공해서 그걸 가지고 놀 수 있다는 점이 아주 매력적이었다.

API를 가지고 뭘 해볼 수 있을지 머리를 굴려보다가 이왕 좋은 스피커를 샀으니 알람으로도 활용하면 좋겠다는 생각이 들었다.

음악파일 URL을 스피커에서 로드해서 틀어주는 API + 개인서버의 crontab 을 활용해보기로 했다.

 

1. 알람으로 사용할 음원 정하기

  - 1안 : 그냥 좋아하는 노래 하나를 웹 계정에 올려서 사용한다.

  - 2안 : 좋아하는 음악 여러개를 한 폴더에 몰아놓고 랜덤하게 재생한다 (서버 처리 필요)

  - 3안 : FM라디오 스트리밍 URL을 찾아서 재생한다.

 

2. 서버에서 정해진 시간에 스피커 URL로 API 명령을 보내서 음원을 재생한다.

  - 1안 : 내 방에 있는 NAS의 예약 작업 기능에 쉘스크립트를 등록해서 재생

  - 2안 : NAS를 굳이 계속 켜둘 필요 없도록 AWS 등 외부 서버에서 명령 날려서 재생

 

결과적으로 1,2번 전부 만만치 않았다.

[1번]

1안/2안은 쉽게 구현 가능하다. 사실 구현이랄것도 거의 없긴 하다.

3안은 만만치 않았다. 요즘은 url이 공개되어 있는 라디오 채널이 거의 없어서, 내가 원하는 MBC FM4U라든가 YTN Radio는 연결할 수가 없다. 게다가 스피커에서 지원하는 url은 http나 https 프로토콜로 시작해야 하고, 재생 가능한 파일 타입도 한정되어 있다. 머리를 쓴 끝에 성공하기는 했으나 복잡하니까 간단하게 요약해둔다.

1) 라디오 온에어 사이트를 샅샅이 뒤져서 rtmp 프로토콜의 onair stream url을 찾아낸다. 동적으로 변화하는 경우는 원하는 시점에 자동으로 스트림 url을 추출해주는 파싱 스크립트가 따로 필요하다.

2) 정해진 시각에 정해진 기간동안 스트림을 녹음해서 (rtmpdump 사용) mp3로 변환(ffmpeg사용) 한다.

3) 저장된 파일을 재생하면 됨. 실시간이 아니라는 단점이 있지만.... 그런대로 만족스럽다.

 

[2번]

사실 NAS를 굳이 계속 켜두고 싶지 않아서 aws에서 crontab으로 일정 시간에 명령을 던지려고 했는데........

안된다. 완전히 똑같은 코드로 집 네트워크에서 명령을 보내면 잘 동작하는데 외부에서 보내면 아무리 해도 안된다.

잘못 구현했는 줄 알고 포트포워딩도 다시 확인해보고 했었는데 결과는 허탕!

 

그제서야 인터넷을 뒤지다가 BOSE Developer Forum에서 아래의 링크를 찾았다.

 

Bose Developer Portal | Remote acces to API

Hello, Despite what seems to be adequate port forwarding, all my GET requests do not return an answer when fired from outside the LAN. Is this by design? if yes, does a workaround exist? Why blocking so many interesting use cases? Thanks

developer.bose.com

한줄요약 : 보안 문제로 일부러 API Remote Access를 차단함. 외부 접속 API를 구현할지는 생각중임

 

뭐 꼭 해야되는것도 아니고 귀찮아서 여기서 일단은 포기하지만....(일단 NAS 스케쥴러를 사용하는 것으로 타협..)

해결할 방법을 찾아내고 말겠다.

반응형