자작홈오토 - IFTTT나 홈킷등의 도움없이 아이폰 프레즌스 디텍션하는 방법
2018.08.09 19:35
얼마전까지 다음과 같은 방법으로 제 자작 홈오토의 몇몇 작업을 자동화했었습니다
1. IFTTT로 구글로케이션과 클라우드 MQTT브로커 (제 경우는 Adafruit.IO)를 연동하여 위치 정보를 자동으로 업데이트
2. 집에는 Adafruit MQTT 클라이언트가 깔려있는 ESP8266를 설치해두고 위치 변경에 따른 태스크를 수행하도록 설정
일단 복잡하고 여러 단계를 거치다보니 안정성도 떨어지고 (일주일에 한두번 오작동은 기본) 외부서비스를 이용하는것도 찝찝하고 여러가지로 맘에 안 들었는데요...
항상 갖고 다니는 폰을 어떻게든 beacon으로 설정하고 집안에서 시그날을 수신만 할 수 있으면 간단할 것 같아서 이것저것 시도해보다가 결국 성공해서 기쁜 마음에 방법 공유드립니다
첫번째로 시도한 방법은 wifi를 이용한건데 결과는 실패. 폰의 ip를 고정시켜놓고 매 5분마다 핑을 쏴서 그 결과로 presence detection하는 아이디어였는데 불행히도 아이폰은 일정 시간이 지나면 핑이 안 먹더군요. 아마도 절전기능탓인듯.
두번째 방법은 NFC. 이걸 해보려고 아두이노용 RFID카드랑 리더기랑 샀는데 뭐 그냥 바로 실패. 제가 아이폰을 너무 우습게 본 모양입니다 ㅋㅋ
세번째 방법은 BLE. 이 방법은 제 파이ZeroW와 아이폰이 BLE를 지원한다하고 마침 파이에 Node-RED도 깔려 있기땜에 별 부담없이 BLE노드를 다운받아서 시도해봤습니다. 결과는 이유를 알수없는 실패. 노드레드는 프로그램 잘 못하는 초보들이 주로 써서 그런지 유저들이 만들어놓은 노드가 제대로 작동안하는 경우가 태반입니다. Documentation도 부실한 경우가 많구요.
마지막으로 성공한 방법은 너무너무 당연히 블루투스! 왜 이걸 진작에 시도하지 않았을까요?
방법은 매우 간단한 편입니다
1. 파이에 일단 MQTT가 깔려있어야 합니다
2. 다음 스크립트를 작성합니다. 아이폰에 블투연결을 시도하고 연결되면 rssi값을 리턴하는 간단한 스크립트입니다
#!/bin/bash
sudo hcitool cc "아이폰 블투 맥어드레스" 2> /dev/null
bt=$(hcitool rssi "아이폰 블투 맥어드레스" 2> /dev/null)
if [ "$bt" == "" ]; then
echo "iPhone disconnected"
mosquitto_pub -t iphone/stat -m off -q 1
else
echo "connected"
mosquitto_pub -t iphone/stat -m on -q 1
fi
3. 얘를 매 1분간격으로 실행합니다. 크론으로 돌려도 되고 저는 Node-RED가 더 편리해서 거기에서 돌립니다.
4. iphone/stat가 on이냐 off냐에 따른 홈오토 태스크 실행 코드를 작성해서 수행합니다
지금 한 3-4일째 돌리고 있는데 오류없이 잘 됩니다.
보시다시피 간단해서 오류가 생길 이유도 별로 없죠
참고한 사이트입니다
https://stackoverflow.com/questions/27401918/detecting-presence-of-particular-bluetooth-device-with-mac-address
감사합니다
1. IFTTT로 구글로케이션과 클라우드 MQTT브로커 (제 경우는 Adafruit.IO)를 연동하여 위치 정보를 자동으로 업데이트
2. 집에는 Adafruit MQTT 클라이언트가 깔려있는 ESP8266를 설치해두고 위치 변경에 따른 태스크를 수행하도록 설정
일단 복잡하고 여러 단계를 거치다보니 안정성도 떨어지고 (일주일에 한두번 오작동은 기본) 외부서비스를 이용하는것도 찝찝하고 여러가지로 맘에 안 들었는데요...
항상 갖고 다니는 폰을 어떻게든 beacon으로 설정하고 집안에서 시그날을 수신만 할 수 있으면 간단할 것 같아서 이것저것 시도해보다가 결국 성공해서 기쁜 마음에 방법 공유드립니다
첫번째로 시도한 방법은 wifi를 이용한건데 결과는 실패. 폰의 ip를 고정시켜놓고 매 5분마다 핑을 쏴서 그 결과로 presence detection하는 아이디어였는데 불행히도 아이폰은 일정 시간이 지나면 핑이 안 먹더군요. 아마도 절전기능탓인듯.
두번째 방법은 NFC. 이걸 해보려고 아두이노용 RFID카드랑 리더기랑 샀는데 뭐 그냥 바로 실패. 제가 아이폰을 너무 우습게 본 모양입니다 ㅋㅋ
세번째 방법은 BLE. 이 방법은 제 파이ZeroW와 아이폰이 BLE를 지원한다하고 마침 파이에 Node-RED도 깔려 있기땜에 별 부담없이 BLE노드를 다운받아서 시도해봤습니다. 결과는 이유를 알수없는 실패. 노드레드는 프로그램 잘 못하는 초보들이 주로 써서 그런지 유저들이 만들어놓은 노드가 제대로 작동안하는 경우가 태반입니다. Documentation도 부실한 경우가 많구요.
마지막으로 성공한 방법은 너무너무 당연히 블루투스! 왜 이걸 진작에 시도하지 않았을까요?
방법은 매우 간단한 편입니다
1. 파이에 일단 MQTT가 깔려있어야 합니다
2. 다음 스크립트를 작성합니다. 아이폰에 블투연결을 시도하고 연결되면 rssi값을 리턴하는 간단한 스크립트입니다
#!/bin/bash
sudo hcitool cc "아이폰 블투 맥어드레스" 2> /dev/null
bt=$(hcitool rssi "아이폰 블투 맥어드레스" 2> /dev/null)
if [ "$bt" == "" ]; then
echo "iPhone disconnected"
mosquitto_pub -t iphone/stat -m off -q 1
else
echo "connected"
mosquitto_pub -t iphone/stat -m on -q 1
fi
3. 얘를 매 1분간격으로 실행합니다. 크론으로 돌려도 되고 저는 Node-RED가 더 편리해서 거기에서 돌립니다.
4. iphone/stat가 on이냐 off냐에 따른 홈오토 태스크 실행 코드를 작성해서 수행합니다
지금 한 3-4일째 돌리고 있는데 오류없이 잘 됩니다.
보시다시피 간단해서 오류가 생길 이유도 별로 없죠
참고한 사이트입니다
https://stackoverflow.com/questions/27401918/detecting-presence-of-particular-bluetooth-device-with-mac-address
감사합니다
코멘트 1
번호 | 제목 | 작성자 | 작성일 | 조회 |
---|---|---|---|---|
302 | [처음 해본 경험] GE oven keypad 가 F0/FB 에러코드를 내면서 뻗는 증상 [1] | 왕초보 | 09.10 | 209 |
301 | [처음 해본 경험] 에어콘 실외기의 Capacitor 교체 [2] | 왕초보 | 07.12 | 326 |
300 | 수퍼소닉님의 간헐적 단식 [1] | 왕초보 | 04.10 | 534 |
299 | 항공사 마일리지 사용하기 [4] | 상현아빠 | 03.30 | 542 |
» | 자작홈오토 - IFTTT나 홈킷등의 도움없이 아이폰 프레즌스 디텍션하는 방법 [1] | 건설노무자 | 08.09 | 676 |
297 | 윈도10 성능 향상팁 (꿀팁) [6] | matsal | 05.01 | 741 |
296 | 애플워치 간단팁 2개 [1] | matsal | 04.16 | 942 |
295 | 업무용 의자 고르기 [4] | TX | 11.06 | 972 |
294 | 뜬금없는 미쿡 캘리포냐에서 운전면허 따기 [3] | 왕초보 | 06.13 | 1282 |
293 | KPUG.KR 이용 팁??? [8] | 채리새우 | 03.10 | 1927 |
292 | 디지털 메모에 대한 연재 - 3 [3] | Freedom^^ | 10.21 | 1987 |
291 | KPUG 강좌, KPUG 자료실 2,000점 이벤트 [3] | KPUG.KR | 03.03 | 2000 |
290 | [연재] 위키에 대한 썰 풀기 [3] | Freedom^^ | 05.09 | 2025 |
289 | 케퍽에 열심히 작성하고 등록버튼을 눌렀는데, 로그인이 풀렸다! [3] | yohan666 | 01.19 | 2026 |
288 | [리스트] のろのろ日本語 (Mongster님 강의중) [4] | 왕초보 | 12.15 | 2072 |
287 | 가영아빠님의 구리스몽키 시리즈 모음 -- 왼쪽메뉴 필요하세요 ? | 왕초보 | 07.17 | 2076 |
286 | 불편함을 해결하는 것이 곧 아이디어입니다. [5] | Freedom^^ | 03.26 | 2082 |
285 | 리눅스 역상으로 쓰자 [8] | 영진 | 12.21 | 2120 |
284 | 때로 법의 도움이 필요 할때의 정보.. [4] | 윤발이 | 05.15 | 2126 |
283 | 케익 드실 때. [8] | 하얀강아지 | 12.29 | 2135 |