2014-09-06 6 views
1

원격 환경에서 여러 센서의 데이터를 기록하는 데 사용하는 3G 모뎀에 인터페이스되는 Arduino 기반 장치가 있습니다. 나는 명령을 보내고 장치의 일부 데이터를 지금은 표준 네트워크에 연결된 PC로 다시 전송할 수 있기를 원합니다. 원격 장치가 WIFI 또는 다른 근거리 통신망에 연결된 경우 이는 상대적으로 간단하지만 장치가 3G를 통해 연결됨에 따라 이는 3G 통신 업체 NAT 뒤에 있으므로 장치에 연결하는 것이 어려워집니다. 장치는 원할 때 언제든지 내 호스트 PC에 대한 TCP 연결을 열 수 있습니다. 문제는 내가 원할 때 장치에 알려주는 것입니다. 장치에 메시지를 보내어 PC에 연결을 원한다고 알리는 방법이 필요합니다.임베디드 3G 장치에 통신 시작

나는 UDP와 TCP '구멍 펀치'와 같은 NAT 뒤에 두 장치 사이의 P2P 통신을 시작하는 데 NAT 개발자가 사용하는 NAT 통과 기술을 읽었지만이 방법은 내 arduino 시스템에 비해 너무 복잡합니다. 또 다른 일반적인 아이디어는 장치가 주기적으로 웹 서버를 폴링하여 연결을 시작하기위한 신호를 찾는 것입니다. 그러나 장치가 매 10 초마다 폴링해야 할만큼 트래픽 (및 데이터 사용 비용)이 얼마나 많이 나올지 확신하지는 않습니다. 폴링하는 웹 서버에 설정된 요청의 합리적인 시간 내에 연결을 시작하도록해야합니다.

이와 비슷한 것을 달성하기 위해 일반적으로 사용되는 방법이 있습니까? 모든 일반 아이디어 나 통찰력이 훨씬

감사 감사하겠습니다, 제임스

답변

2

나는이 솔루션은 특정 응용 프로그램 및 요구 사항에 크게 좌우 될 것이다 생각합니다.

이러한 유형의 기능을 구현하는 데는 여러 가지 방법이 있으며 이미 일부 기능을 적용한 것처럼 보입니다. 가장 일반적인 유형은 다음과 같습니다.

  • 디바이스에서 서버를 폴링합니다. 필요한 응답 시간에 따라 문제가 없을 수도 있습니다. 위와 같이 정기적으로 설문 조사를해야하는 경우 데이터 속도보다 전력이 더 중요 할 수 있다고 생각합니다. 특히 배터리를 연결 한 경우 더욱 그렇습니다. 전형적인 3G 데이터 플랜에서는 폴링 자체가 무시할만한 데이터 오버 헤드를 가질 것이라고 생각합니다.
  • 서버가 SMS를 보내면 장치가 서버에 연결되도록 트리거합니다. SMS 변수 전달 시간을 확인하고 SMS 전달이 보장되지 않는다는 것을 알아야하므로 상위 계층 (또는 애플리케이션)에 전달할 수표를 작성해야합니다. .
  • 그것은 주목할 가치가있다

을 알림 메커니즘을 밀어 당신의 3G 연결에 대한 몇 가지 저렴한 비용으로 안드로이드 기반 장치를 사용하고 구글을 활용하여 해당 서버 폴링 일반적으로 그대로 아주 나쁜 눌러 클라이언트를 가지고 직관적으로 낭비 보인다 얻고 서버는 지속적으로 메시지를 확인합니다. 특히 실제 메시지가 비교적 드문 경우. 그러나 대부분의 푸시 솔루션 아래에는 백그라운드에서 끌어 오기 메커니즘이 있지만 일반적으로 네트워크와 모바일 장치 간의 다른 메시지를 다시 보내고 따라서 전력 및 데이터 오버 헤드가 최소화되는 매우 효율적인 메커니즘입니다. 개인적으로, 배터리/전력에 대한 주요 관심사가 없거나 부하 폴링이 서버에 발생할 수있는 경우 폴링 솔루션의 단순 이점이 다른 단점보다 중요한지 살펴 보는 것이 좋습니다.