2014-10-29 3 views
2

다른 장치 중에서도 Belkin WeMo 스위치와 3M WiFi 온도 조절기가 있습니다. 둘 다 Android 앱과 함께 제공됩니다. 가정에서 앱을 열면 (기기와 동일한 WiFi 서브넷에있는 전화) 앱에 기기가 '로컬'이거나 앱이 기기에 '직접'연결되어 있다고 표시됩니다. 변경 한 내용은 장치에 직접 반영됩니다.Internet-Of-Things 앱이 기기가 로컬인지 여부를 어떻게 감지합니까?

내 집 밖에서 어디에서나 연결하면 장치가 로컬이 아니라는 것을 "아는"방법이 있습니다. 내가 올바르게 이해하면 어딘가에 자신의 서버를 업데이트하고 궁극적으로 집에있는 장치가 업데이트를 얻습니다.

앱은 어떻게합니까? 그 기능을 복제하고 싶습니다.

기본적으로 GPI를 통해 뭔가를하고 웹 페이지를 방문하여 해당 동작을 트리거 할 수있는 라즈베리 파이가 있습니다. 내 홈 네트워크에서 웹 페이지는 http://192.168.10.25/do_something에 있습니다 ... 내 홈 네트워크 외부에서 웹 페이지는 http://my_custom_name.some_free_dynamic_dns.com:8080/do_something에 액세스 할 수 있습니다. LAN상의 192.168.10.25:80으로 WAN에서 8080을 포팅하도록 라우터를 설정했습니다. 이 작동합니다.

2 페이지는 어떻게 피합니까? 192.168.10.25/do_something URL을 효과적으로 보여주는 앱을 작성하고 싶습니다. 내가 집에있을 때 전화가 URL과 동일한 네트워크에 있다는 것을 "자동"감지하고 직접 192.168.10.25/do_something을 열어야합니다 ... 그리고 내가 밖에있을 때 "자동으로"감지하여 http://my_custom_name.some_Free_dynamaic_dns.com:8080/do_something을 실행해야합니다.

여기서 중요한 부분은 가정에서 ISP가 다운되고 호스트 이름이 해석되지 않아도 모든 것이 로컬이기 때문에 중요하지 않아야한다는 것입니다.

어떻게해야합니까?

답변

1

먼저 192.168.10.25 (또는 선택한 로컬 주소)에서 웹 서버에 연결을 시도해보십시오. 합리적인 시간 내에 응답이 없으면 (5 초이면 충분), 외부 웹 서버에 연결하십시오.

보안을 위해 192.168.10.25의 웹 서버가 실제로 웹 서버인지 확인하고자 할 수 있습니다. 챌린지 및 응답과 공개 키 암호화를 사용하여이 작업을 수행 할 수 있습니다. 원한다면 더 자세한 정보를 제공 할 수 있습니다.

휴대 전화의 IP 주소를보고 (존재하지 않는) 로컬 웹 서버를 기다리지 않도록 시도 할 수 있습니다. 192.168.x.y가 아닌 경우 로컬이 아니며 외부 웹 사이트로 직접 이동할 수 있습니다.

앱에 192.168.10.25를 직접 삽입하면 호스트 조회가 필요하지 않습니다.