[강좌] 아마존 대쉬버튼(DashButton)을 제어용(?) 버튼으로 이용하기 DIY [1]

모바일 페이지

아마존 대쉬버튼이라고, 아시는 분은 아시고 모르시는 분은 모르시는 놈이 있습니다.

 

간단히 설명을 드리면, 일단 이렇게 생겼습니다. 

각 생활용품 별로 버튼이 하나씩 매칭이 됩니다. 하나에 5불 정도 하는데, 이 버튼을 눌러서 해당 상품을 구매하면

5불을 깎아주니까 결국 공짜겠네요. 프리미엄 회원만 구매가 가능합니다.

통신은 wifi를 이용합니다. 즉 집 안에 무선공유기가 있어야 사용 가능한 구조인데, 뭐 요즘이야...

 

저는 한달간 무료 맛보기 기간에 다른거 살때 2개를 구매한거라, 쌩돈 10불 나갔네요.

배대지로 받을 수 있는 조금 가벼운 생활용품이라면 다른 물건 구매할때, 이걸로 눌러서 5불 받아도 되는데..

살땐 그 생각까지 못햇네요. 배데지 비용이 5불 더 될려나요?

 

 

어쨋든 이 놈을 알게 된건, Tasker(안드로이드 자동화 앱)를 이용해 자동화에 이용 가능한 전용버튼을 이것저것 알아보다가 입니다.

Flic 이라는 BLE(저전력 블루투스)를 이용하는 버튼이 잘 나와있는데, 가격이 좀 비싸네요. (4개에 100불 정도. 100불이면 불법패드)

 

그러다 이게 검색 결과에 걸려서 알아보니, 누군가 이 버튼을 DIY(소프트웨어적으로)해서 전용버튼으로 쓰더군요.

 

 

How I Hacked Amazon’s $5 WiFi Button to track Baby Data 

위 글이 아마존 대쉬버튼을 이용한 최초의 원저작자 작품이라고 알고 있습니다.

 

 

간단히 설명드리면, 이 대쉬버튼을 클릭하면 미리 설정해둔 wifi AP 정보(처음 설정시에 amazon app으로 함)를 가지고

ARP prop. 이라는 네트워크 진입 전 체크과정(?)을 실행합니다. 이게 버튼을 클릭할때 마다 이뤄집니다.

 

왜냐면, 이 버튼은 원래 목적이 빈번한 혹은 즉각적인 반응을 요하는 제어가 아니라,

한달에 한두번 생활용품이 떨어져갈 무렵에 한두번 눌러서 사용하는 목적이기에,

가장 중요한게 배터리를 오래~ 사용하는 것이겠죠. 그래서 버튼을 누르면 그제서 기기가 켜지고, 켜진후에

ARP prop이라는 데이터 패킷(?)을 보내고, 상품페이지 url을 전송하고는 조금 있으면 바로 버튼이 꺼집니다.

 

 

어쨋든, 그렇기에 집안의 wifi 네트워크 상에, 이 버튼 기기의 MAC 주소를 포함한 ARP prop이라는 데이터 덩어리가

포착되면, 버튼이 눌려진것으로 판단하는 식입니다.

 

 

일단 무식한(brute force적인) 방법으로는 집에 있는 어떤 서버 위에서 python 스크립트를 계속 돌려놓고

이 프로그램에서 ARP prop을 캐치하는 것입니다. 원 저작자가 사용한 방법이기도 합니다.

 

여기서 python이 계속 돌아가는 서버..라고 하면, 요즘에 많이 쓰시는 NAS 등... 

 

저는... 일단은 예~~~전에 사용했던 ASUS EEEPC-901이라는 "넷북"이라는 덩어리를 이용했는데요,

여기에 경험삼아 OMV라는 시스템을 깔아서 그냥 켜놓고 있습니다. USB에 옛날 외장하드 물려놓았는데,

NAS라고 하기도 뭐하고, 실제 잘 쓰지도 않습니다.

어쨋거나 여기에 python 스크립트를 제 경우에 맞게 살짝 변형해서, 부팅마다 돌아가게 했습니다.

 

 

좀더 깔끔한 방법은, 공유기에 openwrt(저도 말만 들었지, 이거 지원하는 거 없고 잘 모릅니다) 등을 설치해서

(결국 이게 리눅스 서버같은 역할을 하니) 여기서 해당 작업을 하는겁니다.

아마 amazon 상품페이지 주소를 막거나 캐치하는식 같은데...  이 방법은 위 원저작물 댓글에 찾아보시면 있습니다.

 

 

 

이렇게 버튼이 눌려진 것을, wifi 네트워크 상의 서버나 공유기 등에서 캐치한 이후에는,

IFTTT라는 사이트 등을 이용해서, 원하는 액션과 연결지을수 있겠네요.

 

이용분야를 보자면,

 

- 노약자의 응급신호용 버튼

- 차고 등의 열고 닫는 신호용

... 등등, 당장엔 잘 생각이 안나네요 ㅎㅎ

 

 

저는 이걸 자다깼을때 시간 알림용으로 응용해봤습니다.

 

눈도 나쁜데다가, 나이가 들어 노안이 오니까, 자다가 깨서 시간이 궁금한 경우에 참 곤란하더군요.

큼지막한 디지털 시계라도 제대로 볼려면 안경을 껴야하고,

폰으로 볼려면 눈이 너무 부셔서 정말...

 

이 버튼을 머리 맡에 두고, 자다깨서 시간이 궁금할때 누릅니다(아직 자다가는 안눌러봤습니다. 막 테스트만 끝낸 상태라)

그러면 python 스크립트에서 AutoRemote라는 태스커 플러그인의 저만의 주소로 url을 쏩니다.(구글 서버죠)

그러면 제 폰에서 Tasker가 이걸 이벤트로 잡아서, TTS로 시간을 읽어줍니다.

 

약 10초 정도의 딜레이가 있습니다. 구글서버로 보내고 받고 하니까...

사실 같은 lan 하니까, 방법을 찾아보면 바로 다이렉트로 쏴주는 법도 있을꺼라 봅니다(만,,,)

 

 

사용한 소스는 http://ift.tt/26E7dYO 여기껄 참조햇습니다.

 

이 소스는 IFTTT 사이트를 이용해서 그리고 url을 보내서, 구글Docs 등에 기록을 하거나 등등..을 합니다.

 

 

 

댁내에 NAS나 openwrt가 가능한 공유기를 가진 분 + 파이썬을 살짝 이해해서 수정할 수 있는 분 + 스마트폰/PC 등의

자동화 앱/프로그램을 쓸 수 있는 분.... 이라는 제약이 좀 큰 방법입니다. 

 

그냥 이런것 아시는 분들은, 혹 적용해볼만한 예가 있다면 한두개 구매해서 재미삼아 해볼수 있겠네요.

 

 

http://ift.tt/1hwL61q

아마존 대쉬버튼을 좀더 과격하게 이용하는...

 

 

잠깐 사용모습을 찍어봤습니다.

 

 



April 30, 2016 at 11:17PM